我在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 +我的usb设备,ft2232h)。
答案 0 :(得分:2)
您使用的用户帐户是否有权访问原始USB总线?检查位于/dev/bus/usb
以下某处的FTDI对应的设备文件的权限 - 大多数情况下您没有权限访问它。
在这种情况下,添加一些UDev规则,将设备文件置于某个专用组的所有权中,并将自己添加到该组的成员中。
答案 1 :(得分:1)
除了确保您拥有设备节点的权限之外,还必须验证没有其他驱动程序(例如通常附带Linux发行版的USB串行驱动程序)已声明该接口。