flash分区结构
-
通过命令行
dmesg |grep spi |grep Kbytes
可查看flash型号及容量[ 0.760591] m25p80 spi0.0: w25q128 (16384 Kbytes)
-
通过
dmesg
命令查看系统启动log,找到有如下提示# 16M flash op系统分区结构 [ 0.775662] 0x000000000000-0x000000020000 : "u-boot" [ 0.782384] 0x000000020000-0x000000153404 : "kernel" [ 0.787855] 0x000000153404-0x000000ff0000 : "rootfs" [ 0.803829] 0x000000390000-0x000000ff0000 : "rootfs_data" [ 0.811128] 0x000000ff0000-0x000001000000 : "art" [ 0.816478] 0x000000020000-0x000000ff0000 : "firmware" # 8M flash op系统分区结构 [ 0.710000] 0x000000000000-0x000000020000 : "u-boot" [ 0.720000] 0x000000020000-0x00000012e620 : "kernel" [ 0.730000] 0x00000012e620-0x0000003f0000 : "rootfs" [ 0.760000] 0x000000350000-0x0000003f0000 : "rootfs_data" [ 0.770000] 0x0000003f0000-0x000000400000 : "art" [ 0.770000] 0x000000020000-0x0000003f0000 : "firmware"
-
通过
cat /proc/mtd
也可以查看(mtd是一个openwrt管理flash的工具,erasesize 为单位擦除的最小单位)# 16M flash op dev: size erasesize name mtd0: 00020000 00010000 "u-boot" #bootloader引导程序,可以用bread代替 mtd1: 00133404 00010000 "kernel" #固件内核 mtd2: 00e9cbfc 00010000 "rootfs" #固件分区文件系统子集 mtd3: 00c60000 00010000 "rootfs_data" #固件分区文件系统子集 可写分区子集 mtd4: 00010000 00010000 "art" #无线校准参数 发挥无线最佳工作效果 mtd5: 00fd0000 00010000 "firmware" #固件分区
-
分区结构示意图
rootfs区域挂载
/
系统根目录;rootfs_data区域挂载/overlay
目录,作为系统启动后系统文件修改时的记录区,以便恢复系统;中间的区域挂载系统的其他部分即/rom
目录 -
使用dd命令备份flash
通过命令行
ls /dev/mtd*
可以查看到挂载的mtd设备,与命令行cat /proc/mtd
中的mtd对应,其中的mtd*ro就是供flash读取的dd if=/dev/mtd0ro of=/tmp/uboot.bin dd if=/dev/mtd5ro of=/tmp/firmware.bin
-
还原flash(貌似还原art不行)
mtd -r write rootfs_data.bin rootfs_data
-
总结
更换flash芯片时,需要先备份原系统的art区无线校验数据,先使用编程器将uboot.bin(bread.bin)刷入flash芯片,最后使用uboot.bin升级系统固件以及刷入备份的art文件
最初,路由器将其无线校验数据存储于eeprom中,因此网上eeprom的叫法也即是无线校验区,art、factory只是其中的一种,因为芯片型号不一样,因此叫法不一样,该区还存储了路由器的mac地址等数据,刷机后最好使用uboot将mac地址还原为原地址,否则有可能造成无线的不正常工作
-
参考文档
flash芯片
-
SPI FLASH与NOR FLASH
- SPI FLASH是NOR FLASH的一种
- NOR FLASH根据数据传输的位数可以分为并行(Parallel)NOR Flash和串行(SPI)NOR Flash
- SPI Nor Flash比parallel便宜,接口简单点,但速度慢
- 路由器的Flash即是spi nor flash,WQ25系列在路由器上用的较多
-
参考文档
串口控制台
WR720N的电路板上有两个焊点,TP_IN和TP_OUT,将USB-TTL的RX焊接到TP_IN,TX焊接到TP_OUT,即可通过串口终端查看系统的启动过程,刷砖备用
刷机过程
-
使用TP原装的web刷入op系统,openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-factory.bin
-
利用
dd if=/dev/mtd4ro of=/tmp/art.bin
备份出art无线校验数据,然后使用scp工具导出 -
使用编程器将bread写入新的flash,bread下载地址为breed-ar9331-wr710n_wr720n-r1163.bin
-
焊接换上新的flash,长按恢复物理键,上电启动bread,如果led闪烁则启动正常
-
通过bread的web刷入新的op系统以及art备份
Openwrt针对每种路由器提供两个固件文件,factory.bin用于路由器原厂固件初次改刷为Openwrt使用,sysupgrade.bin用于从旧版本Openwrt升级到新版使用
参考链接
TP-LINK WR720N v3 刷OpenWrt 完美翻墙