0

对于一个项目,我们在一个定制硬件上有几个 FTDI 串行到 USB 转换器。其中一些串行到 USB 转换器具有需要设置的特殊参数(即它们从何处获取数据)。现在,设置它的正常方法是使用 FTD2XX 库,这将允许我们直接在 USB 到串行转换器上设置数据。但是D2XX驱动不能和标准的ftdi_sio驱动同时使用,也就是说我们不能像普通设备一样使用串口。

我在这里有三个基本选择:

  1. 修改标准驱动程序以使用新的 IOCTL。由于我们有一个非常具体的目标环境,我会很好,但是我不确定是否有可能处理 USB 转换器在不同模式下工作时可能出现的所有细微差别.

  2. 让一切都使用 D2XX 驱动程序。这并不理想,因为如果我们需要使用另一个 FTDI USB 到串行转换器,任何需要使用该串行转换器的程序也必须使用 D2XX 驱动程序,这在我们想要使用不同的 USB 到串行转换器之前会很好(因为我们会像往常一样打开 /dev/ttyUSBX)

  3. 制作一个假的 TTY,例如 /dev/serialX,然后将信息传递给 D2XX 驱动程序。这样,我们仍然可以正常打开串口,但我们可以添加新功能来做更多高级选项。命名类似于我们现在所做的,即使用 udev 创建指向正确端口的符号链接。

选项#3 可能是这里最好的选择,但我不确定具体该怎么做。我研究了openpty功能,但这似乎并没有完全符合我的要求,主要是能够在假串口上设置 TTY 设置并在真实串口上设置相同的设置。我猜 mknod/mkdev 会以某种方式在这里使用,但我不知道具体如何。

解决这个问题的最佳方法是什么?

4

1 回答 1

0

执行此操作的正常方法是利用 FTDI 芯片可以使用附加的小型 EEPROM 来加载配置设置这一事实。因此,您无需使用 D2XX 设置自定义参数,而是烧录 EEPROM,FTDI 将自行自动配置。然后,您只需使用 noraml 串行端口驱动程序。

于 2012-11-12T17:46:19.503 回答