路由器选择breed时的GPIO引脚

科普内容

路由器进breed的步骤:路由器断电,按住复位键不松手再插电源,等待5秒左右路由器灯爆闪再松手,网线插路由器lan口与电脑连接,访问192.168.1.1即可看到Breed恢复控制台。
为何用来恢复出厂设置的复位键会成为进breed的开门钥匙?
原理和单片机中按键检测(下图中3 4)类似。
以图中4为例,原本GPIO检测输入电压一直为GND(即二进制“0”),当按键按下,线路导通,GPIO检测到输入电压变为VCC(即二进制“1”)。这种“0”变“1”称为“高电平触发”,图中1 2 3原理相同。

GPIO点亮LED和检测按键的示意图
CPU通过GPIO上电压的变化来检测按键是否被按下并做出对应反应——正常开机时按键按下会触发WPS功能,长按则会触发恢复出厂,所以同理,breed设计为当开机时检测到按键按下则会停止引导固件并进入breed。如下图
breed检测到按键按下会停止引导固件并进入breed

起因

拿到新的路由器大概第一件事就是刷不死breed,下载breed时根据复位键不同下载的也不同。(说人话就是路由器的RESET键在内部和CPU第几个引脚连接?),刷错会导致刷固件后按住复位键也无法进入breed,因为根本检测不到按键。

下图中mtk7620处理器路由器的通用breed根据复位键不同也分为好几种。
image.png

解决方案

如果不清楚自己手里路由器复位键是多少,可以先随便先用编程器刷任意一个7620的,因为此时还没有固件,得益于breed的另一个特性“固件引导失败自动进入breed”

固件引导失败自动进入
随后用telnet登录breed控制台telnet 192.168.1.1
使用breed中检测GPIO引脚的工具btntst控制台会打印所有GPIO引脚变化,可能会观察到许多不相干的引脚电平变化,使用btntst disable +引脚号忽略指定引脚。然后按复位键观察输出。

下图看到复位键连接GPIO #1,应当使用breed-mt7620-reset1.bin 复位键 GPIO#1

按键后GPIO1变化

参考链接

hackpascal原帖——R/QCA/MTK Breed,功能强大的多线程 Bootloader-恩山

扩展

路由器固件编译中的GPIO应用——控制LED

你可能感兴趣的:(路由器选择breed时的GPIO引脚)