|
本帖最后由 dankie 于 2021-12-3 11:20 编辑
首先需要有flash的编程器,需要把原厂flash拆下来把自己生成的固件用编程器刷进去。
另外需要注意的是非原厂flash芯片不支持原厂固件。
原厂刷机固件生成方法:
用编程器读回flash中的内容并保存到文件,命名为oldflash.bin;
去TP-LINK官网下载TL-WVR600G的升级固件包TL-WVR600G V1.0升级软件20160426.zip,并解压出:TL-WVR600Gv1.bin;
根据分析路由器固件内容的地址如下:
partition fs-uboot base 0x00000 size 0x20000
partition partition-table base 0x20000 size 0x02000
partition default-mac base 0x30000 size 0x00020
partition product-info base 0x30020 size 0x01000
partition signature base 0x31020 size 0x00400
partition fw_signature base 0x32000 size 0x00400
partition hw-info base 0x3c000 size 0x04000
partition os-image base 0x40000 size 0x570000
partition soft-version base 0x5b0000 size 0x00100
partition profile base 0x5b0100 size 0x02f00
partition default-config base 0x5b3000 size 0x02000
partition user-config base 0x5d0000 size 0x40000
partition web-res base 0x610000 size 0xc0000
partition isp-addr-list base 0x6d0000 size 0x04000
partition app-desc base 0x6d4000 size 0x10000
partition app-db base 0x6e4000 size 0x1c000
partition appclsf-db base 0x700000 size 0x08000
partition apppri-db base 0x708000 size 0x08000
partition log-desc base 0x710000 size 0x20000
partition license base 0x730000 size 0x10000
partition log base 0x7b0000 size 0x40000
升级包TL-WVR600Gv1.bin中固件内容地址如下:(注意:不同版本升级包的地址偏移是不一样的)
fwup-ptn partition-table base 0x00800 size 0x00800
fwup-ptn product-info base 0x01000 size 0x00258
fwup-ptn os-image base 0x01258 size 0x5202d0
fwup-ptn soft-version base 0x521528 size 0x00014
fwup-ptn profile base 0x52153c size 0x00d00
fwup-ptn default-config base 0x52223c size 0x01bf8
fwup-ptn web-res base 0x523e34 size 0xbe008
fwup-ptn isp-addr-list base 0x5e1e3c size 0x03bf8
fwup-ptn app-desc base 0x5e5a34 size 0x00ada
fwup-ptn app-db base 0x5e650e size 0x022c9
fwup-ptn appclsf-db base 0x5e87d7 size 0x05c2c
fwup-ptn apppri-db base 0x5ee403 size 0x00436
fwup-ptn log-desc base 0x5ee839 size 0x027f8
此处的base地址需要加上偏移:0x1014
经逐项检查,刷原厂固件时因为掉电导致的变砖,是0x40000(os-image)后的内容丢失。把升级包中的相关内容根据地址填进去,就可以啦。
合成的方法我是写了段c程序,分别从两个文件中读有效数据写入新的固件文件中。用二进制文件编辑器合成理论上可行,但恐怕太容易出错了,我没用过。
把新的固件文件通过编程器写入flash,重新焊上。加电,等待,一切ok啦。
合成生成包时需要细心再细心,最好生成完后再对新的固件逐项进行内容检查。否则焊上不行又得拆下来,反复几次焊盘恐怕就废了。我是先用导线焊了个flash的弹跳座在路由器上,可以把芯片随时拿下来调试,折腾。
不过么,这么老的机器再用原厂固件已经没有什么大的意义了。原机配的16M内存,原厂固件只用了8M也太可惜了。
我已经为它适配了最新版本的openwrt,完美支持16Mflash,各种功能应有尽有,也算是老树开新花了。
|
|