2015年8月25日 星期二

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

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

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

8MBQ64-104HIP EN25Q64-104HIPIC
編譯後的 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.75MB8MB 固件也不能大於 7.75MB

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

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


Flash Start地址
Flash End 地址
TTL Start 地址
TTL End  地址
長度
U-Boot
0x000000
0x01FFFF
0x9F000000
0x9F01FFFF
128kB0x20000
FW
0x020000
0x3DFFFF
0x9F020000
0x9F3DFFFF
3840kB0x3c0000
ART
0x3F0000
0x3FFFFF
0x9F3F0000
0x9F3FFFFF
64kB0x10000

703N 8M Flash Memory 路由器固件

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

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

步驟 2telnet 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 8MBQ64-104HIP EN25Q64-104HIP) 合成固件,用編程器(Programmer)刷入 8MB 閃存(Flash Memory),然後替換 4MBQ32B-104HIP)的閃存。

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

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

沒有留言:

張貼留言