具体方法跟大家分享一下,最重要的,这个过程要考反应。所以先把所有的命令在cmd里输入一遍,然后通过上下回翻就会方便一些
- 把网线都拔下来,电源也拔了
- 将回刷的路由器上设置ip为192.168.11.1
- 将本地连接的ip地址获取方式设置为手动,地址为192.168.11.2,子网掩码255.255.255.0,网关为192.168.11.1
- 打开一个cmd(开始菜单》运行》cmd),输入arp -s 192.168.11.1 xx-xx-xx-xx-xx-xx(这个为路由器的物理地址,路由器的设置首页上会有,或者写在标签上,间隔不用冒号用-) 回车
- 然后输入 tftp -i 192.168.11.1 PUT c:/xxxxx (固件文件的位置,注意固件没有后缀名) 回车
- ctrl+c (因为这只是让终端记住我们要用哪些命令)
- 将网线插好,接电
- 注意右下角xp网络断开的图标消失的时候(当然也可以从网络连接目录里看,本地连接连接上的时候),按两次上箭头(找到arp开头的那句命令)按回车
- 再按两次上箭头,找到tftp开头的命令,按回车
- 稍等片刻,如果出现类似Transfer successful: 3674364 bytes in 8 seconds, 459295 bytes/s的提示的时候,恭喜你强刷成功。
如果等到路由器上红灯都灭了还没反应,拔电,重新从第六步开始
顶多重复2-3次肯定会成功的。
TTL大法
参考用拉直的回形针剪成1厘米稍多的3段,插入TTL线的3个杜邦头。
TTL线位4个孔,仔细看,1个方标,3个圆标,方标不用,右边第一个是GND,注意这里解释!
第二个是RXD孔,对应接TTL线的TXD,第三个是TXD孔,对应接TTL线的RXD。再次注意!GND外,TXD与TXD接错是可以调整而无损伤的。
其它连接就位与软件初始动作,TTL的USB头插入计算机USB口,完成驱动工作。用标准网线将路由的LAN口与计算机的网线口连接。路由通电测试访问路由设置页(这步也可提前至拆路由前,目的是排除不通的可能性)。
现在将计算机的这个网卡IP定义为10.10.10.3 , 255.255.255.0(其余无所谓)。
开启TFTPD32.EXE,Current Directory定义为上述test.bin的位置(最好这个位置只有这一个文件),Server interface也许要选,也许默认就是,总之让它变成10.10.10.3。
打开hypertrm.exe,随意应付一些初始设置,在连接到对话框,连接时使用COM口,(我这个TTL线是COM3)调整详细波特率参数“57600,8,无,1,无”,应付余下信息至超级终端进入待命状态。
鼠标放在超级终端小电话图标(呼叫)上,随时准备按下。手指放在计算机键盘的“2”键上,也随时准备按下。 此时路由器通电,然后立即鼠标点下小电话图标(呼叫),随之马上按下“2”键(这串动作是折腾后的经验)。进入一些应答操作,大意如下:
- 确认要写固件吗?——Y
- 设备IP是(10.10.10.123) ——回车
- 服务器IP是 (10.10.10.3) ——回车
- 填写固件文件名——test.bin回车
- 然后泡茶或喝咖啡去吧,等下看结果……
附上刷机的 TTL 信息,大家对照一下
##### The CPU freq = 320 MHZ #### SDRAM bus set to 16 bit SDRAM size =16 Mbytes Please choose the operation: 1: Load system code to SDRAM via TFTP. 2: Load system code then write to Flash via TFTP. 3: Boot system code via Flash (default). 4: Entr boot command line interface. 9: Load Boot Loader code then write to Flash via TFTP. You choosed 2 0 2: System Load Linux Kernel then write to Flash via TFTP. Warning!! Erase Linux in Flash then burn new one. Are you sure?(Y/N) Please Input new ones /or Ctrl-C to discard Input device IP (10.10.10.123) ==:10.10.10.123 Input server IP (10.10.10.3) ==:10.10.10.3 Input Linux Kernel filename () ==:test.bin netboot_common, argc= 3 NetTxPacket = 0x80FE4280 KSEG1ADDR(NetTxPacket) = 0xA0FE4280 NetLoop,call eth_halt ! NetLoop,call eth_init ! Trying Eth0 (10/100-M) Waitting for RX_DMA_BUSY status Start... done Header Payload scatter function is Disable !! ETH_STATE_ACTIVE!! Using Eth0 (10/100-M) device TFTP from server 10.10.10.3; our IP address is 10.10.10.123 Filename 'test.bin'. TIMEOUT_COUNT=10,Load address: 0x80100000 Loading: * ArpTimeoutCheck Got ARP REPLY, set server/gtwy eth addr (00:03:47:4c:24:69) Got it T # first block received ################################################################ ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ############################################# done Bytes transferred = 3554081 (363b21 hex) NetBootFileXferSize= 00363b21 raspi_erase_write: offs:50000, count:363b21 raspi_erase: offs:50000 len:360000 raspi_write: to:50000 len:360000 raspi_read: from:3b0000 len:10000 raspi_erase: offs:3b0000 len:10000 raspi_write: to:3b0000 len:10000 Done! ## Booting image at bf050000 ... raspi_read: from:50000 len:40 Image Name: DD-WRT v24 Linux Kernel Image Created: 2011-12-20 14:44:09 UTC Image Type: MIPS Linux Kernel Image (lzma compressed) Data Size: 858598 Bytes = 838.5 kB Load Address: 80000000 Entry Point: 80255000 raspi_read: from:50040 len:d19e6 Verifying Checksum ... OK Uncompressing Kernel Image ... OK No initrd ## Transferring control to Linux (at address 80255000) ... ## Giving linux memsize in MB, 16 Starting kernel ...