跳至主要内容

JTAG链路快速扫描方法

充分利用现有标准作为基础,是保证方案稳定而有效的一个原则。本文分析了IEEE1149.1协议,在与标准兼容的基础上,提供了一种快速扫描JTAG链路的方法。

根据IEEE1149.1-2001,存在如下规则:

  1. Test-Logic-Reset状态下,测试逻辑被禁用,器件正常工作。TAP在下列条件下会进入Test-Logic-Reset状态:(a)上电,(bTRST置低电平,(c)通过TMSTCK迁跃状态。不论TAP当前的状态如何,在连续5TCK的上升沿将TMS保持为高,即可使TAP进入Test-Logic-Reset状态。

  2. 每个设备都必须提供BYPASS指令,如果提供设备标志寄存器,则必须同时提供IDCODE指令。

  3. TAP的驱动下,进入Test-Logic-Reset状态后,IDCODE指令必须在TCK下降沿被锁存到指令寄存器(如果设备不提供IDCODE指令,则锁存BYPASS指令)。所有TAP状态的切换必须在TCK的上升沿发生。

  4. BYPASS数据寄存器长度为1,在Capture-DR状态下TCK上升沿,移位寄存器必须被设为0IDCODE数据寄存器长度为32,在Capture-DR状态下TCK上升沿,移位寄存器被设为设备标志码。设备ID数据寄存器最低位为1

  1. Manufacturer Identity不可能为全1。根据Rules 12.2.111位的厂商代码分为两个部分:7-1位来自EIA/JEP106定义的代码的低7位(最高位为校验位),11-8位为连接码符总数目与16的模。目前尚不清楚厂商代码如何计算连接码,但是连接码定义为7F,因此7-1不可能为全1,进而厂商代码不可能为全1

  2. 00001111111为无效的厂商代码,任何与IEEE1149兼容的设备都不使用该代码。

根据上述事实,JTAG链扫描的方案设计如下:
  1. 连续产生5TCK,并保持TMS为高,使TAP进入Test-Logic-Reset状态。

  2. TDI移入1位’1’,读取TDO。如果TDO0转至第3步,如果TDO1转至第4步。

  3. TDO0表明设备连通了BYPASS寄存器,将设备识别状态置为UNKNOWN并转至第2步。

  4. 如果为1表明设备连通了设备ID寄存器,再向TDI移入31个’1’,从TDO读取31个位,已读取的32位即为设备ID。首先检查厂商代码是否为00001111111,如匹配则表明提示链中有不兼容设备存在,直接返回,否则继续。检查设备ID是否为321,如果是321表明扫描结束,转至第5步,否则将32位设备ID与已知设备ID进行匹配,匹配成功的显示设备信息,匹配不成功的显示UNKNOWN及设备ID,转至第2步。

  5. 更新信息,结束。

上述方法有一个前提:JTAG链正常,信号不存在不连通的情况。

当然,在实际情况中,这个前提通常不能满足,软件要考虑JTAG链断链或者器件故障等情况造成信号不通的异常情况,必须在流程上予以保证。标准没有对JTAG链上设备的最大数目作限制,但我们可以根据现有硬件的条件设定一个最大设备数(如10个),当已识别出的设备数超出该最大值时,可以认为链路故障。只要强加上述条件,在发生故障时,不论TDO信号恒为0,恒为1或者不断变化,都可以保证软件不会进入死循环。而只要链路正常,一定可以扫描到321。

评论

此博客中的热门博文

反转剧

这两天明显感到天气转冷,呱呱的家里也已经下起了大雪,南京则是阴冷潮湿,让人没有了出行的欲望。没想到躲在被子里看反转剧也成了度过寒冬的一剂良药。在PPLive越来越让人失望的时候,PPStream横空出世,虽然广告仍是少不了的主题,但从视频质量和播放连续性上来说都超过PPLive,实为居家必备之良品(由此可见,新事物一定会战胜旧事物......)。韩国的反转剧最近似乎比较流行,称之为反转剧就在于其结果总是让人出乎意料,不合常理,其间又不乏各种搞怪搞笑的镜头,各种当红帅哥美女也一定让DDMM们爱不释手,20~30分钟一集的剧情一改韩剧拖沓的风貌,想看就看,容易切入。 反转剧,今天你看了吗?

低谷

近段时间,小猪的身体不好,连续好几个周末游走于各个医院,两人的心情也坏到了极点。现在的小猪已俨然成为一个药罐子,不再提当年之勇。这个周末又发起烧来,像一滩烂泥似地躺在床上,真是祸不单行。 而我呢,由于前任离职的缘故,现在出奇地忙,每天就像打仗似地,压得人喘不过气来,工作与家庭,真有些夹缝中求生存的感觉,两头都要兼顾,我想这一次我们是真的走到一个低谷了吧。 希望这一切都会过去,一切都能圆满地解决。

Black Hawk Down

ONLY THE DEAD HAVE SEEN THE END OF WAR. PLATO 黑鹰坠落,拍了有好几年了,虽然根据这个事件改编的游戏很早就玩过,电影今天还是第一次看。 电影无疑是血腥的,战争无疑是残酷的。 一开始指挥官就低估了战局,民兵数量如此之多,对比悬殊,再加上作战基本上是巷战,让人防不胜防,空中掩护无法有效地展开。在车队前往坠机地点时,那情景就和游戏里一样,“it's a dead trap”,建筑物窗口,顶层,满是民兵,装甲车炮手目标太明显,如果不是民兵的射击准确度太低,恐怕早就被全部打死了。似乎美国片总是在宣扬一种精神:不能落下一人,在这样的战况下还做出这样的决定,我不清楚这种精神是骨子里的,还是政治上的,然而牺牲的总是战士,有太多不属于我们的战争。 有几个地方印象比较深刻: 最先被RPG炸死的装甲车炮手,下半身已经炸没了,死前的话还是希望告诉女儿他很好,我想对于士兵,要么家是一个太遥远的概念,要么就是最痛心的牵挂了。 在车队通过四处伏击的巷道时,第一辆车正面被RPG击中,驾驶员的眼晴已经瞎了,然而还是要咬着牙踏油门,不能停,在那样的情况下,如果第一辆车停下,整个车队都将被覆灭。 第二架被击落的黑鹰驾驶员Durant被俘后,与Aidid的人有这样的对话: What do you want with me? You have taken hostages. We have you. My government will never negotiate for me. Then perhaps you and I can negotiate, huh? Soldier to soldier. I'm not in charge. Course not. You have the power to kill, but not negotiate. In Somalia, killing is negotiation. Do you really think if you get General Aidid...we will simply put down our weapons...and a...