找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 13353|回复: 15

基于jlink+openocd的救砖方法

[复制链接]
发表于 2016-7-29 11:58 | 显示全部楼层 |阅读模式
本帖最后由 aggresss 于 2016-7-29 12:07 编辑

    常在河边走,哪有不变砖的。TTL刷机是建立在 U-Boot正常的前提下,但都在一个flash里,难免刷机时被覆盖掉,这时用jtag的方式比较方便啦,当然对于SPI引脚的flash用编程器刷机也不失一个好办法,今天小弟来分享一下基于jlink+openocd在windows和linux下都可以使用的救砖方法,在这首先感谢各位前辈大神在论坛里的分享,让俺学会了好多东东。
路由器使用大家熟悉的华为HG255d,jtag调试器使用jlinkV8(D版,仅供学习和经验交流使用),操作系统是windows7_64位。
之前HG255d砖后都是使用并口的wiggler刷机,那东西有几个致命的缺点:首先你得有板载并口,市面上的usb转并口大多是基于打印机的;其次得是windowsXP_32位操作系统,否则giveio驱动非常难装;最后就是parallel_0x378的速度实在太慢。
OK,这些问题对于专业的jtag调试器都不是问题,理论上只要jtag调试器被openocd兼容,就可以用来救砖,小弟手里只有一个开发arm时用得jlink调试器,今天介绍一下思路,欢迎各位大神使用其他调试器试验并反馈结果。论坛里好多关于jlink只能调试arm的说法,这是不严谨的,jlink的官方调试程序里就明确支持mips架构,有图为证:

我也是看到这点才继续往下走的,我们说一下准备工作,调试器,路由器,电脑总是要有的,HG255d的jtag是要飞线的,不像linksys给你留个焊盘那么方便,所以考验焊工还是有的,怎么飞线前辈大神都已经说得很详细啦,这里有链接,再次感谢 lintel和波鲁克两位大神:
https://www.right.com.cn/forum/thread-105069-1-1.html
下面这张图是我自己飞线并的照片,操作的关键点有两个:第一飞线后要用热熔胶及时固定,这样不怕外力影响;第二飞线后要打标签,接错线是要烧调试器的,尤其是Vref3.3接到了GND,一共七根线。


下面这张图是路由器和jlink连接图:


jlinkV8_20pin 引脚定义,以缺口在左面的视图基准,SRST_N和RTCK引脚不需要接。



#############################分割线#################################
下面来看软件部分,在windows下运行openocd主要是驱动的问题,openocd在windows下使用libusb的方式兼容各种jtag调试器,首先保证jlink在你所在的操作系统驱动安装正常,使用j-link commander 查看一下,能识别就OK。


然后下载这个软件zadig    http://zadig.akeo.ie/   根据操作系统下载,免安装,建议关掉各种杀毒和防护软件后使用。打开后,Option-->List All Devices.  然后在下拉菜单找到 J-Link 项 然后 Install Driver


  安装成功后jlink从通用串行总线控制器里跑到了 Universal Serial Bus devices 里面,这样openocd就能识别了,但是需要注意的是这是segger的官方工具就不能识别jlink了,救砖后再把libusb驱动卸载掉就OK了


然后请出今天的主角 OPENOCD
跳过编译这一步吧,有高人已经将openocd编译到了windows平台
http://www.freddiechopin.info/en/download/category/4-openocd
建议下载0.9.0版本,相比之前版本对jlink做了很多优化,经实践,稳定性最好;
将下载的openocd 解压,然后进入 bin目录,将附件里的配置文件放到bin目录下 一共三个文件
cmd.cmd, jlink.cmd, openocd-ralink-jlink.cfg
然后执行 cmd.cmd 在弹出的命令行里输入 jlink


OK . 可以调试了,在本机或其他联网电脑 telnet ip 4444 就能调试了,进入openocd 的调试窗口后 输入命令  scan_chain  如果能识别出当前CPU 就说明一切OK了。下面是成功识别后截图


针对不同的路由器,jtag的思路都是这样,这里关键点是openocd的配置文件的编写,这就需要花点力气阅读以下openocd 的 OpenOCD User's Guide  ,具体的配置文件怎么编写等小弟下回分解吧,先到这里,希望这个分享能帮到大家。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 3恩山币 +3 收起 理由
swigger + 1 风清云淡、飘逸悠然……极爽!
siasjack + 1 强大的恩山!(以下重复1万次)
宇蓝色飞扬 + 1 泥马,真给力,我要顶!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2016-8-5 19:57 | 显示全部楼层
gordonfreeman 发表于 2016-8-5 14:53
不知道这个方法速度如何。用Brjtag + jlink +libusb来救 HG320,写入128KB的CFE要6000秒左右,非常的慢。

我一般不用jtag的方式写flash,用jtag把U-Boot加载到RAM,然后运行RAM里的U-Boot,这样只要RAM里的U-Boot功能全就可以各种方式写flash,比如web方式。

点评

太专业了,膜拜一下。  详情 回复 发表于 2016-8-5 20:51
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2016-8-6 16:18 | 显示全部楼层
本帖最后由 aggresss 于 2016-8-6 16:21 编辑
gordonfreeman 发表于 2016-8-5 20:51
太专业了,膜拜一下。

别这样折煞小弟,是因为我不太会写flash的配置文件才这样做的,我用jlink下载到ram的信息帖上来,速度还行38kb/s,一个U-Boot 3秒左右。
Open On-Chip Debugger
> halt
target state: halted
target halted in MIPS32 mode due to debug-request, pc: 0x9f000380
> ralink_init
> run_uboot
125248 bytes written at address 0x00200000
downloaded 125248 bytes in 3.163181s (38.668 KiB/s)
>


点评

我完全是外行,都不会配置openocd  详情 回复 发表于 2016-8-6 21:02
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2017-1-23 21:17 | 显示全部楼层
wyn20007 发表于 2016-12-2 22:58
按照lz 的方法,一直出错,lz能看看,是什么原因;

Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED   

libusb 驱动没安装好的问题好像, 您可以直接在linux环境下试一下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-3-29 21:09

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表