对于一个项目,我们在定制硬件上有几个FTDI串口转USB转换器。这些串行到USB转换器中的一些具有需要设置的特殊参数(即,它们从哪里获取数据)。现在,设置它的常规方法是使用FTD2XX库,这将允许我们直接在USB到串行转换器上设置数据。但是,D2XX驱动程序不能与标准ftdi_sio驱动程序同时使用,这意味着我们不能像普通设备那样使用串行端口。
我在这里有三个基本选项:
修改标准驱动程序以使用新的IOCTL。由于我们有一个非常具体的环境,我会很好用,但是我不确定是否有可能处理USB转换器在进入不同模式时如何工作的所有可能的细微差别
让一切都使用D2XX驱动程序。这并不理想,因为如果我们需要使用另一个FTDI usb到串行转换器,无论程序需要使用哪个串行转换器也必须使用D2XX驱动程序,这将是好的,直到我们想要使用不同的USB到串行转换器(因为我们会正常打开/ dev / ttyUSBX)
制作假的TTY,例如/ dev / serialX,然后将信息传递给D2XX驱动程序。这样,我们仍然可以正常打开串口,但我们可以添加新功能来执行更高级的选项。命名类似于我们现在所做的,即使用udev为正确的端口创建符号链接。
选项#3可能是最好的选择,但我不确定如何做到这一点。我查看了openpty函数,但这似乎并不完全符合我的要求,主要是能够在假串口上设置TTY设置并在真实串口上设置相同的设置。我猜这里会以某种方式使用mknod / mkdev,但我无法弄清楚究竟是怎么回事。
解决这个问题的最佳方法是什么?
答案 0 :(得分:0)
正常的做法是利用FTDI芯片可以使用一个小的附加EEPROM来加载配置设置。因此,不是使用D2XX来设置自定义参数,而是烧录EEPROM,FTDI将自动进行自我配置。然后你只需使用noraml串口驱动程序。