FPGAデバイスへのリンクを失う
-
08-10-2019 - |
質問
PCIE FPGAデバイスのデバイスドライバーで、やや奇妙な問題をデバッグしようとしています。デバイスドライバーとFPGA画像の両方が家で開発されています。
ターゲットシステムはx86で、OSはFedora 9です。FPGAが唯一のPCIeスロットに接続されたPCIeカードがあります。 FPGA画像は、EEPROMからのブーツの後にロードされます。
ドライバーは、/sys/bus/bus/pci/devices/0000:02:00.0/リソースファイルを使用するように書かれています(ここで、0000:02:00.0は、FPGAを含むカードのPCIスロットです)。 FPGA。
システムが起動すると(または冬眠から戻ってきたとき)、FPGAリンクの縫い目が失われ、リソースファイルがありません。 FPGAが適切にブーツを適切にブーツすると、すべてが正常に機能します(リソースファイルがあります)。システムが冬眠に入ると、FPGAは電源が切れます。冬眠から戻ったとき、ドライバーの初期化を開始する前に、FPGAは電源を入れています。
私は次のことを疑っています:
- ファームウェアのバグ - PCIプラグインに関連するものは?
- カーネルのバグ - 他のPCIカードが正常に認識されているため、最も可能性が低い。それだけ
このPCIカードは問題を抱えています
質問は次のとおりです。
- 誰かが同様の問題を抱えていましたか?
- 他に何が間違っているのでしょうか?
- この問題をデバッグする方法に関する提案はありますか?
編集
見つけたばかりです このバグ, 、これは私が見ている問題に非常に似ています。
解決
PCIeカードは、特定の時間内に「誰か」というメッセージに返信する必要があります。冬眠 /リセット後にカードが十分に迅速に応答しない可能性はありますか?
あなたのデザインの詳細がなければ、推測する以外に何もするのは難しいです。
システムが機能していないことと機能していないことの違いをリストできますか?つまり、カードを動作させるために何をしますか?
他のヒント
私はついに自分の問題をデバッグすることができました。冬眠に入る直前に、まだリソースファイルを使用しているすべてのプロセスが殺されています。何らかの未知の理由で、1つのプロセスがリソースをリリースせず、殺されました。ウォッチドッグがあり、実行されていないすべてのプロセスをリスポーンします。
冬眠から戻ってきたとき、このプロセスは再呼び出され、リソースファイルを開くことができなかったため、再び死亡し、重大なエラーが宣言されました。ごくわずかな時間の後、リソースファイルがOSによって追加され、このプロセスは正常に継続する可能性があります。