对华为HG255D路由器进行JTAG调试的进一步研究

网上对于HG255D路由器进行救砖的方法时有时会失败,特别是引导代码uboot完全被破坏或者flash被清空的情况下,除了把flash焊下来,就只能使用jtag的方式进行恢复了。网上关于华为HG255D路由器的JTAG定义只有GND,TDO,TDI,TMS,TCLK,VREF,NTRST共7根线的连接方式,由于缺少NSRST的连线定义,使得当引导代码uboot完全被破坏或者flash被清空的情况下,有时候甚至通过jtag也不能救砖,比如运行某个命令时,在telnet界面只是增加一行空白行,没有预期的运行结果输出,或者看到pc为0x00000000的输出。

经过对RT3052 CPU的datasheet引脚定义发现PORST_N引脚为CPU的复位引脚,在JTAG接口里面对应于NSRST。将该引脚连接到JTAG,可以使用JTAG软件让CPU复位,而jtag的TAP不复位,从而使CPU一开始就进入调试状态。使用的JTAG调试软件为openocd 0.9.0,JTAG硬件可以是Jlink v8或者BusBlaster V3C。

在OpenOCD配置文件中需要增加关于复位的引脚定义,表明cpu的复位和jtag的TAP复位是分别控制的。如下:

adapter_nsrst_delay 100
jtag_ntrst_delay 100
reset_config trst_and_srst 

在OPENOCD的Telnet连接中输入reset halt,就可以使CPU复位并暂停于第一条指令地址0xbfc00000处,此时再执行ralink_init,load_image uboot-ram.bin 0x200000,resume 0x200000等命令就可以将RAM版boot程序导入到内存执行了。然后可以通过内存运行的uboot进行flash的重新写入操作。这样就算原来flash中的代码完全被破坏也可以进行修复了。

最初的目的是能够用来学习路由相关的嵌入式软件开发,而不是救砖。利用openocd提供的gdb功能可以实现软件的单步调试和增加断点等功能。由于现在hg255d路由器在网上的价格非常便宜(10-20元),加上一个jtag仿真器就可以组成一套性价比较高的嵌入式开发学习设备了。可以用来学习MIPS的嵌入式软件开发,如uboot和路由器操作系统OpenWrt等。

最后说下,在改写flash之前要先把flash整个备份下来,之后不管怎么操作都可以利用这个备份文件将hg255d恢复到原来的样子,以便进行比较研究。特别是有关无线配置参数部分的内容,如果没有备份,从别的hg255d板子上拷贝的无线配置参数不一定适合现在的板子。

图1

图1为HG255D板子上关于JTAG引脚的连线点定义。

图2

图2为焊接好JTAG连线后的样子。

图3

图3 为启动openocd后运行reset命令后jtag响应情况。

图4

图4为运行内存板uboot后的过程。此时启用了work-area-phys,速度达到85KB/s。

图5

图5为关闭work-aera-phys,速度降为2KB/s。

图6

图6为拷贝hg255d的flash中数据到PC机上过程。

图7

图7为向hg255d中flash写入uboot过程。执行命令前要关闭work-area-phys。每次只写256字节,比较慢。

图8

图8为openocd后台进程情况。

图9

图9为擦除flash过程。一个sector为128K字节。

图10

图11

图10和图11为rt3052的datasheet中关于jtag引脚和复位引脚的定义。

 

华为HG255D刷机工具及固件大全,全套共计,40个固件,最新的神雕、博爱固件,内附刷机教程,亲测可用! 文件目录: ├ │ ├0508-openwrt-ramips-rt305x-hg255d-squashfs-By_shcl.bin │ ├1102-0x20000_hg255d-squashfs-tftp.checksum2.bin │ ├httpd-uboot.bin │ ├ralink.bin │ ├tftp.exe │ ├tftp2.exe │ ├Tftpd32.exe │ ├tftpd-uboot.bin │ ├u-boot-web.bin │ ├WinHex.exe │ ├不拆机更换HG255D的U-BOOT并刷OPENWRT.doc │ └固件IP.txt ├ │ ├(电信原版u-boot)h255d_tel_uboot.bin │ ├适合于电信原本的uboot的OpenWrt固件-.rar │ ├ │ │ ├新建 Microsoft Word 文档.doc │ │ ├ │ │ │ ├HG255d35.bin │ │ │ ├HG255dV100R001C01B035版本本地升级指导书.dot │ │ │ ├新建 文本文档.txt │ │ │ └中国升级页面.html ├ │ ├0219openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├0702-DreamBox-ramips-rt305x-hg255d-squashfs-tftp.bin │ ├0909-DreamBox-ramips-rt305x-hg255d-squashfs-litel.bin │ ├1019-DreamBox-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├1119-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├1123-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├1128-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├1201-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├1204-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├1226-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade (1).bin │ ├131028-石像鬼-hg255d-by可乐.bin │ ├140708-纯净版-Flash_16M_openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├20121029-Dreambox-ralink-hg255d-squashfs-Alpha.bin │ ├2013-08-03-0840-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├2013-08-04-0920-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├20130822-openwrt-hg255d-PIN码专用.bin │ ├2013-10-26-1538-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade多功能版.bin │ ├20131101-1615-op-hg255d-by可乐.bin │ ├HG255D dd-wrt固件.bin │ ├HG255D博爱固件-2015.bin │ ├OP-0402-Gargoyle.zip │ ├OP-0413汉化-Gargoyle初始密码 password .zip │ ├OP-0828迷你版.bin │ ├OP-最新版0413-Gargoyle初始密码 password .zip │ ├PandoraBox-ralink-hg255d-r189-20141020(hg255d)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值