2015年8月25日 星期二

如何將 OpenWrt 8MB 固件程式寫入 8MB 閃存(Flash Memory)

如何將 OperWrt 8MB 固件程式寫入 8MB 閃存(Flash Memory): 

在 Chaos Calmer 15.05 RC3(20150816 SVN:r46572) 版本內,將程式內的參數修改為 8MB 記憶容量,便可以編譯 OpenWrt 8MB 固件,當編譯完成,系統產生了兩個固件程式,但兩個固件(Firmware)程式真的超過 4MB 容量,所以不能夠直接從 TP-Link 的原廠固件作軟件升級,因為原廠固件作軟件升級時,限制升級軟件容量為 4MB,要使用另外辦法將程式寫入 8MB 閃存(Flash Memory)。

8MB(Q64-104HIP EN25Q64-104HIP)IC
編譯後的 Chaos Calmer 15.05 RC3 TP-Link TL-WR703N 路由器 binary: 
1. openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin     7936kiB
2. openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin 4160kiB

位置於 openwrt/bin/ar71xx/ 底下有兩個 binary 固件,factory.bin 適用於從未安裝過 OpenWrt 的 AP。sysupgrade.bin 適用於已經安裝過 OpenWrt 的 AP,刷 fw 4MB 固件大小不能超過 3.75MB,8MB 固件也不能大於 7.75MB。

位置於 openwrt/bin/ar71xx/ 底下有兩個 binary 固件
TP-Link TL-WR703N 路由器的固件內容包括了 U-Boot、FW 和 ART 程式,U-Boot 就像電腦的 BIOS (Basic Input/Output System), FW(Firmware) 就像電腦的作業系統,ART(Atheros Radio Test)就像無線驅動程式和資料。

4MB 固件內容
703N 4M Flash Memory 路由器固件:


Flash Start地址
Flash End 地址
TTL Start 地址
TTL End  地址
長度
U-Boot
0x000000
0x01FFFF
0x9F000000
0x9F01FFFF
128kB(0x20000)
FW
0x020000
0x3DFFFF
0x9F020000
0x9F3DFFFF
3840kB(0x3c0000)
ART
0x3F0000
0x3FFFFF
0x9F3F0000
0x9F3FFFFF
64kB(0x10000)

703N 8M Flash Memory 路由器固件:

Flash Start地址
Flash End 地址
TTL Start 地址
TTL End  地址
長度
U-Boot
0x000000
0x01FFFF
0x9F000000
0x9F01FFFF
128kB(0x20000)
FW
0x020000
0x7DFFFF
0x9F020000
0x9F7DFFFF
7936kB(0x7c0000)
ART
0x7F0000
0x7FFFFF
0x9F7F0000
0x9F7FFFFF
64kB(0x10000)
U-Boot 使用少量的閃存存儲空間 (長度為128KB = 0x20000),通常在同一個分區存儲在存儲一些重要的配置參數。

步驟 1:首先在 TP-Link TL-WR703N 路由器使用原廠的 4MB 閃存(Flash Memory)固件。準備 OpenWrt 的 4MB 固件程式(內有 Luci 的 Web 介面)。將原廠的 4MB 閃存刷 factory 固件升級為 OpenWrt 系統。在 OpenWrt 系統再刷 sysupgrade 固件。

步驟 2:用 telnet 192.168.1.1 登陸 OpenWrt 系統。然後設置登陸密碼 admin。

root@OpenWrt:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00020000 00010000 "u-boot"
mtd1: 000d9ebc 00010000 "kernel"
mtd2: 002f6144 00010000 "rootfs"
mtd3: 00100000 00010000 "rootfs_data"
mtd4: 00010000 00010000 "art"
mtd5: 003d0000 00010000 "firmware"

導出固件資料:
root@OpenWrt:/tmp# dd if=/dev/mtd0 of=uboot.bin
root@OpenWrt:/tmp# dd if=/dev/mtd5 of=firmware.bin
root@OpenWrt:/tmp# dd if=/dev/mtd4 of=art.bin
root@OpenWrt:/tmp# tr ‘\000’’\377’ < /dev/zero | dd of=0xFF_4MB.bin bs=1024 count=4096


步驟 3:用 WinSCP 進入 OpenWrt 系統,由於固件的空間不足,將導出固件資料 Copy 到  PC 電腦,
在 4MB 閃存合成導出固件資料。
root@OpenWrt:/tmp# cat uboot.bin firmware.bin 0xFF_4MB.bin art.bin > wr703n_8M.bin
 

或在 PC 電腦的 MS-DOS合成導出固件資料。
C:\>type uboot.bin firmware.bin 0xFF_4MB.bin art.bin > wr703n_8M.bin
C:\>copy /b uboot.bin+firmware.bin+0xFF_4MB.bin+art.bin wr703n_8M.bin

步驟 4:將 8MB(Q64-104HIP EN25Q64-104HIP) 合成固件,用編程器(Programmer)刷入 8MB 閃存(Flash Memory),然後替換 4MB(Q32B-104HIP)的閃存。

用編程器(Programmer)刷入 8MB閃存(Flash Memory)
※ 不可以直接將 4MB 閃存的資料刷入 8MB 閃存內,因為 OpenWrt 系統會更改 3D0000 的資料內容。 
OpenWrt 系統的 3D0000 資料

2015 年 8月 25日 天氣報告 
氣溫:25.9度 @ 23:20 
相對濕度:百分之 74% 
天氣:天色良好

沒有留言:

張貼留言