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/AM5728:USB OTG 网络间歇性工作

Guru**** 2548020 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/612303/linux-am5728-usb-otg-network-works-intermittently

器件型号:AM5728

工具/软件:Linux

我们的设计中使用了 USB OTG 网络接口、但如果 USB 电缆连接到 OTG 端口、则在电路板上电或重新启动时、网络并不总是启动。

如果在网络出现时执行 dmesg | grep USB、我会看到:

[0.524827]   ldousb:由 VMAIN 供电
[7.755716]   extcon-USB-GPIO extcon_USB2:用于耗电元件 ID 的 GPIO 查找
[7.755729]   extcon-USB-GPIO extcon_USB2:使用器件树进行 GPIO 查找
[7.755738]   of_get_named_gpiod_flags:无法解析节点"/extcon_USB2[0]的"id-GPIOs"属性
[7.755807]   of_get_named_gpio_FLAGS:解析了节点'/extcon_USB2[0]的'id-GPIO'属性-状态(0)
[7.755862]   extcon-USB-GPIO extcon_USB2:消费类 VBUS 的 GPIO 查找
[7.755869]   extcon-USB-GPIO extcon_USB2:使用器件树进行 GPIO 查找
[7.755877]   of_get_named_gpio_FLAGS:无法解析节点"/extcon_USB2[0]的'VBUS-GPIO'属性
[7.755885]   of_get_named_gpio_FLAGS:无法解析节点"/extcon_USB2[0]的'VBUS-GPIO'属性
[7.755892]   extcon-USB-GPIO extcon_USB2:使用查找表进行 GPIO 查找
[7.755900]   extcon-USB-GPIO extcon_USB2:查找 GPIO VBUS 失败
[9.134194]   链接的模块:dwc3 (+) UDC_CORE virtio_rpmsg_BUS (+) AHCI_platform libhci pru_rproc libata pruss_intc scsi_mod SHA512_ae_ace_driver extcon_us_us_gpci_plat_mos_adc_generic wma_cru_ad_ip_ad_ad_a1_ote_remote_mage_mas
[9.388480]   usbcore:注册的新接口驱动程序 usbfs
[9.388533]   usbcore:注册的新接口驱动程序集线器
[9.388595]   usbcore:注册的新设备驱动程序 USB
[9.406011]   USB USB2:我们不知道该主机的 LPM 算法、禁用 LPM。
[9.407220]   dwc3 488d0000.usb: OTG:注册的主主机 xhci-hcd.2.auto
[9.407231]   dwc3 488d0000.usb: OTG:已注册共享主机 xhci-hcd.2.auto
[9.407239]   dwc3 488d0000.usb: OTG:只有在小工具寄存器之后才能启动
[10.516656]  usb0:主机 MAC 72:82:02:55:3E:25
[10.516708]  usb0:Mac 2a:A6:81:17:55:50
[10.516812]  dwc3 488d0000.usb: OTG:小工具注册
[11.259542]  IPv6:ADDRCONF (NETDEV_UP):USB0:链路未就绪
[40.751625]  IPv6:ADDRCONF (NETDEV_CHANGE):USB0:链路就绪

当它不起作用时、我会看到以下情况:

[0.524872]   ldousb:由 VMAIN 供电
[8.069976]   extcon-USB-GPIO extcon_USB2:用于耗电元件 ID 的 GPIO 查找
[8.069986]   extcon-USB-GPIO extcon_USB2:使用器件树进行 GPIO 查找
[8.069994]   of_get_named_gpiod_flags:无法解析节点"/extcon_USB2[0]的"id-GPIOs"属性
[8.070027]   of_get_named_gpio_FLAGS:解析了节点"/extcon_USB2[0]的"id-GPIO"属性-状态(0)
[8.070062]   extcon-USB-GPIO extcon_USB2:消费类 VBUS 的 GPIO 查找
[8.070068]   extcon-USB-GPIO extcon_USB2:使用器件树进行 GPIO 查找
[8.070075]   of_get_named_gpio_FLAGS:无法解析节点"/extcon_USB2[0]的'VBUS-GPIO'属性
[8.070081]   of_get_named_gpio_FLAGS:无法解析节点"/extcon_USB2[0]的'VBUS-GPIO'属性
[8.070087]   extcon-USB-GPIO extcon_USB2:使用查找表进行 GPIO 查找
[8.070093]   extcon-USB-GPIO extcon_USB2:查找 GPIO VBUS 失败
[9.500910]   链接的模块:dwc3 (+) UDC_CORE virtio_rpmsg_bus (+) SHA512_generic SHA512_ARM SHA256_generic HMAC MD5 SHA1_generic SHA1_arm_NEON extcon_gpio sha1_arm soc_mode_audio pru_rti_pru_pru_oti_mas pru_oti_pru_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_oti_
[9.670038]   usbcore:注册的新接口驱动程序 usbfs
[9.670093]   usbcore:注册的新接口驱动程序集线器
[9.670150]   usbcore:注册的新设备驱动程序 USB
[9.696746]   USB USB2:我们不知道该主机的 LPM 算法、因此禁用了 LPM。
[9.698112]   dwc3 488d0000.usb: OTG:注册的主主机 xhci-hcd.2.auto
[9.698121]   dwc3 488d0000.usb: OTG:已注册共享主机 xhci-hcd.2.auto
[9.698128]   dwc3 488d0000.usb: OTG:只有在小工具寄存器之后才能启动
[11.245905]  usb0:主机 MAC 8e:69:C8:f2:8f:16
[11.24599]  usb0:Mac B2:e8:AD:6d:ae:C8
[11.246064]  dwc3 488d0000.usb: OTG:注册了小工具

即使 ifconfig 中显示 usb0条目、当电缆连接时、似乎网络实际上并未出现。

这是/etc/network/interfaces 中的 usb0部分:

# EtherNet/RNDIS 小工具(g_ether)
使用者:/opt/scripts/boot/autoconfigure_usb0.sh
自动 usb0
allow-hotplug usb0
iface usb0 inet static
   地址192.168.7.2
   子网掩码255.255.255.0
   网络192.168.7.0
   网关192.168.7.1


我是否遗漏了任何内容?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是定制板吗? 您使用的是哪种 Linux 版本? 您能否发布原理图的 USB 部分?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们将 Ubuntu 16.04.1 LTS 与4.4.4.32-rt41-ge26c84b0ac 的内核版本配合使用。

    是的、这是一个定制板。 下面是原理图的 USB 部分:

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

    [引用 user="Heather Rysenga"]我们使用的是 Ubuntu 16.04.1 LTS 和4.4.4.32-rt41-ge26c84b0ac 的内核版本。[/quot]

    我们不支持 TI 器件上的 Ubuntu、请尝试使用 Processor SDK 文件系统来重现此问题。

    我无法看到 Processor SDK v4.0的问题。 USB 电缆始终保持连接、每次内核引导后运行'modprobe g_ether '时、控制台始终显示以下消息、这意味着 USB 主机枚举以太网小工具。

    [...] G_ETher 小工具:高速配置#1:CDC 以太网(ECM)

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

    这不是我们的问题。 模块已加载、即使在 OTG 不工作的情况下也是如此。 执行'lsmod | grep g_ether '时、我得到:

    G_Ether               5054   0
    USB_f_RNDIS        15626 2 g_ether
    U_ether               12945 3 USB_f_ECM、USB_f_RNDIS、g_ether
    libcomposite       43854 3 USB_f_ECM、USB_f_RNDIS、g_ether


    不过,我们找到了一种合理的解决办法。 似乎存在一种竞争情况、即如果在 udhcpd 服务启动时 USB 网络未就绪、它就不会出现。 我们的解决方案是在系统完成启动后、将"ystemctl restart udhcpd"添加到/etc/rc.local 以重新启动 udhcpd 服务、现在 USB 网络始终运行。