1 / 10
文档名称:

jtag协议入门及状态机的编程.doc

格式:doc   大小:22KB   页数:10页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

jtag协议入门及状态机的编程.doc

上传人:wz_198614 2017/6/18 文件大小:22 KB

下载得到文件列表

jtag协议入门及状态机的编程.doc

文档介绍

文档介绍:JTAG 协议入门及状态机的编程[ 准备知识]A 、基本的状态机知识 B 、基本的 C 语言能力,包括位操作、常用宏定义、数组、指针等常见内容 C 、会使用一种单片机 D 、熟悉 SPI 协议的物理原理 E 、对 JTAG 的好奇和兴趣[序言] JTAG 协议是目前应用最广泛的下载和仿真协议, 对协议的最初缔造者来说, 这也许有点无心插柳柳成荫的感觉——最初的 JTAG 协议只是用来辅助专门的硬件质检部门对印刷电路进行检测的。这些老账现不再提了我们现在看到的各种 JTAG 下载和仿真协议都是各生产厂商在原有 JTAG 协议的思想上进行扩充的, 并不具有通用性, 甚至连最基本的电路检测部分功能也被加以改造——比如, 一个 JTAG 指令可能在大部分的版本中是4 位长度的,而对于 AVR32 来说,一个 JTAG 指令却是 5 位。总之,现在大行其道的 JTAG 协议,不变的部分就只有其核心 TAP 状态机了。 AR M 有 ARM 的 JTAG , AVR 有 AVR 的 JTAG , 51有 51的 JTAG?? 在这样一个缺乏统一标准的“街头” JTAG 时代,如果你想学好 JTA G 下载仿真协议的破解,就必须从 TAP 状态机开始。[ 原理解析] 在你被复杂的时序图弄得眼花缭乱之前,你应该首先记住以下的断言: A、 JTAG 协议的本质与 SPI 协议并没有什么不同,它等于一个复杂的 SS 状态机+ 变长的 MOSI 和 MISO 数据移位操作。不过所谓的变长, 都是事先约定好的。 B、 JTAG 协议是一个同步通讯协议,它是全双工的。它的通讯原则是“以物易物”——即你如果想得到某些东西, 你必须先给与相同长度的内容; 你如果只是想发送一些数据, 也会自动获取相同长度的内容, 至于交换的内容是否有意义,这是另外一回事了。 C、 JTAG 协议无论多么复杂,实际上只有 4 根线起作用(有时候还有两根鸡肋的 nSRST 和 TRST ) ,他们分别是 TMS 、 TCK 、 TDI 和 TDO ,他们分别对应 SPI 协议里面的 SS、 SCK 、 MOSI 和 MISO 。在本质上, 他们并没有什么不同。即便是 ARM 的 JTAG 那么多的引脚, 实际上起作用 JTAG 的也就这 4 根线而已。 D、 JTAG 的数据操作都是基于移位寄存器的。 E 、如果 JTAG 协议在某个下载仿真协议中只是用来发送控制信息和少量的数据, 而大量的数据传输是通过额外的其它引脚进行的, 即便这个协议被称为 JTAG 仿真其本质也早已超过 JTAG 了,严格来说,不应该称之为 JTAG 。因为 JTAG 协议中就只有 4 根线(有时候也算上 nSRST 和 TRST )而已。典型的如 NEXUS 协议。说了这么多,我们终于可以开始正式的讲解了。一、从 SPI 到 JTAG 如果熟悉 SPI , 你会发现 SPI 是如此的简单、和谐——一根用于二进制位同步的时钟线 SCK ,一根用于主机发送到从机的数据线 MOSI ( Master Out Slave In) ,一根用于从机发送到主机的数据线 MISO ( Master In Slave Out ), 外加一根用于复位 SPI 从机控制器以达到通讯同步的控制信号 SS (不妨理解为 Slave Synchroni