我有一块开发板,当连接到 Ubuntu 主机时它将有 3 个 ACM 接口,我想通过 ttyACM3 将数据从主机传输到设备。
我已遵循以下数据传输程序,
前提:
修改
/etc/inittab
以删除 Linux 控制台/dev/ttyGS3
创建一个最小长度约为 20MBytes 的二进制文件
测试步骤:
被测设备侧:
stty -F /dev/ttyGS3 raw -echo -echoe -echok -echoctl -echoke
主机端:
stty -F /dev/ttyACM3 raw -echo -echoe -echok -echoctl -echoke
被测设备侧:
cat /dev/ttyGS3 > /tmp/rx_pattern.bin
主机端:
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”事务就会出现并再次发送数据。
有人能帮我解决这个问题吗