- 使用内核源代码中的定义
PHYS_OFFSET:系统内存的物理起始地址,板级相关,在include/asm-arm/arch-xxx/memory.h中
PAGE_OFFSET:系统内存的虚拟起始地址,体系结构相关,为0xC0000000,在include/asm-arm/memory.h中
MEM_SIZE:系统内存大小,如果板级(include/asm-arm/arch-xxx/xxx.h)没有指定,则使用体系结构的缺省值16M(arch/arm/kernel/setup.c)
在没有内存命令从内核命令行(cmdline)传入的情况下 ,setup_arch()函数 (arch/arm/kernel/setup.c文件中)会使用PHYS_OFFSET和MEM_SIZE指定为系统内存并且映射到PAGE_OFFSET。 - 通过fixup函数设置
通过fixup_xxx()函数(arch/arm/mach-xxx/arch.c)设置内存的起始地址和大小,映射到PAGE_OFFSET,此项设置会覆盖(1)的设置 - 通过内核命令行传入
如果内核命令行中有系统内存相关的命令(mem=XXXM[@YYY])则会覆盖掉(1),(2)中所介绍的映射而将XXX作为内存大小,YYY作为内存物理起始地址(如果有)映射到PAGE_OFFSET