Linuxカーネルのメモリ領域の制限

Linuxカーネルのメモリ領域の制限

私はP1022RDK(P1022 Core)プラットフォームでltib Linuxを実行しています。 512MB = 0x20000000のメモリがあります。私のLinuxカーネルはマザーボードメモリの2番目の半分(例えば256MBから512MB)を使い、最初の半分は別の目的で予約したいと思います。

これを行うには、ltibを使用してLinuxカーネルを構築し、次のカーネル構成を設定しました。私が正しい方法でこれをやっていることを提案してください。

CONFIG_LOWMEM_SIZE = 0x10000000 # 256 MB 
CONFIG_PHYSICAL_START = 0x10000000 # Starting from 256MB (second half of memory)

Ubootは次のようにカーネルをロードします。

setenv loadaddr 0x11000000 # Kernel base = 0x10000000 + 0x01000000 (offset) 
setenv fdtaddr 0x10c00000 # Kernel base = 0x10000000 + 0x00c00000 (offset) 
bootm $loadaddr - $fdtaddr My kernel Load address is 0x10000000 & kernel entry point is 0x10000000

上記の設定/ステップを使用すると、私のカーネルはUbootの次の場所に停止しました。

Booting kernel from Legacy Image at 11000000 ...

Image Name: Linux-2.6.32.13 
Image Type: PowerPC Linux Kernel Image (gzip compressed) 
Data Size: 3352851 Bytes = 3.2 MB 
Load Address: 10000000 
Entry Point: 10000000 
Verifying Checksum ... OK

Flattened Device Tree blob at 10c00000

Booting using the fdt blob at 0x10c00000 
Uncompressing Kernel Image ... OK

それしなければならないここからFDTを解凍して続行してください。

どんなアイデアがありますか?

ベストアンサー1

David Schwartzの回答に詳細を追加するには、カーネルブートパラメータを指定して、カーネルが使用する番号と開始アドレスを設定して目的の操作を実行できます。

たとえば、カーネルブートパラメータに次のコマンドを追加します。

mem=256M@0x80000000

0x80000000で始まり、256Mを使用する必要があることをカーネルに指示します。これがまさにあなたに必要なものです。

CONFIG設定を元の値に復元し、カーネルがデフォルト設定(mem =設定なし)で正しく起動されていることを確認する必要があります。

まず、次のように指定してmem =を試すことができます。

mem=256M

これにより、ゼロから始めてメモリ領域を減らし、上位256Mを未使用のままにすることができます。これが機能することがわかったら、上記のオフセットで256Mを使用してください。

また、最終カーネルメモリ領域と競合しないように、uBootを介して初期圧縮イメージがRAMからロードされる場所に注意してください。

おすすめ記事