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/processor-SDK-AM335X:USB 键盘问题

Guru**** 2540720 points
Other Parts Discussed in Thread: AM3354

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/593062/linux-processor-sdk-am335x-usb-keyboard-issue

器件型号:PROCESSOR-SDK-AM335X
主题中讨论的其他器件:AM3354

工具/软件:Linux

大家好、

我们拥有用于开发的带有 AM335x 和 SDK7的定制板。 我们的设计中提供了两个用于连接小工具器件的 USB 主机端口。 我们观察到的问题是 USB 设备在插入时有一段时间没有响应。 仅当两个端口使用 ex 时才会发生此问题。 USB 端口1已与触控笔驱动器连接,并在第二个端口上连接 USB 键盘。 尝试连接键盘设备时随机出现此问题。

应用了以下链接中的补丁、但运气不好、

有人可以帮助吗?

谢谢-Durai

 

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    USB 专家已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Durai、

    没有响应时,是否看到任何 dmesg 错误/故障日志?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Dwarakesh、

    dmesg 中的 USB 没有错误/故障响应

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

    我建议使用以下方法获取更多日志/线索:
    1.为 MUSB 驱动程序启用 DEV_dbg 日志记录。
    2.尝试使用 USB 分析仪(如果可用)
    或者、您可以尝试使用 CONVIFG_USB_MON 内核选项来检查更多日志记录。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    杜莱、

    以下是调试此问题的几个步骤。

    1.您是否已将 DTS 文件中的两个 USB 端口的 dr_mode 更改为"host"?
    请分享两个 USB 端口的原理图的 USB 部分;
    3.连接键盘但未枚举时,请转储 MUSB devctl 寄存器。 如果键盘连接到第二个端口(AM335x 引脚命名中的 USB1接口)、则使用控制台命令"devmem2 0x47401c60 b"。 如果它的值是*not * 0x19,USB 控制器处于不正确的状态,上面的前两项可能会告诉您什么是错误的。
    4.如果 devctl 寄存器为0x19、请在连接键盘时使用示波器探测 USB1_VBUS、USB1_drvbus、USB1_DP 和 USB1_dm 信号。 我们需要检查电气枚举是否正确。

    一旦我们到达那里、我将提供更多指令。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Bin Liu ]Durai、

    请在网上找到答案  

    1.您是否已将 DTS 文件中的两个 USB 端口的 dr_mode 更改为"host"?

    已将 USB 端口配置为"主机"设备  

       MUSB:USB@47400000{
                状态="正常";

                控制@44e10000{
                   状态="正常";
                       
                };

                USB-phy@47401300{
                   状态="正常";
                        
                };
        
                USB-phy@47401b00{
                   状态="正常";
                };

                USB@47401000{
                   状态="正常";
                                           DR_MODE ="主机";
                };

                USB@47401800{
                   状态="正常";
                   DR_MODE ="主机";
                };

                        DMA 控制器@07402000 {
                   状态="正常";
                };
             };
    请分享两个 USB 端口的原理图的 USB 部分;

    限流配电开关
    Inline image 1
    ESD 保护和 USB 插座类型 A
    Inline image 2
    AM3354 USB 部分:
    Inline image 3


    3.连接键盘但未枚举时,请转储 MUSB devctl 寄存器。 如果键盘连接到第二个端口(AM335x 引脚命名中的 USB1接口)、则使用控制台命令"devmem2 0x47401c60 b"。 如果它的值是*not * 0x19,USB 控制器处于不正确的状态,上面的前两项可能会告诉您什么是错误的。

    如果出现问题、我们将尝试重现问题、运行 devmem 命令并让您知道这些值。


    4.如果 devctl 寄存器为0x19、请在连接键盘时使用示波器探测 USB1_VBUS、USB1_drvbus、USB1_DP 和 USB1_dm 信号。 我们需要检查电气枚举是否正确。

    一旦我们到达那里、我将提供更多指令。

    请查看原理图并向我们提供您的反馈  

    [/报价]

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

    您好、Bin、

    捕获了信号并进行了连接。  

    当 devctl 寄存器显示0x19时捕获的以下连接信号。

    e2e.ti.com/.../UsbSignalsCaptured_5F00_DevCtrl_5F00_Value_5F00_0x19.zip

    当键盘设备连接到 USB1端口和 USB 拇指驱动器连接到 USB2端口时、捕获到以下连接的信号。 拔下拇指驱动器时、键盘未枚举。

    e2e.ti.com/.../UsbSignalAtUsbKeyboardHang_5F00_DevCtrlValue_5F00_0x5d.zip

    此致

    杜莱

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

    杜莱、

    您上面提供的信息告诉我们、在连接 USB 设备后、DevCtl 寄存器是0x5D、这似乎意味着您从错误的 USB 端口读取该寄存器(除非您有我从未见过的高速 USB 键盘)。 因此、请根据我在下面的信息确认您从键盘连接到的 USB 端口读取 DevCtl 寄存器。

    您将两个 USB 端口称为 USB1和 USB2、它们不是我们通常为 AM335x 调用的名称。 我们将它们称为 USB0和 USB1、以匹配 AM335x 上的引脚命名。 USB0端口具有前缀为"usb0_"的引脚名称、而 USB1端口具有数据表中前缀为"USB1_"的引脚名称。 两个 USB 控制器是相同的、因此它们都有一个 DevCtl 寄存器、但是 USB0的地址为0x47401460、而 USB1的地址为0x47401c60。 因此、请检查您的设计以确保您读取了键盘连接到的端口的 DevCtl 寄存器。

    顺便说一下、您上面所附的原理图是损坏的、我无法下载它们。 请重新上传。

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

    您好、Bin、

    感谢您提供信息。 已将 USB 键盘连接至 USB1端口、将拇指驱动器连接至 usb0端口。 连接并枚举键盘时、请将 USB1端口(0x47401c60)的 Devctl 寄存器值0x3D 设置为红色。

      

    当我们尝试从 usb0端口多次拔下和插入拇指驱动器时、在特定点键盘未枚举连接在 USB1中的键盘。 这次将 来自0x47401c60的 Devctl 值设置为红色、 它看起来是相同的值0x3D。  

    已卸下键盘并将显示0x19的 Devctl 值变为红色。 请在 下方查找捕获的信号  

    e2e.ti.com/.../USB1SignalCapturedDevCtrlValue0x19.zip

    请找到下面的原理图

     e2e.ti.com/.../USB_5F00_Interface.pdf

    此致

    杜莱

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

    杜莱、

    现在0x3D 有意义、这意味着 USB 控制器仍然检测到 USB 键盘。 发生问题时、您是否有 USB 协议分析器来捕获 USB1端口的总线跟踪?

    [引用 user="Durai Samy">当我们尝试从 usb0端口多次拔下拇指驱动器并在特定点插入拇指驱动器时,键盘未枚举连接在 USB1中的键盘。 [/报价]

    在 usb0端口上插入/拔下拇指驱动器时、USB 键盘是否保持在 USB1端口中、或者您也拔下/插入它?

    如何连接 USB1_DRVVBUS 和 VBUS_USB1信号? 它们不会显示在您所附的原理图中。

    是否可以使用最新的处理器 SDK 进行测试、以查看此问题是否仍然存在?

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

    您好、Bin、  

                箱、

                发生问题时、您是否有 USB 协议分析器来捕获 USB1端口的总线跟踪?

    我们不使用 USB 协议分析器来检查此问题。  

                箱、

                 在 usb0端口上插入/拔下拇指驱动器时、USB 键盘是否保持在 USB1端口中、或者您也拔下/插入它?

    是的、在 usb0端口上插入/拔下拇指驱动器时、键盘保持在 USB1端口中。  

                箱、

                 如何连接 USB1_DRVVBUS 和 VBUS_USB1信号? 它们不会显示在您所附的原理图中。

    USB0和 USB1两个信号的连接是相同的。

    请找到下面的 USB 连接和放置方框图。 USB 信号通过双绞线电缆从主板路由到后板。

    这会造成问题吗?  

    e2e.ti.com/.../AM3354_5F00_USB_5F00_INTERFACE.pdf

    谢谢  

    杜莱  

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

    [引用用户="Durai Samy"]

    请找到下面的 USB 连接和放置方框图。 USB 信号通过双绞线电缆从主板路由到后板。

    这会造成问题吗?  

    [/报价]

    这不是理想情况、它可能会导致信号完整性问题、但我不确定它是否会导致此特定问题、您提到了 USB1 (键盘连接到的位置) devctl 为0x3D、这意味着键盘仍被枚举。 有趣的是、当问题发生时、内核不显示任何日志...

    在您的初始报告中、您提到了插入/拔下键盘会导致键盘停止响应、但稍后您说插入/拔下 usb0上的拇指驱动器会导致 USB1键盘停止工作。 您能否确认您到底采取了哪些措施来触发问题? 您插入/拔出了多少次? 我在 AM335x GP EVM 上尝试过类似的过程、但未发现任何问题。

    电路板上的 lsusb 命令显示键盘的 USB 地址、请在问题发生前后检查地址编号是否相同。

    枚举键盘后、Linux 将生成/dev/input 应用程序将从此节点获取键盘事件。 问题发生后、您能否尝试'cat /dev/input "、然后按键盘上的任何键、查看'cat'命令是否可以在 UART 控制台上转储任何垃圾?  

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

    您好、Bin、  

    感谢您的回复、我们在以下不同的测试 方法中发现了 USB 问题  

    1)。 在键盘未响应时多次插入和拔下键盘(通过相应的 LED 灯确认了"NMLK"键)

    2)。 键盘在一个端口中连接、并在键盘未响应时从另一个端口上多次插入和拔下拇指驱动器

    3)。 将80MB 文件从拇指驱动器复制到计算机时随机失败。 复制命令(CP)失败、出现输入/输出错误。 在调试日志中、失败时出现"USB 1-1:使用 musb-hdrc"重置高速 USB 器件编号2错误。  

    我们怀疑两个 USB 上的信号完整性问题、因此强制 USB 速度从高速变为全速。 到目前为止、这些时间尚未观察到任何问题、但仍在进行测试以确认这些更改确实解决了问题。  

    有什么想法吗? 为什么它不能在高速下工作?

    谢谢  

    杜莱

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Durai、感谢您提供这些新信息、这些问题很可能是由信号完整性问题引起的。 请先检查 EyeDiagram。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    杜莱、

    如 Bin 所述、信号完整性可能是这里的问题。 有关 PCB 布局要求、请参阅 SPRAAR7。