web-dev-qa-db-ja.com

どのメモリRAM=アドレス範囲がubootによって使用されているかを知るにはどうすればよいですか?

私はubootを使用していて、RAMアドレス範囲がubootによって使用されていることをどのようにして知ることができますか?.

ubootを実行するにはメモリが必要なので、RAMの一部を使用している可能性があります。これらのRAM=アドレスを変更することは避けたいです。

Ubootがロードされているメモリ領域を知るにはどうすればよいですか?

12
Ankur Agarwal

DULG DebuggingUBoot ページにはこれが言えます(ここで言う「再配置」とは、フラッシュからRAMに自身をコピーすることです)。

再配置後にU-Bootをデバッグするには、U-Bootの再配置先のアドレスを知る必要があります。 PRAMなどのエキゾチックな機能が使用されていない場合、このアドレスは通常-CONFIG_SYS_MONITOR_LENです。 16MB RAMおよびCONFIG_SYS_MONITOR_LEN = 192KBの例では、これによりアドレス0x1000000-0x30000 = 0xFD0000が生成されます。

テキストをさらに読むと、それがプロセッサまたはボードに依存していること、および確実に知るためにU-Bootソースを確認する必要があることを示しているようです。

Guruplug について:

RAM=側では、u-Bootは最初の8メガバイトを予約しています。残りは無料です。一部の開発者は、フラッシュにプログラミングするためにカーネルとファイルシステムを0x800000でロードします。別の一般的なスポットは、 100メガバイト境界(またはオフセット0x640000)。

U-Bootのバージョンによっては、文字列をどこかに無料で挿入できるRAMそして、残りのRAMをその文字列で探して、メモリ内のU-Bootのおおよその位置。

2
LawrenceC

使用しているバージョンの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領域を使用しても安全であることがわかりました。理想的には、そのようなことのためにハイメモリを使用したいと思いますが、(私の出力でわかるように)オプションはありませんでした。

1
BuvinJ