我目前正在使用 smdk2416(s3c2416) 开发嵌入式arm linux
内核工作在 64MRAM 上。最近,我需要将RAM从64M增加到128MB,其中bank0上有64MB,bank1上有64MB。
bank0's physical address is at 0x30000000
bank1's physical address is at 0x38000000
我已经在U-Boot中成功将bank0从0x30000000映射到0xc0000000,将bank1从0x38000000映射到0xc4000000。
我在 U-Boot 下尝试过对这些地址(银行的物理地址和虚拟地址)进行内存测试。
当我使用 bootarg 内存标签启动 Linux 内核mem=128M
,并运行一个使用超过 64MB 内存的简单程序时。然后系统崩溃并显示“内核空指针取消引用”消息。
我发现CONFIG_DISCONTIGMEM
在 中定义了一个src/include/asm-arm/memory.h
,但是当我在 中查看“内核功能/内存模型”时make menuconfig
,只有“平坦内存”选项。
我应该如何以及在哪里修改配置/代码以使 Linux 内核在完整的 128MB 上运行?