搜索
bottom↓
回复: 31

深夜了,解开JTAG困扰前进和孕龙逻辑分析仪解码插件BUG的分析

[复制链接]

出0入0汤圆

发表于 2012-9-4 01:27:11 | 显示全部楼层 |阅读模式
搞JTAG时序搞了大半个月,从刚开始消化资料到能通过JTAG读取取LPC1768的芯片ID,熟悉TAP状态机和TCK,TMS,TDI,TD之间的关系,虽然初步想法实现了,但也被目前JTAG解码问题一直困扰了很多天.

从平时周立功的解码插件和孕龙的解码插件来看,个人感觉都不成熟,像孕龙的插件,如果花几千块买到这样不成熟的插件分析数据会走不少弯路,今晚于是对孕龙插件存在问题的BUG从分析,希望厂家能处理,不要像几年前和周工在逻辑分析仪上原本不存在PS2的仪器上增加PS2为何不能实现的问题被周立功否决.那时某型号上没有PS2,结果和周立功的工程师沟通说无法支持,其实当时是想到周功的仪器是用硬件触发的,解码就不清楚是否和硬件有关,但我想到如果硬解频率达不到要求做不到,采集回来的数据为何就不能做,阿莫的开源项目不是取回来后软解吗?当时听到周工的工程师那种自高自大的语气,只有他才是最有权威的,再联想到仿年TKS停止开发,究其原因是JLINK山塞了周功的仪器卖不出去了没人用TKS了还是TKS软件开发过程中没听取别人意见自行自我的,让原来的用户转多去别的开发平台了呢?再想到几天前微博上周功的职员和某位技术牛人的对战,周功应该想想这个问题.题外话不说了.

JTAG TAP时序图(图1)


启动孕龙LA逻辑分析仪(图2)


连接线后获取数据设置解码插件(图3)


如下结果是通过JTAG读取LPC1768的ID(0x4BA00477)(图4)


孕龙解码插件解码结果(图5):


解码插件错误分析:
关于shift_IR BUG分析
Shift_IR程序测试代码(图6)


从图中可知发送出去的TDI数据为1110,16进制结果为0x0e
BUG1:孕龙解码插件解码结果(IR)如下(图7)


分析错误理由:
1.        进入Capture IR后在TMS=1时TCK的上升沿时进入shift-IR
2.        软件移出4bit其间,在第3bit时将TMS=1,在第4bit时移出数据的同时进入Exit-IR

3.        根据JTAG协议,TDI在TCK上升沿前输出,下降沿时TDO采集.上图中samplePoit的下降沿后才对TDO采集,因此得到的结果(图8),TDI结果为1110即0x0e,TDO结果为0001,即0x01.孕龙解码结果为TDI=0x1D,TDO=0x03是完全错误的分析结果

4.        同理孕龙的在Capture-DR到shift-DR同样出现该问题

BUG2:TDI解码时shift_DR或IR解码7bit当一字节,留下1bit当另一字节,TDO解码却没有些事发生(图9)


根据BUG的原理分析如下(图10)


正确的解码结果应该是TDI=0xff,TDO=0x4B,而孕龙的解码结果TDI=0xFF 0x01 TDO=0x4B是错误的

BUG3:既然存在上述BUG1的情况,为何在解码TDO数据时0x77解码是正确的原因分析
根据孕龙插件说明书册和官方JTAG分析的版本(图11)

  
分析,找到官方该版本的描述(图12)


TDO=0x77波形数据截取(图13)


根据当前V1.06.01版本的采样分板,孕龙在解码TDO数据时是如下的采样时间点(图14)


从分析可知在这种情况下,孕龙的错误解码在该特定数据格式下该结果为TDI=0xFF,TDO=0x77正确
正确的解码时间点应该为(图15)



所以在该特定数据下,恰好孕龙似乎是”解码正确”的,只不过恰好”巧合”,其实是完全不正确的

对于BUG2和BUG3的疑问,也许孕龙厂商和网友都在问我的读取数据代码是错误的,那就贴图让大家看看在采集TDO数据时的截力图(图16)



本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2012-9-4 01:29:49 | 显示全部楼层
希望看的网友不要怪,俺语文水平太差了,定作能力不好!另外图片太小了,看起来会吃力,夜深了,该睡觉了

出0入0汤圆

 楼主| 发表于 2012-9-4 01:49:59 | 显示全部楼层
有人会问,在TCK时的TDO,都看不出来是0还是1,根据采集回来的结果:TDO是在TCK的下降沿发生后若干时间后才改变电平状态,即原来是高电平的,在TCK下降沿到来后若干时间后才变为高电时,所以此时读回来仍是0,原来是低电平的,在TCK下降沿到来后若干时间后变为高电平,所以此时读回来仍是1

高到低变化
attach://48384.jpg
低到高变化
attach://48385.jpg

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2012-9-4 02:30:28 | 显示全部楼层
微博上周功的职员和某位技术牛人的对战??

给共享个链接吧,谢谢

出0入0汤圆

 楼主| 发表于 2012-9-4 08:09:42 | 显示全部楼层
alfred1 发表于 2012-9-4 02:30
微博上周功的职员和某位技术牛人的对战??

给共享个链接吧,谢谢

贴子内部部分被删了,周总知道的

出0入0汤圆

 楼主| 发表于 2012-9-4 08:18:55 | 显示全部楼层
今天早上安装了一个ZLG的软件,再来看看ZLG逻辑分析仪的正确解码插图:


TDO输出放大图:

本帖子中包含更多资源

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

x

出0入4汤圆

发表于 2012-9-4 08:38:29 | 显示全部楼层
楼主大牛!I Like!

出0入0汤圆

发表于 2012-9-4 08:39:12 | 显示全部楼层
支持技术贴,一直在郁闷,如果买了孕龙的LA,还要买那么多的插件,没钱诶

出0入442汤圆

发表于 2012-9-4 08:42:07 | 显示全部楼层
没明白LZ的意思,我自己做过JTAG烧录MIPS的程序,JTAG的数据锁存是在TCK上升沿,而不是下降沿;在Shift-IR/DR状态时,TMS为高时读入最后一个bit并进入Update-IR/DR状态。所以可能是LZ理解有误。我的JTAG程序经测试,可以正确读写IDCODE,Probe CMD之类的工作,并且搭配JTAG调试程序,可以调试MIPS处理器,没出过任何问题。即,TDI在TCK上升沿时被移入寄存器,然而TDO是直接和寄存器最低位连着的,即进入Shift-IR/DR状态,读出来的就是最低位。

出0入0汤圆

发表于 2012-9-4 08:43:51 | 显示全部楼层
技术贴还是要支持的

出0入0汤圆

发表于 2012-9-4 09:02:55 | 显示全部楼层
wzavr 发表于 2012-9-4 08:39
支持技术贴,一直在郁闷,如果买了孕龙的LA,还要买那么多的插件,没钱诶 ...

绝大多数常用插件都是免费的~太专业的可能会要钱咯~

出0入0汤圆

 楼主| 发表于 2012-9-4 10:31:25 | 显示全部楼层
本帖最后由 kingsabbit 于 2012-9-4 10:32 编辑
wye11083 发表于 2012-9-4 08:42
没明白LZ的意思,我自己做过JTAG烧录MIPS的程序,JTAG的数据锁存是在TCK上升沿,而不是下降沿;在Shift-IR/ ...


TCK上升沿时锁存TDI,TCK下降沿时锁存TDO。我的读取也正确,只是俺觉得孕龙的解码插件解码存在错误,发出来让大家了解一下

出0入0汤圆

 楼主| 发表于 2012-9-4 10:34:13 | 显示全部楼层
把上述文档整理成PDF,方便直接下载,这样截图更清晰观察

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2012-9-4 10:38:43 | 显示全部楼层
我是专程赶来顶贴的!

依心做学问一向是这么用心专注的!

赞!以后会用得到!

出0入442汤圆

发表于 2012-9-4 10:41:48 | 显示全部楼层
kingsabbit 发表于 2012-9-4 10:31
TCK上升沿时锁存TDI,TCK下降沿时锁存TDO。我的读取也正确,只是俺觉得孕龙的解码插件解码存在错误,发出 ...

你理解还是有出入。记住TDO是和ShfitReg[0]直接连接的,也就是说,你TCK拉高之后,立马就能从TDO中读出下一个bit。

出0入0汤圆

 楼主| 发表于 2012-9-4 10:49:39 | 显示全部楼层
wye11083 发表于 2012-9-4 10:41
你理解还是有出入。记住TDO是和ShfitReg[0]直接连接的,也就是说,你TCK拉高之后,立马就能从TDO中读出下 ...

对的,谢谢wye11083。我的数据采集也是在该时段读取TDO,但孕龙的解码插件就不一样了,它的TDO采集数据是在TCK下降沿半个时钟后读取,所以是错误的。前段时间就因为它的解码误导了我的测试过程和理解,后来通过不同的方式证实,因此就发表今天的贴子分析该插件解码的错误原因

出0入0汤圆

 楼主| 发表于 2012-9-24 18:01:43 | 显示全部楼层
JTAG 协议规范 IEEE1149


本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2012-11-5 23:25:15 | 显示全部楼层
本帖最后由 McuPlayer 于 2012-11-5 23:26 编辑

技术贴啊,挖出来

孕龙的解码模块注册,在DLL中验证的,我在尝试XXOO

出0入0汤圆

发表于 2012-11-6 08:03:23 | 显示全部楼层
我也是用孕龙的,好像他们的解码包对时间要求很高,我前不久用了最新的necIr的时候发现连个信号变化基本一致,只不过时间长度差30ms以内.结果就不能解析出来了.只能自己分解,

出0入0汤圆

 楼主| 发表于 2012-11-18 23:58:52 | 显示全部楼层
zhonggp 发表于 2012-11-6 08:03
我也是用孕龙的,好像他们的解码包对时间要求很高,我前不久用了最新的necIr的时候发现连个信号变化基本一致, ...

它的插件解码不是为何,会把时间都算进去,有时解码I2C和SPI,发觉它这样做解码出来的准确率还不如Slaese,就像I2C,经常出现解释地址错误,原来以为真是数据受干扰了,结果那个slaese抓一下包,地址好好的,没错

出0入0汤圆

发表于 2012-11-19 08:55:47 | 显示全部楼层
kingsabbit 发表于 2012-11-18 23:58
它的插件解码不是为何,会把时间都算进去,有时解码I2C和SPI,发觉它这样做解码出来的准确率还不如Slaese,就 ...

我常用来抓I2C的数据,到目前为止还没有发现有这个问题,不知道是不是我I2C的速率比较低的原因.100K以内的.

出0入0汤圆

 楼主| 发表于 2012-11-26 18:31:54 | 显示全部楼层
zhonggp 发表于 2012-11-19 08:55
我常用来抓I2C的数据,到目前为止还没有发现有这个问题,不知道是不是我I2C的速率比较低的原因.100K以内的. ...

估计也是吧,我抓的是400K的,有时地址解释错误,这样才发觉它的波形的时间有问题

出0入0汤圆

发表于 2012-11-26 18:40:58 | 显示全部楼层
只要孕龙的解码插件有问题,提出客诉,一定会帮你处理的,可能1~2周吧,也可能会更长一些.

出0入0汤圆

发表于 2012-11-26 18:55:55 | 显示全部楼层
kingsabbit 发表于 2012-11-18 23:58
它的插件解码不是为何,会把时间都算进去,有时解码I2C和SPI,发觉它这样做解码出来的准确率还不如Slaese,就 ...

一般采样率在信号频率的10倍左右不容易出问题..还有I2C这个解码插件是还存在一些BUG..

出0入0汤圆

发表于 2012-11-26 19:58:53 | 显示全部楼层
本帖最后由 john_patson 于 2012-11-26 20:07 编辑

我是在孕龙工作的,前几个月接手了你这个问题,因为这个模组是之前离职工程师所写的模组,在此之前测试时我并不知道他是如何验证通过的,根据你发现的BUG跟我们反应后,我们马上查找了问题并修改了,最新版的dll添加了一个百分比取样位置,分别在上升沿或下降沿处的百分比进行取样数据。你试着用最新版的的试一试。这个是软件那边在解码时解错了,之前测试时没有发现出来。因为根据我们的规格书:
TDI是在上升沿时取样数据,第一个时钟周期为进入是判断是否进入了SHIFT-IR/DR状态,而后接着的第二个时钟的上升沿时才取样数据。
TDO是在下降沿时取样数据,在第一个时钟周期同样是判断是否进入SHIFT-IR/DR状态,接着的下降沿才是取样数据,为了兼固用户在测试时缺少最后一个退出SHIFT-IR/DR状态数据,TDO在退出SHIFT-IR/DR状态时加多采样一位即在EXIT那一位取多了一位。数据封包是以8位为一字节进行封包处理。


关于你在TDO解码为0x03这个数据也是根据这样原理解码得出。因为TDI解码出错时,是因为把第一个时钟周期的上升沿的数据采样进去了。导致数据变成0x1D,解码错误了。最新版的dll中更改了TDI这个问题后已经能够正确解码。如果有什么问题可以跟告知孕龙客服,我们会第一时间查找问题并更改,因为任何一个软件不可能没有bug的,只是我们没有发现到,我只能做到在模组发布之时严格测试并尽量查找软件的bug,发现一个bug,立马修改一个bug。



还有一个问题其它网友提到解码有时正确有时不正确的问题,可能是你的取样频率不足,最低要求就是取样频率最少是目标频率的4倍,假如我目标讯号通讯频率为10M,那样我逻辑分析仪的取样频率就要最少为40M或更高,那样采样出来的数据才不会遗漏。

本帖子中包含更多资源

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

x

出0入4汤圆

发表于 2012-11-27 08:28:15 | 显示全部楼层
john_patson 发表于 2012-11-26 19:58
我是在孕龙工作的,前几个月接手了你这个问题,因为这个模组是之前离职工程师所写的模组,在此之前测试时我 ...

竟然碰到孕龙的工程师,哈。

出0入0汤圆

发表于 2012-11-27 08:31:04 | 显示全部楼层
楼主因为这个问题和我在QQ上也讨论了很多次,终于有孕龙的人跟进了。

出20入0汤圆

发表于 2012-11-27 10:23:31 | 显示全部楼层
孕龙的采样率如果不足4倍,数据是会出错的。我验证过的。不过后来买了其他家的逻辑分析仪。

出0入0汤圆

 楼主| 发表于 2012-12-8 14:09:41 | 显示全部楼层
john_patson 发表于 2012-11-26 19:58
我是在孕龙工作的,前几个月接手了你这个问题,因为这个模组是之前离职工程师所写的模组,在此之前测试时我 ...

感觉和孕龙沟通费了不少力气,估计是公司流程慢吧,也因为你们公司这个BUG让我写了一个不同的算法和费时一个月去证明你们的BUG确实存在时才发表声明和提出问题,最近发现在SWD协议就没时间去和你们沟通了。建议你们能把一些协议文档公开出来或者把DLL打成包供下载,单个协议实在是太大了,没有必要用时都不购买和下载

出0入0汤圆

发表于 2012-12-9 17:27:43 | 显示全部楼层
kingsabbit 发表于 2012-12-8 14:09
感觉和孕龙沟通费了不少力气,估计是公司流程慢吧,也因为你们公司这个BUG让我写了一个不同的算法和费时 ...

公开协议文档的话,我个人觉得公司不可能会采纳这个建议了,你这个问题我会跟我们的主管建议一下直接提供DLL文件了,我也觉得直接提供DLL文件更方便了,一个DLL文件也不大,最大也不超5M了。不像现在那样提供安装包,太大太麻烦了,这个SWD协议是本人负责编写规范文档的,软件DLL部份编写的人员前个星期刚走了,如果有什么问题可以直接跟我提问,SWD协议我建议你采样频率最少是目标通讯频率的4倍或以上了。因为我在测试时用2倍的采样频率也会解码错误,最少也要是4倍或以上。

出0入0汤圆

 楼主| 发表于 2012-12-9 23:49:51 | 显示全部楼层
john_patson 发表于 2012-12-9 17:27
公开协议文档的话,我个人觉得公司不可能会采纳这个建议了,你这个问题我会跟我们的主管建议一下直接提供 ...

有空和你讨论一下SWD的问题

出0入0汤圆

发表于 2013-4-26 18:22:16 | 显示全部楼层
我最近再做一个类似JTAG的模块,又搜到这个帖子了,又仔细看了一遍群主的文字

孕龙解码的早期版本译码错误,
TDI 出错,进入Shift状态的那个上升沿所对应的TDI是不能采样的,否则就会多一个bit了
TDO出错:TDO也应该在上升沿采样,但采样的是上升沿前面的TDO数值,也就是说上升沿之后TDO就该变化了,从细分角度看,应该是在上升沿来之前采样TDO

JTAG协议中所说,TDO在下降沿采样,指的是被测试器件的TDO在下降沿更新,但测试仪器而言,应该是上升边沿采样了
这个2个边沿之间的时间差,是给setup time用的
至于要提前于这个上升沿来采样,是为了足够的hold time时间
楼主的PDF最后一个i图,TDO的改变稍微落后于TCK的下降沿,这个差可以理解为setup time
这个和SPI的时序是类似的

晕龙对TDO采样错,是因为在上升边沿之后采样
其实应该是上升沿之前,也要保证下降沿之后的时间距离,简单说就是setup time和hold time都要满足
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 12:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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