本帖最后由 hackpascal 于 2014-12-11 23:33 编辑U-Boot + TTL 刷机方法此方法适用于任何 U-Boot。准备工具:PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.htmlTFTPd32: http://tftpd32.jounin.net/tftpd32_download.htmlTFTPd32 是一个 TFTP 协议 (简单文件传输协议) 的服务端,用于向 U-Boot 传输文件。使用 PuTTY 通过串口进入 U-Boot 命令行模式:这里请自行查找相关资料设置 PC 网络参数:需要设置本机网卡的IP地址为静态IP,才能通过 U-Boot 传输数据1. 查看 U-Boot 中的 IP 地址信息:在 U-Boot 命令行中运行 printenv 命令 ipaddr 表示 U-Boot 即路由使用的 IP 地址serverip 表示服务器即 PC 机使用的 IP 地址这里需要将本机IP改为 serverip 的 IP 地址 设置 TFTP 服务器参数:打开 TFTPd32Current Directory 选择要上传文件的目录Server interfaces 选择本机跟路由相连的网卡 (参考刚才设置的 IP 地址) 在 U-Boot 中使用 tftpboot 命令获取文件:tftpboot 命令用于向 TFTP 服务器请求文件,并存入内存tftpboot 命令在无歧义的情况下可简写为 tftptftp <内存地址> <文件名>在 MIPS 架构下内存地址从 0x80000000 开始,一般也选择 0x80000000,因为这样可以尽可能使用更多的内存 文件传输成功的标志为 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
网件 WNDR3700v2/WNDR3800/WNDRMAC:
仅 U-Boot 及 ART,因为原厂升级固件不能直刷U-BootART16MFlash 地址:0xbf000000大小: 0x50000Flash 地址:0xbfff000大小: 0x10000
AR2317 UBNT:仅 U-Boot 及 board_config,因为原厂升级固件不能直刷仅适用于楼主的不死 U-BootU-BootART4MFlash 地址:0xa8000000大小: 0x30000Flash 地址:0xa83f000大小: 0x100008MFlash 地址:0xa8000000大小: 0x30000Flash 地址:0xa87f000大小: 0x1000016MFlash 地址:0xa8000000大小: 0x30000Flash 地址:0xa8ff000大小: 0x10000
AR7161 AR724x AR934x UBNT:仅 U-Boot 及 EEPROM/ART,因为原厂升级固件不能直刷U-BootART4MFlash 地址:0xbf000000 (AR7161) / 0x9f000000 (AR724x 及之后)大小: 0x40000Flash 地址:0xbf3f0000 / 0x9f3f0000大小: 0x100008MFlash 地址:0xbf000000 (AR7161) / 0x9f000000 (AR724x 及之后)大小: 0x40000Flash 地址:0xbf7f0000 / 0x9f7f0000大小: 0x10000
MT7620 公版类型的固件 (U-Boot 大小为 192KB):U-Boot固件EEPROM4MFlash 地址:0xbc000000 (其它 U-Boot) / 0x9c000000 (楼主不死 U-Boot)大小: 0x30000Flash 地址:0xbc050000 / 0x9c050000大小: 0x3b0000Flash 地址:0xbc040000 / 0x9c040000大小: 0x100008MFlash 地址:0xbc000000 (其它 U-Boot) / 0x9c000000 (楼主不死 U-Boot)大小: 0x30000Flash 地址:0xbc050000 / 0x9c050000大小: 0x7b0000Flash 地址:0xbc040000 / 0x9c040000大小: 0x1000016MFlash 地址:0xbc000000 (其它 U-Boot) / 0x9c000000 (楼主不死 U-Boot)大小: 0x30000Flash 地址:0xbc050000 / 0x9c050000大小: 0xfb0000Flash 地址:0xbc040000 / 0x9c040000大小: 0x1000032M(仅楼主不死 U-Boot)Flash 地址:0x9c000000大小: 0x30000Flash 地址:0x9c050000大小: 0x1fb0000Flash 地址:0x9c040000大小: 0x10000
使用 HFS 上传文件如果觉得使用 WinSCP 上传文件比较麻烦,那么可以考虑 HTTP 方式上传文件,即将PC设置为 HTTP 服务器,在路由上下载文件。如果PC上已经搭建有 HTTP 服务器,那么可以直接将要上传的文件存放于 HTTP 根目录,再在路由上通过 wget 命令来下载。准备工具:HFS: http://www.rejetto.com/hfs/?f=dlHFS 是一个轻量级的 HTTP 文件服务器 (HTTP File Server)配置 HFS:配置 HFS 很简单,只需指定监听 IP 地址和要下载的文件。[Menu]→[IP address] 选择本机网卡的 IP 地址 左侧 Virtual File System 里右键菜单,Add files...,选择要上传的文件。 路由里下载文件:参考1楼的方法,使用 SSH 或 telnet 进入路由执行 cd /tmp 进入 /tmp 目录执行 wget http://