ARM Linux が phys_to_virt および virt_to_phys のランタイム パッチをサポートしていることを理解しています。 http://lists.infradead.org/pipermail/linux-arm-kernel/2011-January/037089.html
これにより、再コンパイルを必要とせずに、カーネル イメージが異なる物理ベース アドレスをサポートできるようになります。
0x8000_0000 から 0xFFFF_FFFF までの物理メモリを備えた 2GB ボードがあります。ボードを使用すると、次の結果が表示されます。
カーネル ロードの物理アドレス: 0xC0008000 - OK (カーネルが起動)
カーネル ロードの物理アドレス: 0xC8008000 - OK (カーネルが起動)
カーネル ロードの物理アドレス: 0xD0008000 - NOT OK (カーネルの起動でハングアップ)
カーネル ロードの物理アドレス: 0xE0008000 - NOT OK (カーネルの起動でハングアップ)
私のLinuxカーネルコマンドラインbootargs mem = 512M.
カーネルの有効なロードアドレスの制限を理解したいです。これは、 www.arm.linux.org.uk/developer/memory.txtで文書化されています。
フォーマットがめちゃくちゃになるので、ここにコピーして貼り付けることができません。
ドキュメントでは、制限に従わないとカーネルが起動しないと述べていますが、これは私が直面しているものですが、カーネルの開始アドレスの制限を理解できません。
私はhighmemを使用していません。
制限 Linux 開始アドレス + lowmem_size は <= ff000000 - VMALLOC_SIZE である必要があります。