beagleboneblack - 使用 GPIO3_13 (GPIO109) 禁用 USB VBUS
问题描述
我找到了dev-USB-PWR-CTL-00A1.dtbo
文件。(我认为这是它的源代码)。
使用此文件,我尝试使用以下命令将 USB1_DRVVBUS 引脚公开为 GPIO (GPIO3_13):
echo dev-USB-PWR-CTL > /sys/devices/platform/bone_capemgr/slots
echo 109 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio109/direction
我看到新的 Cape 条目slots
和新的gpio
文件树。
但是当我用命令改变值时
echo 0 > /sys/class/gpio/gpio109/value
我在此文件中看到了新值,但 USB VBUS 没有任何反应。
我错过了什么?
(在你问我真的需要这个之前:让我们暂时把后果放在一边。)
解决方案
如果您使用的是最近的 elinux.org Debian 映像(必要的设备树覆盖已于 2015 年 6 月合并),它包含一个设备树覆盖(带有注释“除非您知道自己在做什么,否则不要加载此披风!! !”)。这使用 hack 将usb1_drvvbus
信号公开为虚构的 LED,然后可以使用/sys
.
首先,加载 dev-USB-PWR-CTL-00A1.dtbo 设备树覆盖。对于最近的设置(所有 dtbo 都由 uboot 加载,然后在引导时传递给内核),这可以通过添加和重新启动dtb_overlay=/lib/firmware/dev-USB-PWR-CTL-00A1.dtbo
来完成/boot/uEnv.txt
(旧的内核/uboot 将需要使用旧的配置机制,如 中所述/boot/uEnv.txt
)。
然后你可以这样做:
echo 'usb1' > /sys/bus/usb/drivers/usb/unbind
echo 0 > /sys/devices/platform/leds/leds/usb_hub_power/brightness
sleep 1
echo 255 > /sys/devices/platform/leds/leds/usb_hub_power/brightness
echo 'usb1' > /sys/bus/usb/drivers/usb/bind
... 重启连接到 USB1 的设备。
推荐阅读
- oracle - 如何在 Oracle 12.2 中从短表名迁移到长表名,从 VARCHAR2(30) 迁移到 VARCHAR2(128)?
- unicode - Web 浏览器中的 Unicode 呈现为一组问号
- delphi - 如何在 Android 应用程序中使用 Delphi 中的 OpenDialog
- android - 将值从应用程序传递到另一个应用程序
- java - 按下按钮时,应在日期选择器上显示并计数一个数字
- maximo-anywhere - Maximo Anywhere 自定义应用程序不会缓存下载到设备的所有记录
- haskell - 如何在 Haskell 中进行类型反射
- angular - 使用带有动态 src 属性的 google 嵌入地图
- java - 有没有办法在spring boot的main方法中调用@Scheduled注解
- android - Xamarin WebView 上的相机