National Instruments USB<->GPIB ブリッジがあります。 USBボードなので、使用するには特別な手順が必要です。 2つのカーネルモジュールを提供するlinux_gpibパッケージをインストールしましたgpib_common
。ni_usb_gpib
また、gpib_config
GPIBバスの機器と通信するには、まずツールを実行する必要があります。重要なのは、ボードをUSBに接続した後、gpib_config
コマンドが適用される前に内部で初期化するのに約2秒かかります。したがって、99-gpib.rules
タスクを完全に実行するための次のudevルールがあります。
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="3923", ATTR{idProduct}=="709b", RUN+="/bin/sh -c '/usr/bin/sleep 2; /usr/sbin/gpib_config --minor 0'"
KERNEL=="gpib[0-9]*", MODE="0660", GROUP="gpib"
問題は、ホストシステムが稼働している間にマザーボードを接続している場合にのみ機能することです。ドングルを挿入して再起動すると、両方のカーネルモジュールがロードされていることがわかりますが、ボードは使用できません。これはツールgpib_config
が実行されていないことを意味します。手動で実行すると完璧に動作します。
システムの実行中に再起動してから接続する方が現実的な場合であるため、起動時にudevにこれを実行させる正しい方法が必要です。もちろん、ボードが接続されていること、カーネルモジュールがロードされていることを確認し、ロードプロセス中にツールを実行するための初期化スクリプトを書くこともできますが、ハードウェアを処理する必要があるため、それはudevの仕事だと思います。どんなアイデアがありますか?
答え1
問題はRUNコンテンツを実行しているudevにあります。今後そのモジュールがロードされ、gpib_config
ボードを構成できません。解決策は、システムの起動時にudevを起動する前にモジュールをロードすることです。私はこれが本当の解決策だとは思わない。