主题中讨论的其他器件:TUSB2036、
工具/软件:Linux
团队、
我正在使用基于 AM3352的客户网关设计、并将一个3端口集线器 TUSB2036器件连接到 USB0、而 USB0又被配置为仅主机。
要求是使用连接到 u-boot 为目标文件系统映像安装的下行集线器端口之一的 USB 大容量存储器件来调试 eMMC 闪存
我们将 USB_DRVVBUS 输出连接到 USB 开关、将 VBUS 环回 AM3352以满足 MUSB 控制器状态机的要求、但否则 TUSB2036在每个端口上都有下行开关、并配置为自供电集线器。
u-boot 存在问题、首先可靠地检测下游集线器、其次在检测到集线器时正确枚举连接到下游集线器端口的 USB MSD 和 USB 以太网设备。
当外部供电集线器直接连接到 USB0 (使用绕过板载 TUSB2036的分线电缆)时、安装连接的器件也不会出现问题、这与此类似
我们的理解是、USB 模块在用作主机时对 USBn_VBUS 进行了两次检查。 顺序:
1) 1)确保在我们将 USBn_DRVVBUS 置为有效(VBUS 电源开关控制)之前不存在 VBUS。 MUSB 控制器具有双角色功能,因此我们需要确保在提供 VBUS 之前不会提供 VBUS。 对于将 VBUS 硬接线至系统5V 的实施、可通过 SW 覆盖此检查。
2) 2)确保 VBUS 在 Us 发出 DRVVBUS 后的100ms 内有效(>=4.4V)。 此处用于感应 VBUS 电源开关 OC,因为我们没有用于 OC 的分立引脚。 不能覆盖此选项。
TUSB2036本身将在硬复位或软复位15ms 后向 USB_DP0施加1K5上拉电阻、以向 AM3352上的上行 USB0端口提供信号可用性。 然后、在转换到"睡眠"模式之前、它将等待上游控制器连接长达3ms。
我们看到、当 u-boot USB 集线器代码尝试配置集线器并枚举端口时、VBUS 会下降。 启用调试会使其工作(大部分)、但仍会出现时序问题。 仍然不清楚代码是强制 VBUS 掉电、还是 USB 模块在内部执行。
初始化 USB 控制器和下游 TUSB2036集线器器件时、似乎存在细微的时序相互依存关系。
以下是 u-boot 报告的摘录、包括 HUB 产品文本:
musb_lowlevel_init:DEVCTL = 19 musb_lowlevel_init:DEVCTL = 5D _musb_reset_root_port:电源= E0 _musb_reset_root_port:DEVCTL = 5D 扫描总线0器件... 新器件0 _musb_reset_root_port:电源= E0 _musb_reset_root_port:DEVCTL = 5D 设置地址1 get_conf_no 0结果25、wLength 25 if 0、EP 0 ##EP maxpacketin[1]= 1 设置配置1 新器件字符串:MFR=0、产品=1、 USB 设备制造商0语言 ID 0x409 通用 USB 集线器 串行编号 1 USB 设备找到 扫描端 正在扫描存储设备的 USB ... 找到0个存储设备 正在扫描 USB 以太网设备... 找到0个以太网设备 =>
如果以串行方式引导 Linux、则我们始终无法从 USB 引导 Linux、最后记录以下内容:
[2.354562]正在等待根设备/dev/sda1... [2.468822] USB 1-1:使用 musb-hdrc 的新型全速 USB 器件编号2 [2.611069]集线器1-1:1.0:找到 USB 集线器 [ 2.614973]集线器1-1:1.0:检测到3个端口 [2.620276] musb-hdrc musb-hdrc.0.auto:在 a_host 中 VBUS_ERROR (89、 -19 [ 3.998796] USB 1-1:使用 musb-hdrc [4.140803]集线器的新全速 USB 器件编号3:集线器1-1:1.0:找到 USB 集线器 [ 4.144696]集线器1-1:1.0:检测到3个端口 [4.428794] USB 1-1.2:使用 musb-hdrc 的新全速 USB 器件编号4 ;USB 1642:未在顶部运行 连接到高速集线器 [5.372200] aSix 1-1.2:1.0 eth0:寄存器'aixe'、位于 usb-musb-hdrc.0.auto-1.2、ASIX AX88772 USB 2.0以太网、7c:C3:A1:86:9a:4c
虽然它在第二次尝试时确实找到了以太网适配器一次、但似乎没有安装大容量存储设备。
我们尝试插入延迟并将 USB 集线器保持在复位状态、直到 MUSB 控制器启动、但是连接和设备操作仍然非常不稳定。
您能否评论要使用的正确初始化序列以及任何时序或驱动程序时序依赖项。
此致、
Garry
