2017-06-13 194 views
0

我試圖讓Matlab MEX在Linux中運行。它使用FTDI的D2XX庫v1.3.6(Documentation)。FTDI D2XX FT_DEVICE_LIST_INFO_NODE結構全部爲零

FT_CreateDeviceInfoList(&ftdi_count)給我一個ftdi_count的1,所以FTDI芯片被檢測到。

然而,通過設備列表從FT_GetDeviceInfoList(device_list, &ftdi_count)迭代時,我FT_DEVICE_LIST_INFO_NODE結構爲全零,如此明顯的代碼無法找到與描述的設備,它在尋找:

(gdb) p *p_device 
$3 = {Flags = 1, Type = 3, ID = 0, LocId = 0, SerialNumber = '\000' <repeats 15 times>, 
    Description = '\000' <repeats 63 times>, ftHandle = 0x0} 

我的第一個猜測是, udev沒有成立。但問題與

SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}="6014", MODE="0666" 

持續lsusb -v訪問的值:

Bus 001 Device 012: ID 0403:6014 Future Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC 
Device Descriptor: 
    bLength    18 
    bDescriptorType   1 
    bcdUSB    2.00 
    bDeviceClass   0 (Defined at Interface level) 
    bDeviceSubClass   0 
    bDeviceProtocol   0 
    bMaxPacketSize0  64 
    idVendor   0x0403 Future Technology Devices International, Ltd 
    idProduct   0x6014 FT232H Single HS USB-UART/FIFO IC 
    bcdDevice   9.00 
    iManufacturer   1 FTDI 
    iProduct    2 [company that provided me with their] Kit v3 
    iSerial     3 FT266WVA 
    bNumConfigurations  1 
[...] 

我能做些什麼使FTDI職能的工作?

回答

0

問題是Linux會自動加載VCP驅動程序(ftdi_sio)。

在問題How can I get Linux device with FTDI D2XX driver API中,Akira顯示了一個從A blog卸載該驅動程序的udev腳本。我修改了它與我的FT232H芯片一起工作,該芯片只有一個端口:

ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", RUN+="/bin/sh -c 'echo -n $kernel:1.0 > /sys/bus/usb/drivers/ftdi_sio/unbind;'"