1

我正在尝试让 Matlab MEX 在 Linux 中运行。它使用 FTDI 的 D2XX 库 v1.3.6(文档)。

FT_CreateDeviceInfoList(&ftdi_count)给我一个ftdi_count1,所以检测到 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 功能正常工作?

4

1 回答 1

0

问题是 Linux 会自动加载 VCP 驱动程序 ( ftdi_sio)。

在 Question How can I get Linux device with FTDI D2XX driver API中,Akira 显示了一个 udev 脚本,用于从博客卸载该驱动程序。我对其进行了修改以与我的 FT232H 芯片一起使用,该芯片只有一个端口:

ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", RUN+="/bin/sh -c 'echo -n $kernel:1.0 > /sys/bus/usb/drivers/ftdi_sio/unbind;'"
于 2017-06-13T18:52:01.260 回答