工具与软件:
使用当前运行 Linux 且基于 AM64x EVM 设计的硬件电路板。 对于 USB 设备配置、该问题来自 USB VBUS 未连接。
就背景知识而言、AM64x 硬件设计为插入背板、有一个主插槽(指定为 USB 主机)和第二个插槽(指定为 USB 设备)。 硬件上的 FPGA 会检测到该插槽、并相应地向 USB-ID 引脚发送信号。 背板上的信号仅包含 USB_DATA+和 USB_DATA-。 目的是将此 USB 连接用作 USB 上的以太网。 Linux 中提供此方面的软件支持。
我能够通过将背板第二槽连接器连接到 micro-USB b 电缆并连接到 AM64x EVM 板来验证 USB 主机(在背板的主插槽中)。 由于 VBUS 没有在背板上发出信号、因此我将 J23接头(USB0_VBUS)的引脚1连接到 EVM 上的+5V 电源、以便为 VBUS 供电。 Linux 在两块电路板上启动并在 EVM 电路板上执行"modprobe g_ether"后、USB Connected 和以太网 over USB 的工作效果非常好。 这似乎也验证了器件树对于定制电路板是正确的。
问题在于硬件设计的器件模式。 虽然硬件通过 USB-ID 正确地检测到 USB 设备模式、但是 VBUS 信号未连接到任何设备。 我目前正在尝试解决 Linux USB 驱动程序中的问题。
我修改了 cdns3驱动程序(源文件 drd.c:函数 cdns_get_vbus())、以对 VBUS 进行硬编码、使其始终返回有效。 这具有使驱动器完全启动的积极效果。 通过执行"modprobe g_ether"、"usb0"器件将出现、并可通过"ifconfig"进行修改。 但是、似乎没有发生 USB 数据信令。
这就引出了以下问题。
1. AM64x 上的内部 USB2.0 PHY 是否需要 USB0_VBUS 才能供电才能正常运行?
2. 是否 可以进行软件调整来启动 USB PHY?
如有任何问题、请告诉我。