This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我的客户报告 USB 有问题。
软件:Linux SDK 8.6
硬件:AM64x SR2 EVM
测试程序。
步骤1:在 Linux 启动后、将 EVM 与主机 PC 连接。
步骤2:在 EVM 上的 Linux 控制台中执行以下命令。
# chmod 755 Set_Composite_USBD_new_mod.sh
#./ Set_Composite_USBD_new_mod.sh
(Set_Compose_USBD_new_mod.sh 如下所示)
e2e.ti.com/.../Set_5F00_Composite_5F00_USBD_5F00_new_5F00_mod.txt
现在、EVM 被识别为打印机。
步骤3: 在 EVM 上的 Linux 控制台中执行以下命令。
#> while true; do cat /boot/Image.gz >/dev/g_printer0 ; sleep 1; done
步骤4:断开 USB 电缆。 然后控制台被锁定。
已连接控制台日志。
e2e.ti.com/.../am64xevmsdk0806usbcableoutcalltrace.txt
您是否能够尝试在您身边重现并提供解决方案?
谢谢。此致、
田代浩一郎
尊敬的 Tashiro-San:
我将在 EVM 上试用此功能、下周同一时间再见。
您好、Bin、
您是否有机会在您身边尝试一下?
谢谢。此致、
田代浩一郎
尊敬的 Tashiro-San:
抱歉、我本周正在处理另一个客户升级问题、下周早些时候很可能会再次出现此问题。
尊敬的 Tashiro-San:
我能够在 AM64x GPEVM 上重现此问题。 我将对其进行调试、并让您一直发布。
bin:较新的 TMDS64EVM 是否也有此 USB 电缆断开的问题?
Jim、
我使用电路板 PROC101C、我认为它是 TMDS64EVM 的最新版本。
您好、Bin、
您能否更新您的调查状态?
谢谢。此致、
田代浩一郎
尊敬的 Tashiro-San:
我还在做这件事。 目前还没有太多进展可供分享。
您好、Bin、
是否有此项目的任何更新?
谢谢。此致、
田代浩一郎
尊敬的 Tashiro-San:
很抱歉我的回复延迟了。
问题在于、拔下 USB 电缆后、内核驱动程序 cdns3/gadget.c 线路2461-2466变为忙环路、导致 CPU 无法处理其他任务、例如串行控制台。
我正在努力寻找解决方法。
二进制:还请检查最近发布的 AM64X Linux SDK v9.2 (与 CCS 12.7兼容)是否也发生这种 USB 中断-如果是、Nick 可能需要在 AM64X Academy 更新中提到一些内容。
谢谢
吉姆·穆罗卡
您好、Jim、
您能否提供 USB 中断的上下文? 我不确定这是什么以及它与 Tashiro-San 的 USB 锁定问题有何关系。
在任何人应断开任何 USB 3.1电缆以进行维护之前、我的应用应已将 AM6442 (将在 SOM 上)断电。 该系统可以运行24小时循环。 因为会有一个 FMEA 在我的系统应用程序上完成之后、我们 需要对这种类似的 USB 中断可能发生的情况进行说明(如果是、则在程序上记录所需的任何补救措施)。 如果有任何 SDK 补救措施、那就没问题(我怀疑这种补救措施可能取决于所应用的 USB 规范的版本)。
谢谢。
吉姆·穆罗卡
您好、Jim、
我仍然无法理解您的问题是否与此 e2e 主题相同。 Tashiro-San 的客户问题专门与在 AM64x USB 上以设备模式运行的 USB g_printer 驱动程序有关。 任何其他内核 USB 小工具驱动程序都不会出现此问题。
如果需要帮助、我建议您创建一个新的 e2e 主题。 在单个线程上同时支持您和 Tashiro-San 会使沟通难以理解。 谢谢。
尊敬的 Tashiro-San:
以下内核补丁应防止内核在移除 USB 电缆时挂起。
diff --git a/drivers/usb/cdns3/gadget.c b/drivers/usb/cdns3/gadget.c index e3a8b6c71aa1..6ecaec399064 100644 --- a/drivers/usb/cdns3/gadget.c +++ b/drivers/usb/cdns3/gadget.c @@ -2461,6 +2461,10 @@ static int cdns3_gadget_ep_disable(struct usb_ep *ep) while (!list_empty(&priv_ep->pending_req_list)) { request = cdns3_next_request(&priv_ep->pending_req_list); + priv_ep->pending_req_list.next = request->list.next; + request->list.next->prev = &priv_ep->pending_req_list; + INIT_LIST_HEAD(&request->list); + cdns3_gadget_giveback(priv_ep, to_cdns3_request(request), -ESHUTDOWN);
尊敬的 Tashiro-San:
前面的补丁只是为了解决 Linux 系统锁定问题。 下面附加的内核补丁是 USB 锁定问题的正确修复。 请要求客户忽略先前的补丁并使用 SDK8.6内核测试此补丁、以查看 USB 功能是否存在任何问题。
尊敬的 Tashiro-San:
客户尝试了补丁、但发生以下错误。
这是 USB 打印机小工具驱动程序打印的一次性警告、不应影响任何功能。 可以忽略该消息。
您是否可以要求客户检查除此警告消息之外是否有任何 USB 问题?
尊敬的 Tashiro-San:
客户是否对测试结果有任何更新?
您好、Bin、
除了客户侧的此警告外、没有 USB 功能问题。
现在可以将其关闭。 如果他们看到功能问题、他们会告诉我们。
谢谢。此致、
田代浩一郎
尊敬的 Tashiro-San:
感谢您的更新。 我将关闭该主题。