私たちは、PCIeを介してLinux PCホストに接続された組み込みシステムを開発しています。実装とデバッグ段階では、デバイスの電源を入れなおしたり、別のボードを試したりする必要があることがよくあります。これにより、Intel PC上で実行されているLinux(UbuntuまたはDebian)に問題が発生します。Linuxのブート後に接続されたPCIeデバイスを見つけて有効にする
通常、テスト中のデバイスを挿入する必要があるときにPCが起動します。予想どおり、Linuxはデバイスを見つけられず、ソフトウェアアプリはそれを話すことができません。私が "lspci -v"を実行すると、私たちのデバイスは表示されません。私たちのアプリケーションは、libpci(-lpciでビルドされたプログラム)を使用して、私たちのデバイスによって公開された単一のBARにアクセスします。これは、page_remapを実行するカーネルモジュールを介して "mmap"されます。回避策は、PCを再起動してから、デバイスを表示して有効にすることです。
私はPCを頻繁に再起動する必要がないソリューションを探しています(1日に数十回)。デバイスを接続してからLinuxカーネルがデバイスのBARを検出して有効にするためのコードを実行できませんか?私は、PCIサポートライブラリとサンプルの使用に関するいくつかの文書を見つけることを望んでいましたが、できませんでした。任意のポインタが高く評価されました。おそらく、私のコードで実行できるpci_enable_device()やpci_find_device()などの呼び出しがありますか?私は理解することはできません。私はカーネルモジュールとユーザコードを書くことができます。つまり、私はroot権限を持っているかどうかに制限はありません。あなたのアドバイスやポインタのため
どうもありがとう、 Guraaf
私たちはそれを試みましたが、それは助けになりませんでした。多分ホットプラグをどうにかする必要がありますか?どのようにPCバスがそれを可能にしているのかわからない。そして/またはホットプラグを許可するためにカーネルを再コンパイルする必要がある場合。ありがとう! – guraaf
このように試してみると、デバイスを取り外し、rmmod、デバイスをmodprobeモジュールに接続してください。 – ismail