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.

[参考译文] AM1808:有时 USB0_DRVVBUSn 驱动至低电平

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

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/607836/am1808-usb0_drvvbusn-drive-to-low-sometimes

器件型号:AM1808
Thread 中讨论的其他器件: StrikeOMAPL138

这是一款成熟的客户产品、最近他们将其销售给海外客户、最终客户报告有时 USB 连接的扫描器无法工作、现场检查发现 USB0_DRVVBUS 很低、因此 USB0_VBUS 上没有5V 电压、那么连接的扫描器无法工作。

终端客户购买了50套设备、大多数客户会不时报告此类问题。

通常用例是连接 USB 扫描仪、完成一些工作、将其放在一边或移到下一个房间、以便在不关闭机器电源的情况下为电池充电、再次使用时、扫描仪无法工作、 但其他功能通常是 AM1808正在运行、如果机器/AM1808重启、则会恢复运行。 USB0模块似乎已挂起。  

USB0_ID 通过0欧姆电阻下拉至 GND。

问:什么情况会导致此类问题? 由于尚未在客户实验室中重现此问题、哪些信息有助于解决此问题? 如果需要、客户将尝试获取更多详细信息、包括日志、寄存器值等、请提供一些线索。

客户在实验室中进行了一些实验、尝试重现问题、但未重现问题。

第一。 加电后、将 USB0_VBUS 减小到4.4V、USB0_DRVVBUSn 输出未改变、仍然为高电平。

2。 在上电期间保持 USB0_VBUS<4.4V、USB_DRVVBUS 为高电平。

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

    是否可以提供 CFGCHIP2寄存器的值? 以及他们的引导日志。 他们能否验证 PHY 初始化是否遵循器件 TRM 的第34.2.4节 USB PHY 初始化中的说明?

    此外、当 USB0挂起时、他们是否在控制台(dmesg)上看到任何类型的错误? 如果是、您可以共享日志吗?

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

    Yohan、

    [引用 user="Yordan Kovachev"]是否可以提供 CFGCHIP2寄存器的值?

    我会让客户来做。

    [引用 user="Yordan Kovachev"]以及他们的引导日志。 他们能否验证 PHY 初始化是否遵循器件 TRM 的第34.2.4节 USB PHY 初始化中的说明? [/报价]

    这是 Linux 系统、初始化是 Linux 驱动程序的一部分、我认为客户没有触及它。

    [引用 user="Yordan Kovachev"]当 USB0挂起时、他们是否在控制台(dmesg)上看到任何类型的错误? 如果是、您可以共享日志吗? [/报价]

    我会让客户来做。

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

    您好、Tony、

    此外、关于 DRVVBUS 的连接、根据我对 Sitara (AM335x)器件的使用经验、我在 开关侧看到了以下实现:

    这来自 Sitara 器件、但我认为这可能与 AM1808中的情况类似。  

    还请他们检查 USB 的所有 eratas:  
        

    此致、  
    Yordan

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

    Yordan

    是的、5V VBUS 由 USB0_DRVVBUS 控制、USB0_DRVVBUS 是 USB0的输出 IO 引脚。 现在的问题是、我们不知道 USB0_DRVVBUS 输出何时以及为什么低电平、因为 ID 引脚被拉至低电平、它是仅主机模式。

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

    抱歉、我可能没有正确地提出我的问题:
    [引用] 5V VBUS 由 USB0_DRVVBUS 控制、USB0_DRVVBUS 是 USB0[/引用]的输出 IO 引脚
    我是说您是否在上面的原理图中看到 USB0_DRVVBUS 上的下拉电阻器(来自 AM335x GP EVM、执行方式相同、但对于 USB1_DRVVBUS、在 Starterkit 和 BBB 上)。

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

    Yordan、

    下面是客户的实施方案、我发现 DP/DM 上添加的下拉电阻器存在一些违反、但我不确定问题是否与之相关、我认为它可能会影响信号质量和稳定性。 但不会通过输出 DRVVBUS 低电平导致 USB 从主机变为器件。

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

    Yordan、

    客户获取寄存器转储如下图所示、CHIPCFG2值未更改。 还有其他一些寄存器值发生了变化、您能帮您进行分析吗?

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

    很抱歉耽误你的答复。 我将查看并更新。

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

    Yordan、

    我们意识到它应该与 USB BABBLE 中断问题相关。 它由 AM335x 的 Linux 补丁修复。 但我没有找到适用于 AM1808 Linux SDK 的此类补丁。  

    我们需要有关如何修复旧 Linux 内核中的 USB BABBLE 问题的帮助? 客户使用2.6.33版内核 SDK/PSP

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好,Tony
    从您与 USB 专家的内部讨论中获取一些要点


    内核 v2.6.33非常旧。 客户是否可以迁移到支持 AM1808/OMAPL1-138的最新处理器 SDK v4.0?

    通常、要从 BABBLE 条件中恢复、BABBLE 中断处理程序必须执行
    -重置 MUSB 控制器;
    -重新配置控制器,例如端点和 FIFO;
    -进入主机模式;

    但是、如果代码变化不在2.6.33中、那么它不是很重要。

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

    Mukul、

    由于这是一个多年的成熟产品、客户几乎不可能升级整个软件系统。

    客户尝试在 BABBLE 中断处理程序中执行这些步骤、但无法正常工作。 操作可能不正确、因此需要 BU 提供更详细的程序。 尤其是对于第2步、哪些寄存器需要重新配置、以及哪个寄存器需要重新配置、之后。

    客户在出现问题后尝试重新安装 USB 驱动程序、可以恢复 USB、但耗时很长、不适合最终客户使用。 因此、希望通过 BABBLE 处理程序恢复它、它应该更高效。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好,Tony
    您能否分享他们尝试的客户代码?

    他们如何重新置位 MUSB 控制器?

    我们还能看到执行 USB PSC 重置是否有帮助吗?

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

    Mukul、

    对于这3个步骤、很容易执行#1、#3来重置和重新启动会话。 但是对于步骤2、重新配置控制器、例如端点和 FIFO;在 Linux 下不容易执行、是系统调用、客户研究了 AM335x USB BABBLE 补丁、即 Linux 内核 V3.2、系统调用 API 是不同的、客户无法将其引用到内核 v2.6.33中实施

    因此问题在于不知道如何在 Linux v2.6.33下重新初始化 USB 配置寄存器、因此 PSC 复位不会有所帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Tony 理解。
    由于客户已查看 AM335x v3.2内核、但由于 USB 框架差异、无法将其反向移植到2.6.33。 我们最好将他们推荐给他们、让他们参与这项移植工作。
    我们将无法帮助完成旧版内核的一次性迁移工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    BIN、Mukul、

    客户捕获的寄存器 INTRUSB = 0x0C 故障后、位2 RESET_BABBLE 被置位。

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

    今天、我们在 Logicpd 电路板上再现了 LCDK 上 ESD 冲击的故障、其中包含最新的 Processor SDK 和旧的 PSP SDK、但 USB 在这两个电路板上都无法恢复

    在具有处理器 SDK 的 LCDK 上、转储 USB 寄存器如下所示:

    root@omapl138-lcdk:/sys# cat 内核/调试/musb-hdrc.1.auto/regdump
    MUSB (M) HDRC 寄存器转储
    地址:00
    电源:e0
    帧:0295
    索引:03
    测试模式:00
    TxMaxPp:e000
    TxCSRp:0000
    RxMaxPp : 0000
    RxCSR:001f
    RxCount:001e
    IntrRxE:001e
    IntraxE:001f
    IntrausbE:F7
    DevCtl:80  //失败前,为5d。
    VControl:00000000
    HWVers:0000
    链接信息: 5c.
    VPLen:3c
    HS_EOF1:80
    FS_EOF1:77
    LS_EOF1:72
    SOFT_RST:00
    DMA_CNTLch0:0000
    DMA_ADDRch0:00000000
    DMA_COUNTch0:00000000
    DMA_CNTLch1:0000
    DMA_ADDRch1:00000000
    DMA_COUNTch1:00000000
    DMA_CNTLch2:0000
    DMA_ADDRch2:00000000
    DMA_COUNTch2:00000000
    DMA_CNTLch3:0000
    DMA_ADDRch3:00000000
    DMA_COUNTch3:00000000
    DMA_CNTLch4:0000
    DMA_ADDRch4:00000000
    DMA_COUNTch4:00000000
    DMA_CNTLch5:0000
    DMA_ADDRch5:00000000
    DMA_COUNTch5:00000000
    DMA_CNTLch6:0000
    DMA_ADDRch6:00000000
    DMA_COUNTch6:00000000
    DMA_CNTLch7:0000
    DMA_ADDRch7:00000000
    DMA_COUNTch7:00000000
    ConfigData:00
    BabbleCtl:00
    TxFIFOSz:05
    RxFIFOSz:05
    TxFIFOADD:0108
    RxFIFOADD:0108
    EPInfo:44.
    RAMInfo:0a
    root@omapl138-lcdk:/sys#

    root@omapl138-lcdk:/sys# devmem2 0x01e0040a
    /dev/mem 已打开。
    映射到地址 bb6f2a000的内存。
    在地址0x01E0040A (bb6f2a408):0xF700001E 处读取
    root@omapl138-lcdk:/sys#

    默认的 omapl138-lcdk-linux-04.00.00.04.img 中是否启用了 babble 恢复机制

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

    对于 omapl138、似乎无法在 Processor SDK v4.0.0.4内核中正确识别 babble 条件。 我正在努力解决这些错误。

    我现在可以告诉大家、TI v4.9内核中的 BABBLE 恢复机制本身确实适用于 Omapl138、软件错误位于识别 BABBLE 条件的逻辑中。 在我致力于解决错误的过程中、我认为您可以让客户立即开始在其 v2.6.33内核中反向移植 BABBLE 恢复实现。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Tony、

    请将以下两个内核补丁应用于处理器 SDK v4.0.0.4内核。 BABBLE 恢复现在应该适用于 Omapl1。

    e2e.ti.com/.../0001_2D00_usb_2D00_musb_2D00_Check_2D00_for_2D00_host_2D00_mode_2D00_using_2D00_is_5F00_host_5F00_active_2D00_on.patch.txt

    e2e.ti.com/.../0001_2D00_usb_2D00_musb_2D00_da8xx_2D00_fix_2D00_babble_2D00_condition_2D00_handling.patch.txt