【发布时间】:2016-10-19 14:36:37
【问题描述】:
应用程序通过 USB 使用串行通信,并且在 PC 从 HDD 启动时工作正常。
我创建了工作操作系统的 liveUSB 映像 (.iso)。 从包含 .iso 映像的 USB 驱动器启动同一台 PC。
现在,DUT 已连接并运行应用程序,它报告大部分时间都有Garbage on the Line。但是,它在某些尝试中确实有效,但非常不一致。
我不明白从 Live USB 启动与从 HDD 启动有何不同。
仅供参考,PC 有 Fedora Core 22 和 4.0.4 Linux 内核。
串行通信:波特率为 115200,带 1 个停止位。
非常感谢任何帮助。
谢谢,
沙哈布
编辑
我查了dmesg,发现有区别,
cdc_acm : failed to set dtr/rts 在 Live USB 启动时。在另一种情况下看不到。类似于 stackoverflow 上的 question。
另一个观察结果是,当设备连接并且 PC 从 Live USB 记忆棒启动时,串行通信工作正常。如果设备的 USB 数据线被拔下并重新插入,则会报告该问题。
【问题讨论】:
-
Live USB 和 HHD 具有不同的 MBR。这也取决于 BIOS 如何格式化或显示 USB 记忆棒。某些 BIOS 可能允许您选择:HDD、FDD 等。
-
@EugenKonkov 感谢您的评论。但是,我不明白 MBR 是如何导致串行通信中断的。
-
您的应用程序需要像 HDD 这样的格式的数据,但您以不同的格式 (ISO) 获得它。因此,您不会收到上面显示的错误。您可以逐字节比较两种情况下收到的内容吗?将接收到的数据转储到文件,然后将数据从文件重定向到您的应用程序。如果您的应用程序在您从文件重定向数据时不会发出错误,您将确定问题符合要求。如果会发出错误,那么问题出在数据中。
-
@EugenKonkov 抱歉,我忘了在问题中添加细节。 “垃圾并不总是报告,有时它工作正常。我只是不断断开/连接设备的 USB 电缆,有时它可以工作”。虽然它在本机操作系统上 100% 运行。
标签: linux boot usbserial fedora-21