PCIe デバイス ドライバーを作成しましたが、読み取り/書き込み機能が正しく動作しません。デバイスには、0x10800000、0x0c000000、および 0x80000000 で始まる 3 つのメモリ領域があります。テスト目的で、ドライバーの読み取りおよび書き込み関数は、渡されたアドレスを出力して返します。ユーザー空間アプリから pread() または pwrite() を呼び出すと、最初の 2 つのメモリ領域に渡されたアドレスが表示されますが、3 番目のメモリ領域を呼び出すと、渡されたように何も表示されません。ドライバーの読み取りまたは書き込み関数を入力することさえできません。
私のドライバーは、Linux バージョン 2.6.32 を実行している 64 ビット マシンで完全に正常に動作します。動作しないこの別のマシンは、Linux バージョン 2.6.25 を実行する 32 ビット マシンです。私の考えでは、32 ビットは 0x80000000 アドレスが気に入らないのではないかと思いますが、それを確認する方法や、その場合の修正方法がわかりません。