对ARM linux phys_to_virt / virt_to_phys运行时修补的限制

时间:2012-11-03 15:25:35

标签: linux embedded kernel arm

我理解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。

0 个答案:

没有答案