关于用JLINK下载程序到博创UP-TECH2410板子上自动重启的问题__zhusjian
2013-09-12 14:43
309 查看
问题是这样的
大概一个月前,我在IAR6.1上建了一个S3C2410的工程,我这边有两种板子,一块优龙FS2410板子,两块博创UP-TECH2410的板子,对应的也有两种调试器,优龙的使用的是DragonJtag,一端跟电脑的并口相连接,一端连接板子的JTAG接口,优龙的板子是标准的20针JTAG接口,编译环境是ADS1.2,调试的时候还有AXD,你懂的,蛮老了,现在ADS好像是被KEIL收购了吧,博创的板子是标准的14针的JTAG接口,这两种板子的历史有点久远,我当初学习使用的是优龙的板子,由于实际情况需要就翻出了两块博创的板子,也是师兄以前做项目的时候使用了的,我这边有ADS1.2下建立的工程,用dragonjtag调试,在优龙的板子上没有问题,由于博创的板子是14针的JTAG接口,我在盒子里边找到一个20针转14针的JTAG转接板,使用转接板,使用dragonjtag在博创的板子上下载调试也正常,当初也就是想检测下板子还是不是好的,毕竟放了这么久,检查完后就放在一边了,扯的有点远,IAR上建立的过程编译后,使用JLINK
V8(以前基本没有使用过JLINK和IAR),调试器下载,在优龙的板子上可以正常下载,也可以正常DEBUG,总之在优龙的板子上everything is OK,大概是一个星期前吧,我就想用JLINK把IAR上的程序下载到博创的板子上去,因为JLINK的JTAG接口也是20针的,中间只能使用转接板,就在这时,问题出现了,我一点这个下载
![](http://img.blog.csdn.net/20130912144125375?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNqYWxpdmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
博创的板子竟然会自动重启,我开始以为是偶然现象,结果发现每次都这样,下载时弹出的log如下:
![](http://img.blog.csdn.net/20130912144137359?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNqYWxpdmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
,后来我就对比看用JLINK在优龙的板子上下载时的log信息,却发现跟上图是一样的信息,更奇怪的是并不只是在下载时板子才会自动重启,而是我将JLINK连上板子后,给板子上电的时候板子就自动重启了,我当时真有点欲哭无泪的赶脚,由于我是个菜鸟,平时也就跟代码打交道,对于这种问题,真是感觉莫名其妙。
当时的第一时间反应就是找万能的度娘,确实有人遇到我这样的问题,但是很少有下文,没有解决方案。后来也在几个群里描述了这个问题,也问过认识的一些牛人,后来怀疑是硬件电路的问题。
后来冷静下分析问题,
使用dragonjtag(20针JTAG接口)在优龙(20针JTAG接口)和博创的板子(14针JTAG接口,使用转接板)上下载调试程序都没有问题,就是使用JLINK(20针JTAG接口),在优龙的板子上调试下载还是好的,在博创的板子上下载程序时板子会自动重启,并且是JLINK连上板子后,一给JLINK上电板子就会自动重启,当时就是去看两块板子的PCB原理图上的JTAG部分电路图,优龙的板子原理图上就没有把JTAG部分的电路图给出来,还好博创的板子有给出JTAG电路图,如下:
![](http://img.blog.csdn.net/20130912144200671?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNqYWxpdmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
图上的注释是我后来添加的,后来又在网上找JTAG接口电路的分析,找了几位大大的文档,整理了下,下边会将文档贴上来。下边是20针和14针JTAG接口的图
![](http://img.blog.csdn.net/20130912144226906?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNqYWxpdmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
典型JTAG连接图
![](http://img.blog.csdn.net/20130912144254109?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNqYWxpdmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
现JTAG(Joint Test Action Group;联合测试行动小组)已经是一种国际标准测试协议(IEEE 1149.1兼容),既然有标准的话就比较好处理了,照着标准来呗。
标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
TCK——测试时钟输入;
TDI——测试数据输入,数据通过TDI输入JTAG口;
TDO——测试数据输出,数据通过TDO从JTAG口输出;
TMS——测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式。
JTAG各引脚功能描述
![](http://img.blog.csdn.net/20130912144306625?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNqYWxpdmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
上边有点是直接COPY的,上边博创板子的JTAG图中,电阻的值是我用万用表打的,我在优龙的板子上,我觉得既然有标准的JTAG连接图的话,优龙的板子上的JTAG电路也应该是差不多,确实在20针JTAG旁边看到有4个电阻,用万用表打都是10K左右,上边博创的板子上边的电阻就有一个是6.4K左右,我就将这个记下来了。跟这个电阻相连的又是一个复位信号引脚nTRST,联想上边的情况,给JLINK上电(JLINK的USB接口跟电脑连接),事板子会自动重启,再看上表中队nTRST引脚的描述,目标板上应将此脚上拉到高电平,避免意外,后来在面包板上做了个转接口,跟6.4K电阻串了个5.1K的电阻,可是板子还是会自动重启,又受打击了。
后来想想板子为什么还是会自动重启呢,我注意到上图中有个RTCK引脚,14针JTAG没有这个脚,也就是不使用这个功能,要将这个脚接地,我又把这个脚接地了,可是还是不行。OH MY GOD.大哥我是搞软件的,这种问题怎么会出现在我身上,哥们当时真的是想各种爆粗口了。但是没有办法,还得继续….
为什么还是自动重启,熬了一个晚上,各种找资料,度娘,谷哥,发现有个一个文档上说14针JTAG口中的nSRST(也就是板子上的复位信号引脚)要NC(NOT CONNECTED不需要连接,是不是要悬空?)我之前在我的面包板上都是讲14针JTAG口的nSRST脚与JLINK的 nSRST脚直接相连,后来我在面包板上将这个脚悬空了,神奇的一幕发生了,竟然可以下载程序了,也可以调试了。
后来我又将与6.4K电阻串联的5.1K电阻撤掉,又不行了,后来又加上来,却又可以了。在串电阻和将nSRST脚悬空的前提下我尝试将nRTCK脚不接地,就悬空着,发现也可以。
后来想想为什么将nSRST脚悬空就可以呢?我把JLINK的盒子打开,连上面包板,连上博创的板子,用万用表打nSRST脚的电压,却是0,问题就很显然了,nSRST脚是直接连的板子的复位开关的,这个脚是低电平就复位的。
我勒个去,问题是解决了,却花了我将近一个星期的时间,不过从开始遇到问题感觉各种无赖,欲哭无泪,无助,到解决问题后的愉悦,这种感觉还是很爽的。
昨天晚上搞到3点钟,当时却拿不到工具,今天上午各种尝试之后终于是把问题解决了,还是挺庆幸的。
总结:
虽然我使用的dragonjtag和jlink调试器都是标准20的JTAG接口,但是两种调试器里边的电路可能是不一样的,所以有些引脚的信号输出也就不同,这里需要注意,需要实际情况实际分析。
大概一个月前,我在IAR6.1上建了一个S3C2410的工程,我这边有两种板子,一块优龙FS2410板子,两块博创UP-TECH2410的板子,对应的也有两种调试器,优龙的使用的是DragonJtag,一端跟电脑的并口相连接,一端连接板子的JTAG接口,优龙的板子是标准的20针JTAG接口,编译环境是ADS1.2,调试的时候还有AXD,你懂的,蛮老了,现在ADS好像是被KEIL收购了吧,博创的板子是标准的14针的JTAG接口,这两种板子的历史有点久远,我当初学习使用的是优龙的板子,由于实际情况需要就翻出了两块博创的板子,也是师兄以前做项目的时候使用了的,我这边有ADS1.2下建立的工程,用dragonjtag调试,在优龙的板子上没有问题,由于博创的板子是14针的JTAG接口,我在盒子里边找到一个20针转14针的JTAG转接板,使用转接板,使用dragonjtag在博创的板子上下载调试也正常,当初也就是想检测下板子还是不是好的,毕竟放了这么久,检查完后就放在一边了,扯的有点远,IAR上建立的过程编译后,使用JLINK
V8(以前基本没有使用过JLINK和IAR),调试器下载,在优龙的板子上可以正常下载,也可以正常DEBUG,总之在优龙的板子上everything is OK,大概是一个星期前吧,我就想用JLINK把IAR上的程序下载到博创的板子上去,因为JLINK的JTAG接口也是20针的,中间只能使用转接板,就在这时,问题出现了,我一点这个下载
博创的板子竟然会自动重启,我开始以为是偶然现象,结果发现每次都这样,下载时弹出的log如下:
,后来我就对比看用JLINK在优龙的板子上下载时的log信息,却发现跟上图是一样的信息,更奇怪的是并不只是在下载时板子才会自动重启,而是我将JLINK连上板子后,给板子上电的时候板子就自动重启了,我当时真有点欲哭无泪的赶脚,由于我是个菜鸟,平时也就跟代码打交道,对于这种问题,真是感觉莫名其妙。
当时的第一时间反应就是找万能的度娘,确实有人遇到我这样的问题,但是很少有下文,没有解决方案。后来也在几个群里描述了这个问题,也问过认识的一些牛人,后来怀疑是硬件电路的问题。
后来冷静下分析问题,
使用dragonjtag(20针JTAG接口)在优龙(20针JTAG接口)和博创的板子(14针JTAG接口,使用转接板)上下载调试程序都没有问题,就是使用JLINK(20针JTAG接口),在优龙的板子上调试下载还是好的,在博创的板子上下载程序时板子会自动重启,并且是JLINK连上板子后,一给JLINK上电板子就会自动重启,当时就是去看两块板子的PCB原理图上的JTAG部分电路图,优龙的板子原理图上就没有把JTAG部分的电路图给出来,还好博创的板子有给出JTAG电路图,如下:
图上的注释是我后来添加的,后来又在网上找JTAG接口电路的分析,找了几位大大的文档,整理了下,下边会将文档贴上来。下边是20针和14针JTAG接口的图
典型JTAG连接图
现JTAG(Joint Test Action Group;联合测试行动小组)已经是一种国际标准测试协议(IEEE 1149.1兼容),既然有标准的话就比较好处理了,照着标准来呗。
标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
TCK——测试时钟输入;
TDI——测试数据输入,数据通过TDI输入JTAG口;
TDO——测试数据输出,数据通过TDO从JTAG口输出;
TMS——测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式。
JTAG各引脚功能描述
上边有点是直接COPY的,上边博创板子的JTAG图中,电阻的值是我用万用表打的,我在优龙的板子上,我觉得既然有标准的JTAG连接图的话,优龙的板子上的JTAG电路也应该是差不多,确实在20针JTAG旁边看到有4个电阻,用万用表打都是10K左右,上边博创的板子上边的电阻就有一个是6.4K左右,我就将这个记下来了。跟这个电阻相连的又是一个复位信号引脚nTRST,联想上边的情况,给JLINK上电(JLINK的USB接口跟电脑连接),事板子会自动重启,再看上表中队nTRST引脚的描述,目标板上应将此脚上拉到高电平,避免意外,后来在面包板上做了个转接口,跟6.4K电阻串了个5.1K的电阻,可是板子还是会自动重启,又受打击了。
后来想想板子为什么还是会自动重启呢,我注意到上图中有个RTCK引脚,14针JTAG没有这个脚,也就是不使用这个功能,要将这个脚接地,我又把这个脚接地了,可是还是不行。OH MY GOD.大哥我是搞软件的,这种问题怎么会出现在我身上,哥们当时真的是想各种爆粗口了。但是没有办法,还得继续….
为什么还是自动重启,熬了一个晚上,各种找资料,度娘,谷哥,发现有个一个文档上说14针JTAG口中的nSRST(也就是板子上的复位信号引脚)要NC(NOT CONNECTED不需要连接,是不是要悬空?)我之前在我的面包板上都是讲14针JTAG口的nSRST脚与JLINK的 nSRST脚直接相连,后来我在面包板上将这个脚悬空了,神奇的一幕发生了,竟然可以下载程序了,也可以调试了。
后来我又将与6.4K电阻串联的5.1K电阻撤掉,又不行了,后来又加上来,却又可以了。在串电阻和将nSRST脚悬空的前提下我尝试将nRTCK脚不接地,就悬空着,发现也可以。
后来想想为什么将nSRST脚悬空就可以呢?我把JLINK的盒子打开,连上面包板,连上博创的板子,用万用表打nSRST脚的电压,却是0,问题就很显然了,nSRST脚是直接连的板子的复位开关的,这个脚是低电平就复位的。
我勒个去,问题是解决了,却花了我将近一个星期的时间,不过从开始遇到问题感觉各种无赖,欲哭无泪,无助,到解决问题后的愉悦,这种感觉还是很爽的。
昨天晚上搞到3点钟,当时却拿不到工具,今天上午各种尝试之后终于是把问题解决了,还是挺庆幸的。
总结:
虽然我使用的dragonjtag和jlink调试器都是标准20的JTAG接口,但是两种调试器里边的电路可能是不一样的,所以有些引脚的信号输出也就不同,这里需要注意,需要实际情况实际分析。
相关文章推荐
- 关于android中版本自动更新,从服务器下载下来的文件不能安装的问题
- 关于虚拟机关机/重启后自动还原的问题解决方案
- 关于程序进入包含EditText控件的界面会自动获取焦点并弹出软键盘影响用户体验的问题
- 关于软件raid(mdadm)在重启机器后不会自动运行的问题
- 关于win10 遇到无限重启问题-你的电脑将在一分钟后自动重启
- Python自动载入模块时模块变更需重启主程序问题
- STM32F10x 学习笔记9(解决JLink 无法下载程序的问题)
- 关于《51单片机常用模块设计查询手册程序与pdf.zip.001》一书下载问题
- 关于J-LINK程序下载出现的问题
- 关于使用IAR软件stlink下载stm8程序失败问题
- 解决Android后台清理APP后,程序自动重启的问题
- STM32F10x 学习笔记之解决JLink 无法下载程序的问题
- STM32F10x 学习笔记9(解决JLink 无法下载程序的问题)
- 关于maven-jetty-plugin 自动重启问题
- LPC2378-Jlink 能下载程序,但是调试出现各种奇怪问题
- 关于ISP下载中 编译后自动下载代码不能执行完成的一点问题
- 关于 通过jlink使用jtag(或swd)下载程序成功后,keil4 uversion停止运行 的解决方法
- 关于停断电后电脑自动开机重启的问题
- LPC2378-Jlink 能下载程序,但是调试出现各种奇怪问题
- 关于STM8的程序下载问题:SWIM Error[30006]报错解决办法汇总