工具/软件:Linux
您好!
我们使用 USB 连接 BeagleBone Black 和 基于 CC26XX 的器件。 在 BBB 侧、我们有一个 C 程序、用于打开/dev/ttyUSB1接口并设置 UART 通信。
在我们的测试期间、我们会看到 Babble 误差、如下所示。 我知道有很多有关这个问题的 E2E 讨论、但我的问题是在发生 Babble 错误后如何恢复 UART 通信。 在我们的程序中、当发生 Babble 中断且 ttyUSB1断开连接时、UART 读取将返回错误状态。 枚举之后、/dev/ttyUSB1成为/dev/ttyUSB2、我们的程序会尝试关闭原始文件描述符并使用/dev/ttyUSB2.打开新的文件描述符 尽管所有的 close()、open()和 UART 安装返回成功状态,但之后从 read()返回的内容不会有任何变化。 但是、如果我们使用完全相同的代码关闭程序并打开/dev/ttyUSB2、则 UART 通信会成功恢复、并且我们不必重新启动 BBB。 这是我不理解的部分。 我是否需要在程序中除 close()外执行任何操作 来完全释放 USB? 有人有建议吗?
[771881.001017] Musb-hdrc musb-hdrc.1.auto: Babble
[771881.005688] Musb-hdrc musb-hdrc.1.auto: Babble
[771881.010269] musb-hdrc:设置 fifo_mode 4.
[771881.010296] MUSB - hdrc:28/31 max EP、16384/16384 memory
[771881.010787] USB 1-1:USB 断开连接、器件编号9
[771881.021280] FTDI_SIO ttyUSB0:FTDI USB 串行器件转换器现在从 ttyUSB0断开
[771881.021486] FTDI_SIO 1-1:1.0:器件已断开连接
[771881.022706] FTDI_SIO ttyUSB1:FTDI USB 串行器件转换器现在从 ttyUSB1断开
[771881.022777] FTDI_SIO 1-1:1.1:器件已断开连接
[771881.424364] USB 1-1:使用 musb-hdrc 的全新全速 USB 器件编号10
[771881.553715] USB 1-1:找到新的 USB 设备、idVendor=0403、idProduct=6010
[771881.553748] USB 1-1:新 USB 器件字符串:MFR=1、Product=2、SerialNumber=0
[771881.553763] USB 1-1:产品:双 RS232
[771881.553778] USB 1-1:制造商:FTDI
[771881.562408] FTDI_SIO 1-1:1.0:检测到 FTDI USB 串行器件转换器
[771881.562765] USB 1-1:检测到 FT2232C
[771881.565684] USB 1-1:FTDI USB 串行器件转换器现在连接到 ttyUSB0
[771881.570606] FTDI_SIO 1-1:1.1:检测到 FTDI USB 串行器件转换器
[771881.570965] USB 1-1:检测到 FT2232C
[771881.577045] USB 1-1:FTDI USB 串行器件转换器现已连接到 ttyUSB2
此致、
建伟