1) /proc/iomem に定義されていない物理アドレスにアクセスできますか?
2) デバイスの物理アドレス範囲が /proc/iomem に表示されない場合、デバイスがまだ使用/初期化されていないことを意味しますか?
1) /proc/iomem に定義されていない物理アドレスにアクセスできますか?
2) デバイスの物理アドレス範囲が /proc/iomem に表示されない場合、デバイスがまだ使用/初期化されていないことを意味しますか?
1) /proc/iomem に定義されていない物理アドレスにアクセスできますか?
はい。
直接接続されたすべてのペリフェラルをメモリ マップする ARM プロセッサを想定すると、ドライバはioremap()
アクセスのために物理メモリを仮想メモリにマップする操作を実行できます。
しかし、適切に作成されたドライバーは、最初に呼び出しrequest_mem_region()
て、その物理アドレス空間を使用できる (および主張できる) ことを確認します。
の情報は、/proc/iomem
を呼び出しているドライバーからのものrequest_mem_region()
です。
2) デバイスの物理アドレス範囲が /proc/iomem に表示されない場合、デバイスがまだ使用/初期化されていないことを意味しますか?
ドライバーのコードを調べて、ドライバーがどの程度適切に作成されているかを判断する必要があります。
のrequest_mem_region()
前に はありioremap()
ますか? コマンド
を使用してシステム ログを確認します。dmesg
ドライバの初期化に失敗した可能性があります。
これがロード可能なモジュールではなく静的にリンクされたドライバーであると仮定すると、各カーネル デバイス ドライバーにはそのinit()
ルーチンが呼び出されるため、カーネル コマンド ラインにオプション "initcall_debug" を追加することでトレース出力を取得できます。U-Boot を使用している場合は、このオプションを「bootargs」変数 (カーネル コマンド ラインに使用される) に追加する必要があります。