ubootがどのメモリRAMアドレス範囲を使用しているのか、どうすればわかりますか?

ubootがどのメモリRAMアドレス範囲を使用しているのか、どうすればわかりますか?

私はubootにいて、ubootが使用しているRAMアドレス範囲を知る方法を知りたいです。

ubootを実行するにはメモリが必要なため、一部のRAMを使用できます。これらのRAMアドレスを変更しないようにしたいと思います。

ubootがロードされたメモリ領域をどのように知ることができますか?

答え1

DULG デバッグ UBootページには次のようなものがあります(「再配置」と呼ぶのはフラッシュからRAMに自分自身をコピーすることです)。

U-Bootを再配置した後にデバッグするには、U-Bootが再配置されたアドレスを知る必要があります。 PRAMなどの特殊機能を使用しない場合、このアドレスは通常CONFIG_SYS_MONITOR_LENです。この例では、RAMが16MBでCONFIG_SYS_MONITOR_LEN = 192KBの場合、アドレスは0x1000000 - 0x30000 = 0xFD0000になります。

テキストをよく読むと、プロセッサやマザーボードによって異なることがわかりますので、U-Bootソースコードを確認する必要があるかもしれません。

~についてエキスパートプラグ:

RAM側では、u-Bootは最初の8MBを予約します。残りは無料です。一部の開発者はフラッシュメモリをプログラムするためにカーネルとファイルシステムを0×800000にロードします。もう1つの共通点は100MBの境界(またはオフセット0×640000)です。

U-Bootコマンドのバージョンに応じて、空きRAMのどこかに文字列を置き、残りのRAMでその文字列を見つけて、メモリ内のU-Bootのおおよその位置を表示できます。

答え2

使用しているubootバージョンを起動すると、「仮想カーネルメモリレイアウト」が自動的に表示されます。

Memory: 859068k/859068k available, 25668k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xf9e00000 - 0xffe00000   (  96 MB)
    vmalloc : 0xe0800000 - 0xf4000000   ( 312 MB)
    lowmem  : 0x80000000 - 0xe0000000   (1536 MB)
    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
    modules : 0x7f000000 - 0x7fe00000   (  14 MB)
      .init : 0x80008000 - 0x8004d000   ( 276 kB)
      .text : 0x8004d000 - 0x808ad000   (8576 kB)
      .data : 0x808ce000 - 0x80937a40   ( 423 kB)

実行したいさまざまなユーティリティプロセス(メモリに大容量ファイルをロードするなど)にlowmem領域を使用することは安全だと思います。理想的には、この種の作業に高いメモリを使用したいと思いますが、そのオプションはありません(私の出力に見られるように)。

関連情報