GPIO 通常用于路由器设备中的按钮或 LED。 它们只能安全地提供(supply)或吸收(sink, 拉到GND)大约 4mA 的最大电流,激活时电压通常为 3.3V。 只有两种状态是可能的:高或低。 根据 GPIO 激活设备的方式,定义低电平有效或高电平有效。
高电平有效:GPIO 为高电平时设备被激活
低电平有效:GPIO 为低电平时设备被激活
在Linux中, GPIO可以通过SysFS接口访问 ( /sys/class/gpio/)
首先,需要得到 gpio的base
cat /sys/class/gpio/gpiochip*/base | head -n1
我的设备上,这个值是0
如果你的设备上,这个值是100, 你设置 GPIO 时,要加上这个base
比如gpio 10 , 就应该设置 100+10=110
将GPIO 51设置为高电平输出
echo "51" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio51/direction echo "1" > /sys/class/gpio/gpio51/value
用uci控制
uci show system | grep "system.led"
定义在 /etc/config/system
config led 'led_wlan5g' option name 'WLAN5G' option sysfs 'z6001:wlan5g' option trigger 'netdev' option mode 'link tx rx' option dev 'wlan0'
sysfs中的位置
/sys/class/leds/
查看某个led的触发情况
cat /sys/class/leds/z6001ax:nr_power/trigger [none] nand-disk timer default-on netdev phy0rx phy0tx phy0assoc phy0radio phy1rx phy1tx phy1assoc phy1radio
发现 none是被选中的,也就是没有触发
临时触发它
echo "default-on" > /sys/class/leds/z6001ax:nr_power/trigger
https://openwrt.org/docs/guide-user/base-system/led_configuration