在 Ubuntu 14.04 中,ttyACM* 导致数据丢失,而在 Ubuntu 16.04 中使用“cat”命令时,数据成功

在 Ubuntu 14.04 中,ttyACM* 导致数据丢失,而在 Ubuntu 16.04 中使用“cat”命令时,数据成功

我有一块开发板,当连接到 Ubuntu 主机时它将有 3 个 ACM 接口,我想通过 ttyACM3 将数据从主机传输到设备。

我已遵循以下数据传输程序,

前提:

  1. 修改/etc/inittab以删除 Linux 控制台/dev/ttyGS3

  2. 创建一个最小长度约为 20MBytes 的二进制文件

测试步骤:

  1. 被测设备侧:stty -F /dev/ttyGS3 raw -echo -echoe -echok -echoctl -echoke

  2. 主机端:stty -F /dev/ttyACM3 raw -echo -echoe -echok -echoctl -echoke

  3. 被测设备侧:cat /dev/ttyGS3 > /tmp/rx_pattern.bin

  4. 主机端:cat ./pattern.bin > /dev/ttyACM3

通过上述步骤,我发现当我使用时,DUT 端随机丢失了一些数据(约 300 KB)Ubuntu 14.04。我也使用“dd”命令进行数据传输,但仍然有数据丢失。

使用与上述相同的步骤,在 Ubuntu 16.04 中没有看到数据丢失。

但是我尝试使用“minicom”应用程序和“cat”命令从 Ubuntu 14.04 主机传输相同的“pattern.bin”文件以从 DUT 端接收,令人惊讶的是,我没有看到任何数据丢失。

我在问题发生期间获取了 USB Ellisys 日志,

1.其中一个“OUT”事务失败(握手为NAK),并且失败的传输没有“PING”事务。

2.而在成功情况下,每当“OUT”事务失败时,“PING”事务就会出现并再次发送数据。

有人能帮我解决这个问题吗

相关内容