您的位置:首页 > 其它

关于用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针的,中间只能使用转接板,就在这时,问题出现了,我一点这个下载


博创的板子竟然会自动重启,我开始以为是偶然现象,结果发现每次都这样,下载时弹出的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接口,但是两种调试器里边的电路可能是不一样的,所以有些引脚的信号输出也就不同,这里需要注意,需要实际情况实际分析。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: