I'm currently working on embedded arm linux with smdk2416(s3c2416)
The kernel is working on the 64MRAM. Recently, I need to increase the RAM from 64M to 128MB with 64MB on bank0 and 64MB on bank1.
bank0's physical address is at 0x30000000 bank1's physical address is at 0x38000000
I have successfully mapped bank0 from 0x30000000 to 0xc0000000, and bank1 from 0x38000000 to 0xc4000000 in U-Boot.
I have tried a memory test on these addresses (both banks' physical and virtual addr) under U-Boot.
When I'm booting the linux kernel with bootarg memory tag
mem=128M, and run a simple program which use memory beyond 64MB. Then the system crashed with the "kernel NULL pointer dereference" message.
I found there is a
CONFIG_DISCONTIGMEM defined in
src/include/asm-arm/memory.h, but when I look into "Kernel Features/Memory model" in
make menuconfig, there is only "Flat Memory" option.
How and where should I modify the config/code to make the Linux kernel works on the full 128MB?