25

私は Linux を使用しており、物理アドレス (つまり 0x60000000) を持っています。
ユーザー空間の Linux プログラムからこのアドレスを読み取りたい。

このアドレスは、カーネル空間にある可能性があります。

4

4 に答える 4

6

物理アドレスをユーザー レベルにエクスポートするには、カーネル ドライバーが必要です。

このドライバーを見てください: https://github.com/claudioscordino/mmap_alloc/blob/master/mmap_alloc.c

于 2013-10-21T12:46:35.617 に答える
3
Is there an easy way I can do that?

ユーザー空間からアクセスするにmmap()は、良い解決策です。

Is it possible to convert it by using some function like "phys_to_virt()"?

ioremap_nocache()を使用して、物理アドレスを仮想アドレスにマップできます。ただし、ユーザー空間から直接アクセスすることはできません。ドライバーまたはカーネルモジュールがその物理アドレスにアクセスしたいと仮定すると、これが最善の方法です。通常、メモリ マップ デバイス ドライバは、この関数を使用して、レジスタを仮想メモリにマップします。

于 2013-10-22T06:58:51.397 に答える