|
搞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, 杜汶泽)
|