之前买了个newifi mini的路由器,CPU是mt7620a的,有7个led指示灯。现在想要把控制led灯的gpio引出来,方便其他驱动或应用的开发。
一、硬件部分
1、联想路由
现在想要把USB、5G、LAN、INTERNET这四个指示灯引出,原本是打算把WAN指示灯也引出来的,但是WAN指示灯没有被当作普通的gpio使用,所以没办法引出(引出了也没法当作gpio使用)。
2、将路由器拆开,去掉这四个led灯,以及对应的电容(如果不去掉,会影响i2c通讯),并将四个led灯对应的测试点连接杜邦线引出,认真观察电路板可以看出。另外也多引出一条电源线,也就是led灯的正极。
二、软件部分
1、进入/target/linux/ramips/dts/Y1.dts,修改如下
/dts-v1/; /include/ "Y1.dtsi" / { compatible = "lenovo,Y1", "ralink,mt7620a-soc"; model = "Lenovo Y1"; ethernet@10100000 { pinctrl-names = "default"; pinctrl-0 = <&ephy_pins>; mtd-mac-address = <&factory 0x4>; ralink,port-map = "llllw"; }; gpio-leds { compatible = "gpio-leds"; power1 { label = "lenovo:blue:power"; gpios = <&gpio0 9 1>; }; wlan1 { label = "lenovo:blue:wifi"; gpios = <&gpio3 0 1>; }; }; };
2、编译,重新烧写固件。
三、测试
1、四个led灯对应的gpio如下:
USB:gpio52
5G:gpio50
LAN:gpio55
INTERNET:gpio51
2、依次输入如下
root@OpenWrt:/sys/class/gpio# echo 50 > export root@OpenWrt:/sys/class/gpio# echo 51 > export root@OpenWrt:/sys/class/gpio# echo 52 > export root@OpenWrt:/sys/class/gpio# echo 55 > export
3、将引出来的四个gpio外接led灯,依次输入如下,并观察哪盏led灯亮起:
root@OpenWrt:/sys/class/gpio# echo out >gpio50/direction root@OpenWrt:/sys/class/gpio# echo out >gpio51/direction root@OpenWrt:/sys/class/gpio# echo out >gpio52/direction root@OpenWrt:/sys/class/gpio# echo out >gpio55/direction
就可以知道哪个引线对应哪个gpio。