1

我在 SYNC FIFO FT245 模式下使用 FT2232H,我无法让它在 Linux 上运行,我的代码在 Mac OS X 上完美运行,但在 Linux 上却不行。

我已经安装了 libftdi1 和 libftdi-dev 软件包。

代码的相关部分:

    #define PID 0x6010

    .
    .
    .

    if(vftdic == NULL)
    {
        this->ftdic = static_cast<struct ftdi_context*>(malloc(sizeof(struct ftdi_context)));
    }
    else
    {
        this->ftdic = vftdic;
    }
    int f;
    // Init 1. channel
    if (ftdi_init(ftdic) < 0)
    {
        throw DeviceException("ftdi_init failure\n", FTDI_ERROR);
    }
    ftdi_set_interface(ftdic, INTERFACE_A);
    f = ftdi_usb_open(ftdic, 0x0403, PID);
    if (f < 0 && (f != -5))
    {
        //here f is equal to -8 only on Linux
        throw DeviceException("Unable to open FTDI device, channel A\n", FTDI_ERROR);
    }

这是来自 lsusb 的列表:

Bus 001 Device 005: ID 0403:6010 Future Technology Devices International, Ltd FT2232C Dual USB-UART/FIFO IC

使用的所有硬件都是相同的(MacBook Pro 2010 + 我的带有 ft2232h 的 USB 设备)。

4

2 回答 2

2

您使用的用户帐户是否有权访问原始 USB 总线?检查与您位于下方某处的 FTDI 对应的设备文件的权限/dev/bus/usb——就像您没有访问它的权限一样。

在这种情况下,添加一些 UDev 规则以将设备文件置于某个专用组的所有权中,并将您自己添加到该组的成员中。

于 2013-05-07T18:48:42.853 回答
1

除了确保您有权访问设备节点之外,您还必须验证没有其他驱动程序(例如通常随 linux 发行版一起提供的 USB 串行驱动程序)已声明该接口。

于 2013-05-07T19:23:56.173 回答