【问题标题】:Linux TTYs and driversLinux TTY 和驱动程序
【发布时间】:2012-11-09 22:21:21
【问题描述】:

对于一个项目,我们在一个定制硬件上安装了多个 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 会以某种方式在这里使用,但我不知道具体如何。

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

【问题讨论】:

    标签: linux serial-port driver


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      相关资源
      最近更新 更多