我理解ARM linux支持phys_to_virt和virt_to_phys的运行时修补。 http://lists.infradead.org/pipermail/linux-arm-kernel/2011-January/037089.html
这使内核映像能够支持不同的物理基址,而无需重新编译。
我有一块2GB的板,物理内存从0x8000_0000到0xFFFF_FFFF。 使用电路板时,我看到以下结果:
内核加载物理地址:0xC0008000 - 正常(内核启动)
内核加载物理地址:0xC8008000 - 正常(内核启动)
内核加载物理地址:0xD0008000 - 不行(挂起启动内核)
内核加载物理地址:0xE0008000 - 不行(挂起启动内核)
我的linux内核cmd行bootargs mem = 512M。
我想了解内核有效加载地址的限制。 这记录在:www.arm.linux.org.uk/developer/memory.txt
我无法在此处复制粘贴,因为格式化了。
文档提到不遵循限制将导致内核无法启动,这正是我所面临的但我无法理解对内核起始地址的限制。
我不使用highmem。
限制Linux起始地址+ lowmem_size应该是< = ff000000 - VMALLOC_SIZE。