使用TFTP和TTL在U-BOOT烧写路由内核 刷机 救砖 基于IPQ4019
在路由器业IPQ40x9 IPQ40x8系列的CPU是高通MU-MIMO Wave 2 802.11ac SoC WiFi解决方案,使用这方案路由器有ACRH17、竞斗云G-DOCK、星际宝盒、EA8300、乐光CA100。
偶然的机遇拿了一个IPQ4019的路由器,但是这个是FIT(瘦)AP,没有管理界面。朋友帮忙编译了一个OpenWrt固件玩玩,只能通过OTA、TTL或者拆FLASH刷固件升级,OTA不知道协议,拆FLASH也麻烦,所以先尝试使用TTL升级。
前期准备
- TTL工具,可以使用淘宝几块钱的TTL设备,接到路由器上有串口TTL标记的接口
- tftpd32软件安装到目录短并无中文名的目录
- 安装带有串口(Serial)的软件,例如Xsheel 6
- 将烧录固件.bin文件拷贝到安装tftpd32的目录下,更名为a.bin(这个很重要,不要忘记!!!)
连接TTL,GND接GND、路由器RX接TTL的TX、路由器TX接TTL的RX,也就是RX和TX反过来接。
连接TTL
- 使用Xsheel连接串口,先新建会话然后选择SERIAL(串口)协议
-
设置Xsheel的串口,选择SERIAL设置com的端口和波特率,其他一般默认
-
给路由器重新上电可看到正常显示启动数据,在启动倒数几秒内敲任意按键(竞斗云为不停的敲F键和Enter键)进入bootloader,我们要在这个模式里面进行刷机
TFTP上传固件
-
先连接网线到电脑,然后输入”printenv”命令查看 U-Boot 中的serverip IP 地址信息,ipaddr 表示 U-Boot 即路由使用的 IP 地址,serverip 表示服务器即 PC 机使用的 IP 地址”192.168.1.25″
-
在网络设置里面设置IPV4地址为TFTP服务器地址”192.168.1.25″并确定保存
-
打开 TFTPd32,Current Directory 选择要上传文件的目录(一般放在软件目录里),Server interfaces 选择本机跟路由相连的网卡 (参考刚才设置的 IP 地址)
-
tftp上传固件:”tftpboot <文件名>”,输入”tftpboot a.bin”,tftpboot 命令用于向 TFTP 服务器请求a.bin文件,并存入内存
-
文件上传完成
编程烧录QSPI Flash
警告:命令需谨慎,以防万一做好备份,ART没了就没灵魂了!!!
本设备为IPQ4019单SPI FLASH(NAND Flash使用nand 命令烧录),以下使用本设备SPI FLASH为例:
- 初始化芯片SPI总线FLASH驱动: “sf probe;”
- 擦除 Flash,任擦除分区的命令,可以指定偏移off 和大小size 擦除,如果不输入从参数,则整片擦除,但是此命令会跳过坏块,SPI FLASH速度慢可能需要5分钟。”sf erase <flash地址> +<擦除大小>”
例如”sf erase 0x180000 +0x1a00000;” -
写内存数据到flash,”sf write <源地址> <目的地址> <长度>”
例如:”sf write 0x84000000 0x180000 ${filesize}”
把内存0x8400 0000处的数据, 写入flash的偏移0x180000, 写入数据长度为下载文件大小, 操作偏移和长度最小单位是Byte
结束
烧录完成可输重启命令:”reset”
NAND Flash可使用nand 命令,NOR Flash也不同,u-boot其他食用方式可参考https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842223/U-boot