Atualmente estou trabalhando em braço Linux embutido com smdk2416 (s3c2416)
O kernel está trabalhando no 64MRAM. Recentemente, eu preciso aumentar a memória RAM de 64M para 128MB com 64MB no bank0 e 64MB no bank1.
bank0's physical address is at 0x30000000
bank1's physical address is at 0x38000000
Eu mapeei com sucesso bank0 de 0x30000000 para 0xc0000000 e bank1 de 0x38000000 para 0xc4000000 no U-Boot.
Eu tentei um teste de memória nesses endereços (o addr físico e virtual de ambos os bancos sob o U-Boot.
Quando eu estou inicializando o kernel do linux com a tag de memória bootarg mem=128M
, e executo um programa simples que usa memória além de 64MB. Em seguida, o sistema travou com a mensagem "dereference do ponteiro NULL do kernel".
Descobri que existe um CONFIG_DISCONTIGMEM
definido em src/include/asm-arm/memory.h
, mas quando olho para o "Modelo de recursos / memória do kernel" em make menuconfig
, existe apenas a opção "Memória simples".
Como e onde devo modificar a configuração / código para fazer o kernel do Linux funcionar em 128 MB completos?
Tags ram arm linux-kernel