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.

[参考译文] Linux/AM3352:USB 控制器问题

Guru**** 2582405 points
Other Parts Discussed in Thread: AM1808

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/631486/linux-am3352-usb-controller-problem

器件型号:AM3352
主题中讨论的其他器件:AM1808

工具/软件:Linux

你(们)好  

最近 、我 的客户在 AM335x 平台上遇到了 USB 问题。

在平台上、USB1用作 USB 主机、用于连接2D 条形码扫描仪 USB 设备。

在他们进行快速插件和插件测试之前没有出现任何问题。 在此测试中、将插入2D 条形码扫描仪 USB 设备、然后将其插入、再插入、再插入、再插入… 非常高的速度运行。 这意味着 USB 设备会持续连接、然后断开连接。

USB 将在某个时间停止工作。 仔细检查后发现系统不再枚举 USB 设备。   

如果出现问题、只有先关闭电源再打开 USB 设备、或者先将其插入电源、才能恢复 USB 状态。

日志可作为附件找到。  

然后在调试之后,我发现可以通过使用命令“echo b >/proc/driver/musb_hdrc.1”手动生成 BABBLE 中断来解决这个问题。

完成此操作后、USB 设备可以正常工作。 日志可作为附件进行检查。

 

这里我有3个问题:

  1. 您是否知道这个问题是如何发生的、以及为什么 BABBLE 中断可以解决这个问题?
  2. 是否有任何驱动程序代码修补程序可以帮助恢复这种情况,而不是手动输入 echo 命令?
  3. 我正在挖掘根本原因,因为在 AM1808平台上,我们有类似的问题观察结果。 您可以检查上一个电子邮件循环。 由于 AM1808在 Linux 中未提供/proc/driver/musb_hdrc.1,因此它是一个非常旧的平台。 我们在这方面几乎不能取得任何进展。 我想知道此 AM335x 解决方案是否能提供帮助。

 

如果您有任何意见、请随时告诉我! 谢谢!

e2e.ti.com/.../succeeded_5F00_recovery_5F00_log.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Steven、

    [引用用户="Steven Liu1"]“echo b >/proc/driver/musb_hdrc.1”。

    系统似乎使用 SDK6.0、对吧?

    [引用 user="Steven Liu1"]您是否知道这个问题是如何发生的、以及 BABBLE 中断为什么可以解决这个问题?

    我们需要一个调试日志来查看发生了什么。 请在 tid81xx.c 中打开 tid81xx_interrupt()中的调试消息,然后再次运行测试,直到问题发生。

    驱动程序处理 BABBLE 中断、该中断将重置 USB 子系统和驱动程序堆栈、因此手动生成 BABBLE 中断将触发 USB 子系统重置、从而解决任何 USB 锁定。

    [引用 user="Steven Liu1"]是否有任何驱动程序代码修补程序可以帮助恢复这种情况,而不是手动输入 echo 命令?

    我们必须了解什么是 USB 锁定才能找到解决方案。 生成 BABBLE 中断的回显命令只是一种权变措施。 最重要的是、直到我们知道 USB 锁定在哪里、我们才知道要修补的内核在哪里。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    今天、我得到了 Mindray 的反馈、因为他们重现了这个问题。  

    有关消息日志、请参阅随附的文件。  

     在[3374.819091]之后、插入和拔出 USB 器件时不会产生中断。  

    e2e.ti.com/.../Mindray_5F00_USB_5F00_AM335X_5F00_dmsg.log

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Steven、

    在时间戳[3374.819091]、usbintr = 0x80时、这意味着发生了 VBUS 错误、USB 控制器退出主机模式、因此无法再枚举任何器件。

    请检查客户电路板的 VBUS 线路上是否有最小120uF 的电容、靠近 USB 端口(插座)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    由于 USB1的设计如下所示、USB1_VBUS 被内部连接至一个5V 电源轨。 因此、我要求客户测试这个 USB1_VBUS 来检查电压、看看它是否小于4.75V。  

    我的问题是、低于4.75V 的5V 电源轨是否是此 USB VBUS 错误的唯一原因? 或者还有其他问题吗?

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Steven、

    USB 规范要求 VBUS >=4.4V、但我不确定它是否小于4.75V 会导致问题。

    但是、对于 SDK6.0 (内核 v3.2)、如果将 USB1_VBUS 直接连接到仅主机端口的5V 电源轨、则应应用以下链接中的补丁。

    http://e2e.ti.com/support/arm/sitara_arm/f/791/p/306183/1068885#1068885

    该图显示了主机和器件之间的 USB 连接不使用标准 USB 连接器、请确保连接器在插入时先连接 VBUS/接地端、在插入后连接 DP/DM、在拔下时先断开 DP/DM 和 VBUS/接地端。 否则、不会对行为进行特征描述。

    在第一个帖子中、您提到了测试是否以非常高的速度插入/拔出、它有多高? 每分钟多少次?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bin、
    是的、我已要求他们添加补丁、但问题仍然存在。

    该图显示了主机和器件之间的 USB 连接不使用标准 USB 连接器、请确保连接器在插入时先连接 VBUS/接地端、在插入后连接 DP/DM、在拔下时先断开 DP/DM 和 VBUS/接地端。 否则、不会对行为进行特征描述。
    >执行插拔操作时、VBUS 始终处于开启状态。 这是否违反 USB 行为规则?

    在第一个帖子中、您提到了测试是否以非常高的速度插入/拔出、它有多高? 每分钟多少次?
    >每秒大约2次。 一分钟内、我想最大时间可能会超过100。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Steven、

    让我们等待客户对 USB1_VBUS 的测试结果、我不确定其他什么会导致 VBUS 错误。

    [引用 user="Steven Liu1">>执行插拔操作时、VBUS 始终处于开启状态。 这是否与 USB 行为规则相违背?

    是的、这是 USB 规范中定义的连接和分离过程。 但是、由于 USB 器件(集线器)是自供电的、因此在该设计中影响可能更小。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Steven、
    这不是受支持的用例。 此客户正在使用非标准连接器(而不是 USB-IF 设计/认可的连接器)*和*手动拔下/重新插入此非标准连接器~每秒2次,而不是~100次迭代,以引发此问题。

    这些变量不包含在 USB-IF 测试规范或我们的内部测试程序中。

    我们可以在时间允许的情况下对此进行调查、但不能将其视为优先事项。