主题中讨论的其他器件:TMDS64EVM、
工具/软件:
自上一个线程锁定以来启动新线程。
我在配置 USB 小工具时看到同样的挂起。 它间歇性失败、但通常在50到200次迭代内、电路板挂起。 只能恢复下电上电(或看门狗复位)。
问题可通过以下方式触发 :true;do sleep 0.5;echo ""> UDC ;sleep 0.5;echo f400000.usb > UDC;配置 USB 小工具后完成。 睡眠是可选的、他们的存在/缺席似乎不会改变行为。
特定类型的 USB 小工具似乎无关紧要- RNDIS 和 NCM、甚至只有 ACM 端口就足以触发挂起。
与上一个 TT 相比、我的差异包括:
- 双方都在运行 Linux (USB 主机是一台支持 Fedora/Debian 的 PC)
- TI AM64x 运行6.12-RT 内核。 还测试了6.1和6.6、以及非 RT 内核。 都以类似的方式失败。
- 我有 SR1.0显然不理想,但根据以前的论坛帖子,SR2.0同样失败
我在 cdns3_gadget_usb_start()和_stop ()函数中跟踪并添加了许多 printk、包括打印 cdns3驱动程序完成的每个寄存器读/写、以及中断进入/退出。 启用/禁用 USB 上拉电阻后不久会发生挂起、但每次都不会在完全相同的位置触发。 在重置端点时有时会触发。 在大多数情况下、最后一条 printk()消息在中间被截断、表明它在将数据放入 UART 时挂起(或者可能是 UART 只是停止传输)。 这似乎同意 Bin Liu 在前一个论坛帖子中的评论。
此时、唯一的权变措施似乎是在挂起时依靠看门狗来复位电路板。 我希望我们能找到另一个解决方案、但此时我不确定还要看什么。 其中一个 R 磁芯可能会产生干扰吗? 应该查看电压轨吗? 我正在使用 TMDS64EVM 电路板、但我们在具有相同 SoC 的定制电路板上看到了相同的问题。
是否有进一步调试的技巧?