【问题标题】:Turn USB power off/on with BeagleBone Black kernel >= 3.8使用 BeagleBone Black 内核 >= 3.8 关闭/打开 USB 电源
【发布时间】:2014-07-25 05:17:30
【问题描述】:

我需要:

  • 关机->休眠几秒->打开beaglebone black的USB电源

能够硬件重置连接到 USB 的设备(华为 E220 调制解调器)

已经尝试过软重置(使用 unbind/bind 和授权 0/1),但软件重置不足以使设备再次正常工作;该设备有一些奇怪的错误,这是由长时间使用(连接几天后)触发的。

使用 /sys/debug/omap_mux 找到了许多答案,但新内核中不再存在此设备。

由于这个问题花了几天时间才得到一个可行的答案,我决定把它贴在这里,连同答案,所以它可能对其他人有用。

【问题讨论】:

    标签: usb gpio beagleboneblack


    【解决方案1】:

    感谢我的朋友 Cleiton Bueno http://cleitonbueno.wordpress.com/ 为我找到了这个解决方案:

    先决条件:

    • apt-get install devmem2

    解决问题的代码:

    devmem2 0x47401c60 b 0x00
    sleep 1
    echo "usb1" > /sys/bus/usb/drivers/usb/unbind
    sleep 20
    echo "usb1" > /sys/bus/usb/drivers/usb/bind
    sleep 1
    devmem2 0x47401c60 b 0x01
    

    “devmem2”命令负责直接访问 beaglebone 的 GPIO3_13,它控制着打开/关闭 USB 端口的 IC。

    “unbind/bind”命令负责告诉usb驱动在上电后“重新扫描”端口。

    【讨论】:

    • 这非常有用,感谢您解决这个问题。操作的顺序似乎很关键,而且顺序不是 100% 可靠的。我的运气更好,顺序是“解除绑定”、“绑定”、关机、开机。就我而言,它专门用于重置 USB 集线器和所有下游设备。可靠性可能与集线器本身有关,而不是您的顺序。
    • 地址 (0x47401c60) 来自哪里?我想了解。
    • @DavideBerra 不是你问题的完整答案,但我确实挖掘了一些关于魔法值 0x47401c60 的信息。看看我在这个问题的答案中写了什么:stackoverflow.com/questions/37086057/…
    • 这正是我所需要的!但是,devmem2 不在 apt 中,因此安装命令失败。我发现这篇博文用于获取已编译的二进制文件:scivision.co/devmem2-on-the-beaglebone-black
    猜你喜欢
    • 2010-11-12
    • 2014-12-23
    • 2015-07-03
    • 1970-01-01
    • 2016-01-21
    • 2014-12-15
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    相关资源
    最近更新 更多