找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于jlink+openocd的救砖方法

[复制链接]
本帖最后由 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 收起 理由
swi*** + 1 风清云淡、飘逸悠然……极爽!
sias*** + 1 强大的恩山!(以下重复1万次)
宇蓝*** + 1 泥马,真给力,我要顶!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
不错,很详细,学习了,这个一定要支持。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

不知道这个方法速度如何。用Brjtag + jlink +libusb来救 HG320,写入128KB的CFE要6000秒左右,非常的慢。

点评

我一般不用jtag的方式写flash,用jtag把U-Boot加载到RAM,然后运行RAM里的U-Boot,这样只要RAM里的U-Boot功能全就可以各种方式写flash,比如web方式。  详情 回复 发表于 2016-8-5 19:57
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

zadig是个好东西,它里面的libusb是有签名的,可以在正常模式下使用,不用启动到安全模式去,尽管Brjtag性能没有提升,但是还是方便了很多。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
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.
回复

使用道具 举报

aggresss 发表于 2016-8-5 19:57
我一般不用jtag的方式写flash,用jtag把U-Boot加载到RAM,然后运行RAM里的U-Boot,这样只要RAM里的U-Boot ...

太专业了,膜拜一下。

点评

别这样折煞小弟,是因为我不太会写flash的配置文件才这样做的,我用jlink下载到ram的截图给你发一个,速度还行38kb/s.  详情 回复 发表于 2016-8-6 16:18
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
本帖最后由 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.
回复

使用道具 举报

aggresss 发表于 2016-8-6 16:18
别这样折煞小弟,是因为我不太会写flash的配置文件才这样做的,我用jlink下载到ram的信息帖上来,速度还 ...

我完全是外行,都不会配置openocd
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
好东东,谢谢了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

到处找方法啊,希望这个能用啊
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本帖最后由 wyn20007 于 2016-12-2 23:02 编辑

按照lz 的方法,一直出错,lz能看看,是什么原因;



jlink:信息


F:\openocd-0.9.0\bin>jlink                                    
                                                                           
F:\openocd-0.9.0\bin>openocd.exe -f  openocd-ralink-jlink.cfg
Open On-Chip Debugger 0.9.0 (2015-05-19-12:06  
Licensed under GNU GPL v2                                   
For bug reports, read                                            
       http://openocd.org/doc/doxygen/bugs.html     
adapter speed: 500 kHz                                       
DEPRECATED! use 'adapter_nsrst_delay' not 'jtag_nsrst_delay'
adapter_nsrst_delay: 100                                      
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'
jtag_ntrst_delay: 100                                            
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : J-Link V9 compiled Apr 22 2016 11:47:06      
Info : J-Link caps 0xb9ff7bbf                                   
Info : J-Link hw version 92000                                
Info : J-Link hw type J-Link                                    
Info : J-Link max mem block 69768                        
Info : J-Link configuration                                      
Info : USB-Address: 0x0                                       
Info : Kickstart power on JTAG-pin 19: 0xffffffff
Info : Vref = 2.976 TCK = 0 TDI = 0 TDO = 0 TMS = 0 SRST = 1 TRST = 1
Info : J-Link JTAG Interface ready                           
Info : clock speed 500 kHz                                    
Error: JTAG scan chain interrogation failed: all zeroes
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: rt30xx.cpu: IR capture error; saw 0x00 not 0x01
Warn : Bypassing JTAG setup events due to errors



本帖子中包含更多资源

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

×

点评

Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED libusb 驱动没安装好的问题好像, 您可以直接在linux环境下试一下  详情 回复 发表于 2017-1-23 21:17
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
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.
回复

使用道具 举报

本帖最后由 micah 于 2017-5-22 19:02 编辑

楼主,路由上3.3V和地我是直接用TTL排针处的可以吧,3.3V是接JLINK V8第二脚吗,要把JLINK V8内的跳线打到3.3V吗
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢分享,学习尝试一下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

高人。。。。。。。。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

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

GMT+8, 2024-4-29 08:59

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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