組み込みLinuxシステムのメモリが実際にオペレーティングシステムで使用されているかどうかを確認する方法は?

組み込みLinuxシステムのメモリが実際にオペレーティングシステムで使用されているかどうかを確認する方法は?

この問題には追加の説明が必要です。

背景:私はARMプロセッサ+ FPGAからなる組み込みシステム(Xilinx zynq ultrascale +)を開発しています。メモリマップ(システムをベアメタルとして使用する場合)は次のとおりです。

ARMに接続(データシートによる):

Segment name | Start addresss     | Size
HP0_DDR_HIGH | 0x0_0008_0000_0000 | 32G 
HP0_DDR_LOW  | 0x0_0000_0000_0000 | 2G  
HP0_LPS_OCM  | 0x0_0000_FF00_0000 | 16M 
HP0_QSPI     | 0x0_0000_C000_0000 | 512M    

その後、FPGAのDDRコントローラを介してアクセスできる外部RAM(4GB)があります。この思い出がここにあります。

Segment name          | Start addresss     | Size
C0_DDR4_ADDRESS_BLOCK | 0x0_0005_0000_0000 | 4G 

私はLinux用にビルドするときにYoctoに変装したXilinx Petalinuxツールチェーンを使います。システムが起動したら、0x5_0000_0000その物理アドレスを使用するか、コマンドを介してdevmemまたはユーザー空間から物理アドレスをマッピングして外部DDRにアクセスできます。

私はLinuxが起動時にデバイスツリーを解析してこの追加のDDRを見つけたと思います。

詳細:データシートを見る(https://www.xilinx.com/support/documentation/user_guides/ug1085-zynq-ultrascale-trm.pdf)

ARM - >外部DDRパス

このアドレスはMMU翻訳装置に含まれていないようです。

質問):

  1. Linuxが可能なメモリプールの一部として外部ddrを使用しているかどうかを確認する方法は? OSがメモリ内のすべてのページを追跡していることを知っていますが、このメモリはページングされますか?
  2. オペレーティングシステムはこのメモリを使用してプロセスアドレス空間を作成および管理できますか?
  3. この物理アドレスをプロセスのユーザー仮想アドレス空間にマップすると仮定すると、カーネルは新しいページエントリを生成しますか?

ベストアンサー1

おすすめ記事