1

PCIe 経由で Linux PC ホストに接続された組み込みシステムを開発しています。現在、実装とデバッグの段階で、デバイスの電源をオフにしてからオンにしたり、別のボードを試したりする必要があることがよくあります。これにより、Intel PC で実行されている Linux (Ubuntu または Debian) で問題が発生します。

通常、テスト対象のデバイスを挿入する必要がある場合、PC は起動されます。予想どおり、Linux はデバイスを検出せず、ソフトウェア アプリはデバイスと通信できません。「lspci -v」を実行すると、デバイスがリストされません。私たちのアプリケーションは libpci (-lpci でビルドされたプログラム) を使用して、デバイスによって公開された単一の BAR にアクセスします。私たちの回避策は、PC を再起動してからデバイスを表示して有効にすることです。

PC を頻繁に (1 日に数十回) 再起動する必要がないソリューションを探しています。デバイスを接続してからコードを実行して、Linux カーネルがデバイスの BAR を検出して有効にすることはできませんか? PCI サポート ライブラリとサンプルの使用に関するドキュメントを見つけたいと思っていましたが、見つけることができませんでした。任意のポインタをいただければ幸いです。おそらく、コードで実行できる pci_enable_device() や pci_find_device() などの呼び出しがありますか? わからないけど。カーネル モジュールとユーザー コードを記述して、これを機能させることができます。つまり、ルート アクセス権を持っているかどうかに制限はありません。

アドバイスとご指摘ありがとうございます、Guraaf

4

1 に答える 1

0

モジュールをリロードしようとしましたか (デバイスが取り外されている間):

rmmod yourmodule
modprobe yourmodule

そして、デバイスを再接続します。

于 2010-12-28T11:34:16.263 に答える