主题中讨论的其他器件:AM3354
工具/软件:Linux
大家好、
我们拥有用于开发的带有 AM335x 和 SDK7的定制板。 我们的设计中提供了两个用于连接小工具器件的 USB 主机端口。 我们观察到的问题是 USB 设备在插入时有一段时间没有响应。 仅当两个端口使用 ex 时才会发生此问题。 USB 端口1已与触控笔驱动器连接,并在第二个端口上连接 USB 键盘。 尝试连接键盘设备时随机出现此问题。
应用了以下链接中的补丁、但运气不好、
有人可以帮助吗?
谢谢-Durai
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
大家好、
我们拥有用于开发的带有 AM335x 和 SDK7的定制板。 我们的设计中提供了两个用于连接小工具器件的 USB 主机端口。 我们观察到的问题是 USB 设备在插入时有一段时间没有响应。 仅当两个端口使用 ex 时才会发生此问题。 USB 端口1已与触控笔驱动器连接,并在第二个端口上连接 USB 键盘。 尝试连接键盘设备时随机出现此问题。
应用了以下链接中的补丁、但运气不好、
有人可以帮助吗?
谢谢-Durai
[引用用户="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 部分;
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 速度从高速变为全速。 到目前为止、这些时间尚未观察到任何问题、但仍在进行测试以确认这些更改确实解决了问题。
有什么想法吗? 为什么它不能在高速下工作?
谢谢
杜莱