Linux TTY 和驱动程序

标签 linux serial-port driver

对于一个项目,我们在定制硬件上有多个 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 创建指向正确端口的符号链接(symbolic link)。

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

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

最佳答案

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

关于Linux TTY 和驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13316872/

相关文章:

linux - 你禁用 SELinux 吗?

linux - Typo3 linux 服务器错误 : Could not load layout file

c++ - 使用 native 系统调用在 C++ 中播放声音?

c - Nagios 状态信息

c - 从 +ENA 和 -ENA 引脚启用和禁用步进电机驱动器的正确方法是什么?

c - 无法连接到 Linux 中的 USB 设备(Emotiv 神经耳机)

c - 在 Linux 中,如何在现有类中使用 device_create?

linux - cu 不发送 TTY 响应到 bash 输出

c# - 使用 .Net Core 3.0 访问 SerialPort 类

windows - 如何使用NDIS筛选器驱动程序读取接收到的数据包?