我了解 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 - OK(内核启动)
内核加载物理地址:0xC8008000 - OK(内核启动)
内核加载物理地址:0xD0008000 - 不正常(挂起启动内核)
内核加载物理地址:0xE0008000 - 不正常(挂起启动内核)
我的 linux 内核 cmd 行 bootargs mem=512M。
我想了解内核有效加载地址的限制。这记录在: www.arm.linux.org.uk/developer/memory.txt
由于格式混乱,我无法在此处复制粘贴。
文档中提到不遵循限制将导致内核无法启动,这是我所面临的,但我无法理解对内核起始地址的限制。
我不使用highmem。
是否限制 Linux 起始地址 + lowmem_size 应该 <= ff000000 - VMALLOC_SIZE。