私は Linux を使用しており、物理アドレス (つまり 0x60000000) を持っています。
ユーザー空間の Linux プログラムからこのアドレスを読み取りたい。
このアドレスは、カーネル空間にある可能性があります。
私は Linux を使用しており、物理アドレス (つまり 0x60000000) を持っています。
ユーザー空間の Linux プログラムからこのアドレスを読み取りたい。
このアドレスは、カーネル空間にある可能性があります。
物理アドレスをユーザー レベルにエクスポートするには、カーネル ドライバーが必要です。
このドライバーを見てください: https://github.com/claudioscordino/mmap_alloc/blob/master/mmap_alloc.c
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()を使用して、物理アドレスを仮想アドレスにマップできます。ただし、ユーザー空間から直接アクセスすることはできません。ドライバーまたはカーネルモジュールがその物理アドレスにアクセスしたいと仮定すると、これが最善の方法です。通常、メモリ マップ デバイス ドライバは、この関数を使用して、レジスタを仮想メモリにマップします。