現在、組み込みarm Linuxを開発するためにsmdk2416(s3c2416)を使用しています。
カーネルは64MRAMで動作します。最近では、RAMを64Mから128MBに増やす必要がありました。つまり、バンク0に64MB、バンク1に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以上のメモリを使用する単純なプログラムを実行するとき。その後、「カーネルNULLポインタの逆参照」メッセージが表示され、システムがクラッシュします。
CONFIG_DISCONTIGMEM
に定義されたものがあることがわかりましたが、 のsrc/include/asm-arm/memory.h
「カーネル機能/メモリモデル」を見ると、make menuconfig
「フラットメモリ」オプションしかありません。
Linux カーネルが 128 MB 全体で実行されるように、構成/コードをどのように、どこで変更する必要がありますか?