不死u-boot其实就是集成一个uip的小型web服务器,在firmware损坏时可以通过设定的按键启动该web服务,通过浏览器上传firmware到路由器的内存,然后写入spi或其他非易失存储器。
参考了https://github.com/pepe2k/u-boot_mod的源码,和Manfeel的博客文章 Web failsafe httpd 移植到uboot_mt7620的过程 http://blog.csdn.net/manfeel/article/details/13096075
u-boot_mod的源码对uip做了点修改,移植在mt7620上会遇到小文件可刷入,大文件失败的情况。采用uip的代码修改后解决该问题。
感谢Piotr Dymac和Manfeel。
感谢uip的作者Adam Dunkels。uip现在已发展成Contiki,一个轻量级的操作系统。
源码开源,已上传至github:
https://github.com/cleanwrt/u-boot_mt7620
说明:1、我的计算机上安装的是FreeBSD操作系统,和Linux软件工具等安装路径有些不同,在Linux平台编译时个别脚本可能需要修改。
2、当前配置是小度路由spi由8M改为16M,其他未作变动。
编译生成的文件:http://pan.baidu.com/s/1bn4ccI7
适用于小度路由,RAM 64M,SPI 8M、16M均可。web恢复模式地址为:192.168.128.1。
按住WPS/RESET键,打开电源,约4秒钟后WAN、LAN灯满闪3次,然后快闪十几次,即启动基于uip的web服务,可以进行firmware写入。将PC机用网线和路由器连接,PC机IP地址设置和路由器同一网段,即192.168.128.2~192.168.128.253范围内任一地址,网络掩码设为255.255.255.0,在浏览器地址栏输入路由器地址192.168.128.1即可看到firmware写入页面。