urasue
2023年8月22日 16時42分
いつもお世話になっております。
Top16 USB IO moduleというUSB-IOボードを使ってIOの制御を行おうとしております。
このボードは、FTDI社のチップが載っており libftd2xx.soというライブラリを使って制御するようなのですが、
ライブラリが見つかりません。
X2のコンテナ上(Debian)から利用したいのですが、 libftd2xx.soをどの様にインストールすればよいでしょうか。
コメント
urasue
溝渕様
ご回答ありがとうございます。
ダウンロードしライブラリをインストールしたところ、ライブラリ自体は使えているようです。
ただ、デバイスが見つからない状態となっており、FTDIのマニュアルにftdi_sioをrmmodコマンドで
消すよう指示がありましたので消してみると、下記のエラーが出てしまいました。
[ 2920.618502] usb 3-1.1.4: FTDI USB Serial Device converter now attached to ttyUSB0 [ 2920.620805] ftdi_sio 3-1.1.4:1.1: FTDI USB Serial Device converter detected [ 2920.621165] usb 3-1.1.4: FTDI USB Serial Device converter now attached to ttyUSB1 [ 2924.273872] ftdi_sio 3-1.1.2:1.0: FTDI USB Serial Device converter detected [ 2924.275389] usb 3-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB2 [ 4564.989754] ftdi_sio ttyUSB2: FTDI USB Serial Device converter now disconnected from ttyUSB2 [ 4567.627781] ftdi_sio 3-1.1.2:1.0: FTDI USB Serial Device converter detected [ 4567.629011] usb 3-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB2 /home/atmark # rmmod ftdi_sio rmmod: can't unload module 'ftdi_sio': No such file or directory
unload出来ない理由は何かわかりますでしょうか。
at_mizo
溝渕です。
> ファイルの拡張子が".gz"とgzip圧縮ファイルのようですが、実際には".tar.gz"ファイルのようです。
上記、旧バージョンのもので、新しいバージョンの方が".tgz"となっていますね。
> unload出来ない理由は何かわかりますでしょうか。
ftdi_sioがカーネルモジュールでない為です。
解決する為には、Linuxカーネルコンフィギュレーションを変更して、リビルドする必要があります。該当箇所は次の通りで、
Device Drivers ---> [*] USB support ---> <*> USB Serial Converter support ---> <*> USB FTDI Single Port Serial Driver
となっているところを、
<M> USB FTDI Single Port Serial Driver
か、
< > USB FTDI Single Port Serial Driver
かのいずれかに変更する必要があります。後者にした場合はrmmodは不要です。
urasue
お世話になっております。
ご教授頂いた方法で、ドライバをモジュール(M)に変更してカーネルを書き換え、rmmodが成功するようになりました。
[ 51.358707] usbserial: USB Serial deregistering driver FTDI USB Serial Device [ 51.359488] ftdi_sio ttyUSB2: FTDI USB Serial Device converter now disconnected from ttyUSB2 [ 51.359678] ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1 [ 51.359972] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0 [ 51.360019] usbcore: deregistering interface driver ftdi_sio [ 51.360109] ftdi_sio 3-1.1.4:1.1: device disconnected [ 51.360217] ftdi_sio 3-1.1.4:1.0: device disconnected [ 51.360314] ftdi_sio 3-1.1.2:1.0: device disconnected [ 478.806738] usbserial: USB Serial deregistering driver generic [ 478.806828] usbcore: deregistering interface driver usbserial_generic
この後、TOP16のEEPROMの値を読む処理は成功しました。
./read Library version = 0x10427 Opening port 0 FT_Open succeeded. Handle is 0xaaab21315c80 FT_GetDeviceInfo succeeded. Device is type 5. FT_EE_Read succeeded. Signature1 = 0 Signature2 = -1 Version = 2 VendorId = 0x0403 ProductId = 0x6001 Manufacturer = TCTEC ManufacturerId = FT Description = TCTEC TOP16DIO SerialNumber = FT47Y39M MaxPower = 400 PnP = 1 SelfPowered = 0 RemoteWakeup = 0 232R: ----- UseExtOsc = 0x0 HighDriveIOs = 0x0 EndpointSize = 0x40 PullDownEnableR = 0x0 SerNumEnableR = 0x1 InvertTXD = 0x0 InvertRXD = 0x0 InvertRTS = 0x0 InvertCTS = 0x0 InvertDTR = 0x0 InvertDSR = 0x0 InvertDCD = 0x0 InvertRI = 0x0 Cbus0 = 0x0 Cbus1 = 0x0 Cbus2 = 0x8 Cbus3 = 0x1 Cbus4 = 0x5 RIsD2XX = 0x0 Returning 0
ここから、IO出力のプログラムを試していますが、
ライブラリのFT_OpenEx関数は成功したのですが、
FT_SetFlowControl関数が失敗し躓いております。
ここまでくると、Armadilloとは関係無い部分で申し訳ないのですが、
もし同じ機器を使って解決された方がいらっしゃればと思い投稿させて頂きました。
urasue
at_mizo
2023年8月22日 17時00分
溝渕です。
> このボードは、FTDI社のチップが載っており libftd2xx.soというライブラリを使って制御するようなのですが、
> ライブラリが見つかりません。
> X2のコンテナ上(Debian)から利用したいのですが、 libftd2xx.soをどの様にインストールすればよいでしょうか。
以下からビルド済みのライブラリをdownloadして利用するようです。
# 当方は利用した事がありません
https://ftdichip.com/drivers/d2xx-drivers/
"ARMv8 hard-float"のものが(ライブラリの依存に問題無ければ)利用できそうです。ファイルの拡張子が".gz"とgzip圧縮ファイルのようですが、実際には".tar.gz"ファイルのようです。