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/AM3352:如何重新启动 USB 接口

Guru**** 2596645 points
Other Parts Discussed in Thread: AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/585926/linux-am3352-how-to-restart-usb-interface

器件型号:AM3352

工具/软件:Linux

你好!

基于 am3352的 Linux (4.4.41)板在调制解调器连接后工作时遇到了烦人的问题。  当连接字段或带宽较低时、调制解调器固件似乎经常崩溃。 调制解调器固件崩溃通常会触发 udev 重新加载重新建立连接的 USB 驱动程序,但并非总是如此。 因此、我有一个连接监视器定期观察连接(10分钟)。 如果缺少远程连接,显示器将使用/sys/kernel/debug/musb-hdrc.YY.auto/softconnect 接口对 USB 电源进行排序。 通常这会触发 udev 并恢复调制解调器连接,但并非总是如此。 因此,如果连接中断了两小时,监护仪将引导卡。 但是,引导会干扰操作-所有处理都是从头开始的。 这种随机崩溃的调制解调器很可能会导致随机模块崩溃。 因此、当电源时序不再有用时、内核附近的东西会损坏。 从日志中可以看出、"使用 musb-hdrc 的新高速 USB 器件编号 XX "在电源排序后不再出现。 很可能某些 USB 驱动程序已被冻结、但无法准确找出有罪的驱动程序? 因此、应重新启动整个 USB 接口。

我已经学习了重新启动 USB 接口。 我尝试删除所有 USB 驱动程序并按以下顺序重新加载它们:

a)关闭 USB 电源(否则无法删除某些 USB 驱动程序)

b)删除 USB 驱动程序(modprobe -r...)

c)重新加载 USB 驱动程序

d)打开 USB 电源

d)的问题是、删除 USB 驱动程序也会删除 c)中未恢复的/sys/kernel/debug/musb-hdrc.YY.auto/softconnect。

我的问题是:

1) 1)是否有任何简单的方法在不重新启动卡的情况下重新加载 USB 接口?

2) 2)如果没有、如何重新加载此/sys/kernel/debug/.... 以便我可以按照上面的顺序进行操作?

谢谢、

Matti

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

    您好、Matti、

    我建议您使用以下命令通过最简单的软件方式重置 USB 器件:

    CD /sys/bus/usb/devices

    ECHO 0 > 1-1.2/授权

    ECHO 1 > 1-1.2/授权

    如果您不确定 USB 设备 ID (调制解调器)、则可以拔下插头并将其插入、您将在控制台上看到一些调试消息、如:

    USB 1-1.2:使用 xhci-hcd 的新型低速 USB 器件编号3

    .

    这将帮助您找到调制解调器 ID (例如1-1.2)。

    BR

    Tsvetolin Shulev

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的建议:Tsvetolin。
    我在办公桌上用一张卡进行了试验。 我担心这种方法的问题是调制解调器固件可能随时丢失。 当它下降时、此方法所需的所有内核结构都将被销毁、并且无法重新建立连接。 我可以在驱动 USB 掉电之前尝试一下、因为它也会破坏所需的结构。 再说一遍、主要问题实际上是、有时在电源定序后调制解调器不再被枚举。 因此、会混淆 udev 或某些内核驱动程序为 udev 提供事件或同时提供事件。 因为引导帮助我尝试仅"引导" USB 接口。 遗憾的是、当我通过移除和重新插入 USB 模块来模拟此仅 USB 引导时、似乎松开了用于控制 USB 电源的内核/调试连接。
    我的内核具有使用"Compiled"选项设置的 CONFIG_DEBUG_FS、因此我无法重新加载它、我不知道是否可以将它编译为可加载模块。
    谢谢、
    Matti
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这有点令人困惑,但内核模块需要重新加载才能获得 sysfs 接口:/sys/kernel/debug/musb-hdrc.YY.auto/softconnect 是 musb_hdr 的子级 musb_dsp。 在加载 MUSB _DSP 后、会创建上述接口、打开 USB 电源并枚举调制解调器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此、需要执行此操作才能重新加载 USB 接口。