U-Boot + TTL 刷机方法

此方法适用于任何 U-Boot。

准备工具:
PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
TFTPd32: http://tftpd32.jounin.net/tftpd32_download.html

TFTPd32 是一个 TFTP 协议 (简单文件传输协议) 的服务端,用于向 U-Boot 传输文件。

使用 PuTTY 通过串口进入 U-Boot 命令行模式:
这里请自行查找相关资料

设置 PC 网络参数:
需要设置本机网卡的IP地址为静态IP,才能通过 U-Boot 传输数据

1. 查看 U-Boot 中的 IP 地址信息:
在 U-Boot 命令行中运行 printenv 命令

forum.php?mod=attachment&aid=MTAwODc4fDR

ipaddr 表示 U-Boot 即路由使用的 IP 地址
serverip 表示服务器即 PC 机使用的 IP 地址

这里需要将本机IP改为 serverip 的 IP 地址

forum.php?mod=attachment&aid=MTAwODc5fDA

设置 TFTP 服务器参数:
打开 TFTPd32
Current Directory 选择要上传文件的目录
Server interfaces 选择本机跟路由相连的网卡 (参考刚才设置的 IP 地址)

forum.php?mod=attachment&aid=MTAwODgwfDd

在 U-Boot 中使用 tftpboot 命令获取文件:
tftpboot 命令用于向 TFTP 服务器请求文件,并存入内存
tftpboot 命令在无歧义的情况下可简写为 tftp

tftp <内存地址> <文件名>

在 MIPS 架构下内存地址从 0x80000000 开始,一般也选择 0x80000000,因为这样可以尽可能使用更多的内存

forum.php?mod=attachment&aid=MTAwODgxfDE

文件传输成功的标志为 Loading: 后出现一连串 #
其中可能出现 checksum bad 的提示,这不影响数据传输。
如果每隔10s出现一个T,则表明通信超时,此时需要检查网络连接情况及IP地址是否正确。

Bytes transferred = 后面的第一个数字为传输的数据字节数,10进制;括号里的为对应的16进制大小,后面会用到16进制的大小。

在 U-Boot 中擦除 Flash:
任何一种 Flash 都有一个擦除块大小,擦除大小必须为此大小的整数倍,如果不是,则要进行对齐。

例如:
SPI Flash 的常见擦除块大小为 64KB,其字节数的16进制为 0x10000
如果擦除大小为 0x30000 (192KB),则此大小为 0x10000 的整数倍,是对齐的;
如果擦出大小为 0x12345 (72KB),则此大小未对齐,需要使用比它大但又最接近的是 0x10000 倍数的大小,即 0x20000 (128KB)。

erase <flash地址> +<擦除大小>

其中 Flash 地址在不同的芯片下有所不同,会在后文列出

以在 TP-LINK 路由中刷入 U-Boot 为例:

erase 0x9f000000 +0x20000

forum.php?mod=attachment&aid=MTAwODgyfDM

在 U-Boot 向 Flash 写入数据:
向 Flash 写入数据的大小可以是任意正整数

cp.b <源地址> <目的地址> <长度>

其中
cp.b 表示以字节为单位进行写入
源地址为通过 tftpboot 命令获取的文件数据的存放地址
目的地址为 Flash 地址
长度为通过 tftpboot 命令获取的文件的大小,16进制表示,带0x前缀

以在 TP-LINK 路由中刷入 U-Boot 为例:

cp.b 0x80000000 0x9f000000 0x20000

forum.php?mod=attachment&aid=MTAwODgzfGI

常见路由固件各成分的起始地址及大小:

TP-LINK 
固件:

wKioL1eYgx_hKSQRAACdQp5W6t0865.png网件 WNDR3700v2/WNDR3800/WNDRMAC:
仅 U-Boot 及 ART,因为原厂升级固件不能直刷

wKioL1eYg16AfoJPAAAWRQEln4E381.pngAR2317 UBNT:
仅 U-Boot 及 board_config,因为原厂升级固件不能直刷
仅适用于楼主的不死 U-Boot

wKiom1eYg47wY48RAAA3ldmTsrI839.pngAR7161 AR724x AR934x UBNT:
仅 U-Boot 及 EEPROM/ART,因为原厂升级固件不能直刷

wKioL1eYg7Sh3GIqAAA4YuDuMk8728.pngMT7620 公版类型的固件 (U-Boot 大小为 192KB):

wKiom1eYg-yQBQnTAACQBMsXu38474.png




      本文转自灬落魄灬  51CTO博客,原文链接:http://blog.51cto.com/smoke520/1830790,如需转载请自行联系原作者