ubootが使用しているメモリRAMアドレス範囲を確認するにはどうすればよいですか?


12

私はubootを使用していて、ubootが使用しているRAMアドレス範囲を確認するにはどうすればよいのか疑問に思いました。

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

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

回答:


2

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のおおよその位置を明らかにするコマンドが利用できる場合があります。


1

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


Linuxのメモリマップではないことを確認しますか?
クレイメーション

よくわかりません。highmemの欠如と「仮想カーネル」への参照により、私は別の方法で考えるようになりました。ubootに関しては、私はnoob / hackです。ここで重要な点は、ubootに必要なように見えるものを何も上書きせずに、そのlowmem範囲を安全に使用できたことです。
BuvinJ 2017

私が覚えているように、これはOS btwをロードする前に表示されます。
BuvinJ 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.