多个 USB-TTL 适配器仅在与集线器一起使用时在 678uS 后切断,仅在自定义 Linux 映像上

问题描述 投票:0回答:0

这个问题很难完全解释清楚,我提前道歉,但请阅读整个描述?谢谢。

注意:我发布这个主要是为了记录它,并且只征求有关如何识别需要更新以解决此问题的 Linux 映像部分的建议,也许有人会看到它并有一个解决方法。在使用串行 TTL 通信 30 多年的时间里,我从未见过这样的问题。

我有一个嵌入式板,出于安全/带宽原因无法轻松更新。小更新是可能的,但不是目标。除了修复它,我还想了解系统的哪一部分包含这些驱动程序以供我自己学习。我不想解决问题,我想了解问题。

这块板有一个 USB 连接器,我可以插入不同的设备,它们通常都可以工作。例如键盘、wifi 适配器等。

当我想与外部串行设备(例如 Arduino 或其他)通信时,我常用的一种设备是串行 TTL 适配器。

当我将这些适配器直接插入 USB 端口时,它们可以正常工作。我通常使用 CP210x,最常用的是 CP2102 / 2104,但使用过 CH340s、FTDI 等……没问题。

最近我有一个应用程序,我同时需要两个 USB 设备,所以我添加了一个小型 USB 集线器。通过 HUB 插入串行 TTL 适配器后,我发现在大约 678uS 后发送的任何数据都被切断了。 (!?)

例如,一组示波器轨迹的屏幕截图以灰色显示了我直接插入串行 TTL 适配器时的轨迹,而蓝色轨迹显示了通过集线器插入时的轨迹。

如您所见,数据截断了中间字节。后来的测量表明,无论数据长度或波特率如何,时间都保持一致 +/- 大约 20uS。

这发生了 x3 集线器和 x3 适配器。

这不是 RS232,因此没有电荷泵故障。我监测了芯片上的电源,没有断电。

相同的集线器和适配器在插入 PC x2 操作系统(Ubuntu 20.04、Windows 11)时可以完美工作。

我的假设是嵌入式图像中的 USB 驱动程序有问题。同样,我无法更新它,除非以小的方式进行更新,而我的真正目标是无论如何都要了解这个问题。

  • 实际问题:Linux 栈的哪一部分控制这个?
  • 额外功劳:您将如何只更新那部分?
  • 额外加分:你以前见过吗?
linux linux-device-driver embedded-linux usbserial hub
© www.soinside.com 2019 - 2024. All rights reserved.