原文地址:http://blog.chinaunix.net/uid-27194309-id-3405021.html
http://wiki.openwrt.org/toh/tp-link/tl-wr703n
Hardware summary
|
IC |
Info |
Datasheet |
Processor |
AR7240 |
|
Click |
Flash ROM |
Eon EN25Q32B |
|
Click |
SDRAM |
Zentel A3S56D40FTP |
|
|
Chipset (Wi-Fi controller) |
AR9331 |
1x1 |
http://see.sl088.com/w/images/6/69/AR9331.pdf |
一. 基本知识
如果是刷了带HTTP的U-boot, 真正成了刷不死的小强了, 可以尽情折腾吧:
电脑ip 设成192.168.1.x,接好网线(单独直连或者HUB内都可以),
上电后,灯会常亮1到2秒,然后熄灭,这时按住Reset开关
不放,灯会常亮,松开Reset打开火狐输192.168.1.1 就能看到选择界面了(不支持IE), 升级时的提示如下:
Flashing...
The system is now trying to flash. If there is a problem, the LEDs will start to blink.
After a successful update the box will reboot
V1.1 自己修改了u-boot, 目前测试OK
路由器的安全模式: 若wifi无效, 则需要连接网线. 设置本地ip为192.168.1.*, 准备可以触碰reset工具一件. 眼明手快的活来了: 插电源灯亮,当灯闪的瞬间 按下reset键 3秒, led狂闪则路由器进入安全模式, 打开CMD窗口, ping 192.168.1.1 若能成功连接, 则输入命令: telnet 192.168.1.1, 再firstboot, 等待命令结束(出现#), 然后重启.
一般都能恢复正常, 此方法在之前屡试不爽. 如果不行, 请参考下面的.
编程器固件中包含uboot、fw和art。
uboot就像电脑的bios,是底层的管理系统;
fw就像电脑的操作系统,实现路由器的各种功能;
art就像电脑的无线驱动程序,是无线校验码;
uboot的长度为128KB(0x20000);art为64KB(0x10000);fw有4M和8M的区别,4M的为3840K(0x3c0000),8M的为7936KB(0x7c0000)。在刷机之前要对要刷入flash的uboot、fw、art的文件长度用ultraedit或winhex进行校验。尤其是uboot,如果大小不对,千万不要尝试刷入,那是一定会变砖的。
秋水注: U-boot: 0x1fc00 起的6个字节为 Lan时的 MAC地址, 0x1FE00 起的8个字节为PIN
uboot、fw和art在flash中的位置如下:
4M的FLASH:flash地址从0x000000~0x3FFFFF
ttl访问flash的地址从0x9F000000~0x9F3FFFFF
|
flash起始地址
|
TTL起始地址
|
flash终止地址
|
TTL终止地址
|
uboot
|
0X000000
|
0X9F000000
|
0X01FFFF
|
0X9F01FFFF
|
fw
|
0X020000
|
0X9F020000
|
0X3DFFFF
|
0X9F3DFFFF
|
art
|
0X3F0000
|
0X9F3F0000
|
0X3FFFFF
|
0X9F3FFFFF
|
8M的FLASH:flash地址从0x000000~0x7FFFFF
ttl访问flash的地址从0x9F000000~0x9F3FFFFF
|
flash起始地址
|
TTL起始地址
|
flash终止地址
|
TTL终止地址
|
uboot
|
0X000000
|
0X9F000000
|
0X01FFFF
|
0X9F01FFFF
|
fw
|
0X020000
|
0X9F020000
|
0X7DFFFF
|
0X9F7DFFFF
|
art
|
0X7F0000
|
0X9F7F0000
|
0X7FFFFF
|
0X9F7FFFFF
|
准备工作
1、从PCB版上上引出TTL线,一般有三根:TX RX和GND,对应主板上的标记,应该是TP-IN,TP-OUT,主板上焊点较大、覆盖面积较广的一般就是GND,有USB的,外壳连接的就是GND,可以从这些地方引出。
WR703N: TP_IN为RX,TP_OUT为TX,GND: 电源引脚标有USB1, R106旁边的3个过孔, 从而实现免拆机无损TTL改造。
我的TTL线: 黑色为GND,绿色为RX,白色为TX。 排列: 黑白绿(Err), 黑绿白(OK), 靠近RAM芯片端为黑线.
2、USB-TTL板或串口TTL板,装好驱动,在设备管理器中查出该设备占用的COM端口号,并将其属性设置中的速率改为115200
3、电脑IP设置192.168.1.2,网关255.255.255.0,掩码192.168.1.1,网线连接路由器LAN口和电脑网线接口。
4、需要的软件PUTTY。连接好TTL,打开PUTTY,点串口,端口改为上部查出的COM端口号,速率选择115200,点确定。如果接上路由器电源以后不出码,请交换ttl的Tx和Rx两线;如果出乱码,请查COM端口的速率是不是都是115200。
5、需要的软件tftp32。将固件放到tftp32同一目录,打开ftfp32,一般默认的server interface就已经是你的网卡IP地址(对于路由器uboot的远端地址不是192.168.1.2的,请按照5楼
hhhjjj159 所说的,在TTL中断系统启动以后,输入setenv ipaddr 192.168.1.1;setenv serverip 192.168.1.*(电脑IP地址)命令)。
TTL刷固件的命令
了解以上地址信息以后,就可以利用以上信息在不拆FLASH的情况下利用TTL向FLASH写入编程器固件或者其中的某一部分。
在插上路由器电源,屏幕开始出码的时候,迅速点击T、P、L三个字母,会中断系统的启动,光标停在提示符下,这时就可以输入刷固件的命令了。
命令如下:
4M的:
刷编程器固件:
tftp 0x80000000 full.bin
erase 0x9f000000 +0x400000
cp.b 0x80000000 0x9f000000 0x400000
刷uboot:
tftp 0x80000000 uboot.bin
erase 0x9f000000 +0x20000
cp.b 0x80000000 0x9f000000 0x20000
刷fw:
tftp 0x80000000 fw.bin
erase 0x9f020000 +0x3c0000
cp.b 0x80000000 0x9f020000 0x3c0000
刷art:
tftp 0x80000000 art.bin
erase 0x9f3f0000 +0x10000
cp.b 0x80000000 0x9f3f0000 0x10000
8M的:
刷编程器固件:
tftp 0x80000000 full.bin
erase 0x9f000000 +0x800000
cp.b 0x80000000 0x9f000000 0x800000
刷uboot:
tftp 0x80000000 uboot.bin
erase 0x9f000000 +0x20000
cp.b 0x80000000 0x9f000000 0x20000
刷fw:
tftp 0x80000000 fw.bin
erase 0x9f020000 +0x7c0000
cp.b 0x80000000 0x9f020000 0x7c0000
刷art:
tftp 0x80000000 art.bin
erase 0x9f7f0000 +0x10000
cp.b 0x80000000 0x9f7f0000 0x10000
--------- 以下为实战操作记录 --------------------------------------------------------------------------------------------------------
路由器共3台, 4M的好用一个, 4M(
上电后灯每3
秒闪一次, 重复到永远
)和8M()的砖头各一个, 都无法进入安全模式
4M: SPANSION 的 S25FL032P,
8M: MX25L6445EM2I-10G
16M: W25Q128FVSSIG, W25Q128FVSIG
一. 先从好用的703N中导出bin文件, SecureCRT登陆后, 命令如下:
root@OpenWrt:~#
root@OpenWrt:~# cd /tmp
root@OpenWrt:/tmp# cat /proc/mtd
//---- 4M
dev: size erasesize name
mtd0: 00020000 00010000 "u-boot"
mtd1: 000da370 00010000 "kernel"
mtd2: 002f5c90 00010000 "rootfs"
mtd3: 000b0000 00010000 "rootfs_data"
mtd4: 00010000 00010000 "art"
mtd5: 003d0000 00010000 "firmware"
//---- 8M
dev: size erasesize name
mtd0: 00020000 00010000 "u-boot"
mtd1: 00100000 00010000 "kernel"
mtd2: 006d0000 00010000 "rootfs"
mtd3: 00250000 00010000 "rootfs_data"
mtd4: 00010000 00010000 "art"
mtd5: 007d0000 00010000 "firmware
root@OpenWrt:/tmp# dd if=/dev/mtd0 of=uboot.bin
256+0 records in
256+0 records out
root@OpenWrt:/tmp# dd if=/dev/mtd5 of=firmware.bin
7808+0 records in
7808+0 records out
root@OpenWrt:/tmp# dd if=/dev/mtd4 of=art.bin
128+0 records in
128+0 records out
root@OpenWrt:/tmp#
root@OpenWrt:/tmp# cat uboot.bin firmware.bin art.bin > xxx.bin #合成完整文件以备用
二. WinSCP, 将上面的3个.bin文库拷贝到 自己的电脑上以备用.
三. TTL接好后, 能看到4M的启动信息如下, 至少uboot部分还正常, 万幸啊, 阿门!
U-Boot 1.1.4 (Sep 26 2011 - 11:13:45)
AP121-2MB (ar9330) U-boot
DRAM: 32 MB
led turning on for 1s...
id read 0x100000ff
flash size 4194304, sector count = 64
Flash: 4 MB
Using default environment
In: serial
Out: serial
Err: serial
Net: ag7240_enet_initialize...
No valid address in Flash. Using fixed address
No valid address in Flash. Using fixed address
: cfg1 0x5 cfg2 0x7114
eth0: 00:03:7f:09:0b:ad
ag7240_phy_setup
eth0 up
: cfg1 0xf cfg2 0x7214
eth1: 00:03:7f:09:0b:ad
athrs26_reg_init_lan
ATHRS26: resetting s26
ATHRS26: s26 reset done
ag7240_phy_setup
eth1 up
eth0, eth1
Autobooting in 1 seconds
## Booting image at 9f020000 ...
Uncompressing Kernel Image ... Too big uncompressed streamLZMA ERROR 1 - must RESET
Uncompressing Kernel Image ... OK //此为正确的信息
此后总重复出现如上的信息, 路由器在不停的 Reset, 无法进入Linux
----- 用编程器直接操作芯片, 烧录上面合成的bin, 开机后路由器恢复正常!!!
0x20000: FW的起始地址, 可以看到Openwrt的标志和版本号
------------------------------------------------------------------------------------------
常用 Flash 型号如下:
Name |
Manufacture |
Size |
S25FL016A |
Spansion |
2MB |
EN25F16 |
Eon |
2MB |
EN25QH16 |
Eon |
2MB |
AT26DF161 |
ATMEL |
2MB |
MX25L1605D |
MXIC |
2MB |
W25Q16BV |
Winbond |
2MB |
S25FL032P |
Spansion |
4MB |
EN25F32 |
Eon |
4MB |
EN25Q32B |
Eon |
4MB |
EN25QH32 |
Eon |
4MB |
AT25DF321 |
ATMEL |
4MB |
AT25DF321A |
ATMEL |
4MB |
MX25L3205D |
MXIC |
4MB |
W25Q32BV |
Winbond |
4MB |
S25FL064A |
Spansion |
8MB |
S25FL064P |
Spansion |
8MB |
EN25Q64 |
Eon |
8MB |
AT25DF641 |
ATMEL |
8MB |
AT25DF641A |
ATMEL |
8MB |
MX25L6405D |
MXIC |
8MB |
W25Q64BV |
Winbond |
8MB |
S25FL128P |
Spansion |
16MB |
S25FL129P |
Spansion |
16MB |
EN25Q128 |
Eon |
16MB |
MX25L12805D |
MXIC |
16MB |
W25Q128BV |
Winbond |
16MB |
EN25QH256 |
Eon |
32MB |
MX25L25635E |
MXIC |
32MB |
路由器内存
DDR内存:
32M:
W9425G6D(E)H-5 WINBOND(華邦)
64M:
HY5DU121622CTP-D43 现代颗粒64M (亲测:二手货市场10元买条256mb,四粒芯片的内存)
VDD9616A8A-6B H0513 VDATA(威刚)
46V32M16 MT(镁光)
D5116AFTA-5B-E ELPIDA\尔必达
128M:
46V64M16 P-6TA MT(镁光)
SD内存:
HY57V561622 现代颗粒 32M
HY57V561620 现代颗粒 32m(亲测)
K4S561632H 三星颗粒 32M