私のSMDK2416(s3c2416用)カーネルは64MRAMで動作しますが、128Mではクラッシュします。

私のSMDK2416(s3c2416用)カーネルは64MRAMで動作しますが、128Mではクラッシュします。

現在、組み込み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=128M64MB以上のメモリを使用する単純なプログラムを実行するとき。その後、「カーネルNULLポインタの逆参照」メッセージが表示され、システムがクラッシュします。

CONFIG_DISCONTIGMEMに定義されたものがあることがわかりましたが、 のsrc/include/asm-arm/memory.h「カーネル機能/メモリモデル」を見ると、make menuconfig「フラットメモリ」オプションしかありません。

Linux カーネルが 128 MB 全体で実行されるように、構成/コードをどのように、どこで変更する必要がありますか?

関連情報