その19にて、Kona LinuxマシンがEZ-USB FX2LPをデバドラレベルで認識したところまで書きました.今回は、libusbというライブラリを使って、LinuxからFX2LPと通信してみます.
Kona Linuxのデフォルトではlibusbはインストールされていませんでしたので、インストールします.
apt-get install libusb-dev
それでもってソースコードですが、比較的短くてこれで全部です.このソースコードがやるコトは、Linuxマシンに接続された全てのUSBデバイスのデバイスディスクリプタを表示するコトです.細かいコトはlibusbがやってくれてるので、このコードでは大きな仕事はしていません.
#include <stdio.h>
#include <usb.h> //libusbのライブラリ
// デバイスディスクリプタをひたすら表示する何の変哲もないサブ
void print_dev_descr(struct usb_device_descriptor *d){
printf("===device descriptor===\n");
printf(" Length %d\n",d->bLength);
printf(" descriptor type %d\n",d->bDescriptorType);
printf(" USB version %x\n",d->bcdUSB);
printf(" device class %d\n",d->bDeviceClass);
printf(" EP0 packet size %d\n",d->bMaxPacketSize0);
printf(" VID %04x PID %04x\n",d->idVendor,d->idProduct);
printf(" Manufucturer %d\n",d->iManufacturer);
printf(" Product %d\n",d->iProduct);
printf(" SerialNum %d\n",d->iSerialNumber);
printf(" Config Num %d\n",d->bNumConfigurations);
}
int main(){
struct usb_bus *bus; //USBバス情報構造体
struct usb_device *dev,*find_dev; //USBデバイスリスト構造体
usb_init(); // この4行はlibusbのお決まりってコトで
usb_find_busses();
usb_find_devices();
bus=usb_get_busses();
printf("device serching\r\n");
for(bus=bus; bus; bus=bus->next) {
for(dev=bus->devices; dev; dev=dev->next) {
print_dev_descr(&(dev->descriptor)); // デバイスディスクリプタを表示する
}
}
return 0;
}
このソースコードをfx2a.cという名前で保存します.そしてコンパイルします.ライブラリオプションの-lusbを着けるのをお忘れ無なく.
gcc fx2a.c -lusb
出来る実行ファイルはa.outですので、a.outと打つとプログラムが走ります.すると、こんな表示がダーッと出ます.これらが各デバイスのデバイスディスクリプタです.読める、読めるぞぉ.
===device descriptor===
Length 18
descriptor type 1
USB version 110
device class 9
EP0 packet size 8
VID 0557 PID 7000
Manufucturer 0
Product 0
SerialNum 0
Config Num 1
===device descriptor===
Length 18
descriptor type 1
USB version 110
device class 9
EP0 packet size 64
VID 1d6b PID 0001
Manufucturer 3
Product 2
SerialNum 1
Config Num 1
===device descriptor===
Length 18
descriptor type 1
USB version 200
device class 0
EP0 packet size 64
VID 04b4 PID 1004 ←これがEZ-USB FX2LPのVID/PIDです.居た居た
Manufucturer 1
Product 2
SerialNum 0
Config Num 1
LinuxとLibusbってすごく簡単だわ.今まで、Windows上で動くCypressのとあるツールで検証して来たんだけど、デバイス側しか弄れなかったので不便でした.今後はホスト側も弄れるようになったので、捗りそうです.
その19へ その21へ
かしこ
INDEXページへ
https://hirasakausb.blogspot.com/2019/03/ez-usb-fx2lp-index.html
なぜか 04B4/1002 というのもあるようです
返信削除1002の方は会社がお好みでつけてよいナンバーなのでいろいろです
削除