版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、准备知识A、基本的状态机知识B、基本的C语言能力,包括位操作、常用宏定义、数组、指针等常见内容C会使用一种单片机D、熟悉SPI协议的物理原理E、XJTAG的好奇和兴趣JTAG协议是目前应用最广泛的下载和仿真协议,对协议的最初缔造者来说,这也许 有点无心插柳柳成荫的感觉 最初的JTAGB议只是用来辅助专门的硬件质检部门对印 刷电路进行检测的。这些老账现不再提了 我们现在看到的各种 JTAG下载和仿真协议都是各生产厂商在原有JTAG协议的思想上进行扩充的,并不具有通用性,甚至连最基本的电路检测部分功能也被加以改造比如,一个JTAG旨令可能在大部分的版本中是4位长度的,而对于 AVR32来说,一个J
2、TAG旨令却是5位。总之,现在大行其道的JTAGW议,不变的部分就只有其核心 TAP状态机了。 ARM 有 ARM 的 JTAG AVR 有 AVR 的 JTAG 51 有 51 的 JTAG在这样一个缺乏统一标准的街头” JTAG代,如果你想学好 JTAG下载仿真协议的破解,就必须从TAP 状态机开始。原理解析在你被复杂的时序图弄得眼花缭乱之前,你应该首先记住以下的断言:A、JTAG协议的本质与SPI协议并没有什么不同,它等于一个复杂的SS状态机+变长的MOSI和MISO数据移位操作。不过所谓的变长,都是事先约定好的。B JTAG协议是一个同步通讯协议,它是全双工的。它的通讯原则是以物易物”
3、一一即你如果想得到某些东西,你必须先给与相同长度的内容;你如果只是想发送一些数据,也会自动获取相同长度的内容,至于交换的内容是否有意义,这是另外一回事了。C JTAG协议无论多么复杂,实际上只有4根线起作用(有时候还有两根鸡肋的nSRST和TRST,他们分别是 TMS、TCK TDI和TDO,他们分别对应 SPI协议里面的 SS SCK MOSI和MISO。在本质上,他们并没有什么不同。即便是 ARM的JTAG那么多的引脚, 实际上起作用JTAG的也就这4根线而已。D、JTAG的数据操作都是基于移位寄存器的。E、如果JTAG协议在某个下载仿真协议中只是用来发送控制信息和少量的数据,而大量的数据
4、传输是通过额外的其它引脚进行的,即便这个协议被称为 JTAG仿真其本质也早已超过JTAG了,严格来说,不应该称之为JTAG因为JTAG协议中就只有4根线(有时候也算上nSRSTS TRST而已。典型的如 NEXUS协议。说了这么多,我们终于可以开始正式的讲解了。一、从 SPI到 JTAG如果熟悉SPI,你会发现SPI是如此的简单、和谐一一一根用于二进制位同步的时钟 线SCK 一根用于主机发送到从机的数据线MOSI (Master Out Slave In), 一根用于从机发送到主机的数据线 MISO ( MasterIn Slave Out),外加一根用于复位 SPI从机控制器以达 到通讯同步
5、的控制信号 SS (不妨理解为 Slave Synchronization)。如果乐意,你很容易就通过消减MOSI和MISO的方法获得精简的单向通讯。前面我们提到,JTAG的数据操作都是基于移位寄存器的,这一点和SPI是相同的。JTAG协议的核心在于能够有效地传输指令和数据,并且传输指令和数据的过程是能够明确的加以区别对待而不会造成歧义的。如何实现这一功能呢? JTAG协议只是将原本用来复位从机的SS信号扩展为一个状态机。而该状态机每一个状态都有两个状态触发在TCK (也就是SCK的上升沿,TMS(也就是SS)的电平决定了跳转的分支。下图就是一个典型的 TAP状态机,值得庆幸的是,该状态机所有
6、JTAG协议中都会遵守的部分。Tst-Logic-Pasat 4flur-TaevIdle01如果这是你第一次研究TAP状态机,首先你不必去追究TAP究竟是哪些英文单词的缩写,因为Test Access Port已经是过去很久的事情了,现在的JTAG状态机虽然功能没变,但早就从事其它 高科技”行业了。第二眼看着附图,你会发现,其实整个状态机不过分为三个部分:信道选择部分、数 据信道和指令信道。所谓的信道选择,就是图中最顶上由四个状态组成的矩形,分别对应着四个状态:1、JTAG TAP犬态机复位状态顾名思义,就是进入该状态,将导致整个硬件TAP控制器复位,所有的寄存器都将被初始化。在 TCK的上
7、升沿,TMS为低电平时,进入下一个状态;否则保持不变。2、JTAG TAP勺 Run-Test/Idle 状态其实就是 开工”和休息”的选择分支点。在TCK的上升沿,TMS的高电平将导致 状态切换,进入数据信道的通讯状态;否则保持不变。3、JTAG TAP勺 Select-DR Scan状态Select DR Scan翻译成中文就是 选择数据移位寄存器进行移位操作”,简单说来,就是当我们在该状态下,TCK的上升沿读取到了 TMS的低电平将直接进入数据信道的操 作子状态机;在 TCK的上升 沿读取到了 TMS的高电平,将切换到指令信道的通讯状态。4、JTAG TAP勺 Select-IR Sca
8、n犬态Select-IR Scan翻译成中文就是 选择指令寄存器进行移位操作 ”,简单来说,就是 当我们在该状态下,TCK的上升沿读取到了 TMS的低电平将直接进入指令信道的操作状 态机;在TCK的上升沿读取到了 TMS的高电平,将重新回到JTAG的复位状态数据信道和指令信道对应着两个子状态机,从本质上数据和指令并没有任何不同, 只是习惯上,指令 的长度固定为4个二进制位(AVR32的JTAG是5个),而数据则随着 不同的指令选择了不同长度的指令寄存器,这个就需要具体查阅相关的协议说明了,比 如JTAG IDCODE的长度固定为32位,而AVR32的复位指令却有5位(很多情况下别指 望是8的倍
9、数)。根据阅读前面 选择部分4个状态机”的经验,大家 应该对照着图片自 己尝试去理解剩下的两个信道。下面,我只就常见的几个状态进行解释(以数据信道为例,指令信道可以参考其内容)。1、Capture DR 状态前文说过,JTAG协议是基于移位寄存器的,其通讯具有以物易物”的特性,在我们进入真正的数据传输之前,需要告知JTAG准备通讯了哦?你有没有东西要给我哈?”,于是Capture DR就是一个给JTAGB会将需要传达给我们的数据放入指定的移位寄存器 中的状态。2、Shift DR 状态这个状态就是通过 TDI和TDO进行数据传输的状态。 需要说明的是,即便进入了 该状态,TMS上的电平 在TC
10、K的上升沿也是会被读取的,从图中看到,一旦在 TMS上 读取到高电平,系统就会跳出Shift DR状态如果此时数据没有传输完成,造成的后果是不确定的。请大家注意,我所说的是不 确定,而不是 很严重”:同样是因为移位寄存的传输特性,有时候并不要求一定要将所 有的数据都完整的进行传输,比如在AVR32中,针对SAB的数据操作,往往只需要进行最关键的部分,详细地内容可以参照相关的数据手册;但有的时候,数据的不完整传输则会导致很严重的后果,这取决于具体的JTAG通TMS设置为高电平,这样,当 也成功的退出了 Shift DR状态。重新修改的机会。一般情况下,讯协议。所以,为了保 险起见,一旦进入 Sh
11、ift DR状态,在发送最后一个数据之前,请 保持TMS为低电平,当要发送最后一个数据时,应该将TCK跳变为上升沿时,系统既完成了最后一个数据的传输,3、Exit1 DR 状态该状态提供了我们一个在刚才输入的数据生效前,我们直接保持 TMS的高电平,并在 TCK的上升沿驱动TAP状态机,直接进入 Update-DR 状态。4、Update-DR状态顾名思义,就是使我们输入的数据生效 一般JTAG内部的动作就是触发一个锁 存信号,将移位寄存器中的内容并行的读取到对应的寄存器中。Update-DR有两个出口,一个是,TMS的低电平对应 Runtest/Idle ,还有一个是 TMS的高电平对应的
12、Select-DR Scan。这两个操作看似区别不大,但是意义非凡。前者往往会导致JTAG内部产生额外的时序(比如发生一个信号,表示完成了一个特定的周期操作,在 AVR的JTAG下载中有 此实例);后者则表示完成了一次数据操作,将进行下一个数据的操作,但是这些操作属于同一个操作周期。当然有些情况下,这两种方法是没有区别的。关于理论部分的讲解,到此为止,留下一个小小的思考,当 TAP状态机处于一个未 知的状态时,如何才能通过一个统一的操作使其回到 Run-Test/Idel状态呢?给一个小小 的提示,针对TAP状态机的TMS信号,给定固定的电平,在有限的 TCK上升沿中,完成 状态机的复位。那么
13、这个有限的范围最少是多少个时钟周期?这个固定的电平究竟是高还是低呢?实际应用下面的代码是我应用在 Snail mkII DEMO中用来操作TAP状态机的实际代码,它根据 用户输入的TAP控制流,产生TAP控制时序,比如我们需要从Run-Test/Idle状态进入Shift-IR状态,根据TAP状态图,我们很容易得出需要产生的TMS信号依次为1(进入SelectDR Scari) 1 (进入 Select IR Scan) 0 (进入 Capture IR) 0 (进入 Shift-IR Scarj), 一共四个 二进制位,根据从LSB至ij MSB依次发送的顺序,需要传送给函数的值就是0x03
14、,长度为 4。需要注意的是,进入 Shift-IR状态以后,有可能要设置此时的需要 TMS保持的电平状 态,因此,实际传送的 0x03其内容应该是1 1 0 0 0,最后一个0表示完成前面4个TMS 时序的输入以后,TMS保持低电平。最后一个 0不计入长度。1.2./*3. *4. *5. *6. *7. *8. *9. *10. *11. *12. *13. *14. *函数说明:JTAG TAP状态机控制函数输入:控制序列,序列长度输出: 无*调用函数:无*使用说明*1、 TMS在TCK上升边沿输出状态控制量。2、 连续5个TCK周期在TMS上输出高电平将进入 Test*Logic-Res
15、et 模式。*3、使用该函数时,请将状态机跳转以后TMS需要保*持的电平也作为一个有效输入加入到序列的末尾*但描述序列长度的数值不需要相应的增加。15.*/16. void JTAG_TAP_Control(UINT8 chCTRStream,UINT8 chLength)17. 18. UINT8 n = 0;19.20. 状态机控制序列21. for (n = 0;n < chLength;n+)22. 23. CLR_TCK24. if (chCTRStream & BIT(n)25. 26. SET_TMS27. 28. else29. 30. CLR_TMS31
16、. 32. JTAG_CLOCK_DELAY33. SET_TCK34.35. /*延时部分*/36. JTAG_CLOCK_DELAY37. 38.39. 保持电平40. if (chCTRStream & BIT(chLength)41. 42. SET_TMS43. 44. else45. 46. CLR_TMS47. 48. 49.复制代码为了方便使用,我们可以将一些常用的TAP操作用宏进行封装,从而获得较高的代码可读性:1.2. # define JTAG_TAP_TEST_LOGIC_RESET JTAG_TAP_Control(0x1F,6);3. # define JT
17、AG_TAP_SHIFT_IRJTAG_TAP_Control(0x03,4);4. # define JTAG_TAP_RETURN_RUN_TEST_IDEL JTAG_TAP_Control(0x01,2);5. # define JTAG TAP ENTER SHIFT DR FROM SHIFT JITAG TAP Control(0x03,4);6. # define JTAG_TAP_SHIFT_DRJTAG_TAP_Control(0x01,3);7.复制代码工程实例Step 1:首先我们要下载一个 JTAG时序分析软件JTAG Hacker点击此处下载 ourdev 496456.rar(文件大小:235K)(原文件名:上位机.rar)Step 2:我们要下载一个示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年拜泉县教师招聘笔试参考题库及答案解析
- 2026年夏县教师招聘考试备考试题及答案解析
- 2026年肇州县教师招聘考试备考试题及答案解析
- 2026年马关县教师招聘笔试备考题库及答案解析
- 中国建设银行苏州分行2027届校园招聘200人考试模拟试题及答案解析
- 中国电子科技集团公司第二十七研究所2026-2027届校园招聘笔试备考试题及答案解析
- 2026广西水利电力职业技术学院银龄教师招募笔试备考试题及答案解析
- 2026年崇仁县教师招聘考试参考题库及答案解析
- 2026年乾安县教师招聘考试参考题库及答案解析
- 2026-福建统计局成本管控专员招聘考试参考题库-含答案
- 网约出租车驾驶员资格证(人证)考试题库及参考答案
- 武汉市2027届高中毕业生九月调研考试地理试卷(含答案)
- 华为光芯片机考题库(完整版含答案解析)
- 2026年资料员岗位练习题与答案
- 安徽省江南十校2026-2027学年高三上学期9月综合素质检测 数学试题+答案
- 2026年高职编辑出版学(版权贸易)试题及答案
- 2026考研全国统考英语二冲刺试卷(详细解析)
- 麻醉科重点专科建设工作汇报
- 2024年《广西壮族自治区建筑装饰装修工程消耗量定额》(上册)
- 《重大火灾隐患判定方法》解读与培训
- 临床护理文书书写规范(2024版)
评论
0/150
提交评论