[准备知识] A、基本的状态机知识 B、基本的C 语言能力,包括位操作、常用宏定义、数组、指针等常见内容 C、会使用一种单片机 D、熟悉SPI 协议的物理原理 E、对JTAG 的好奇和兴趣 [ 序 言 ] JTAG 协议是目前应用最广泛的下载和仿真协议,对协议的最初缔造者来说,这也许有点无心插柳柳成荫的感觉——最初的JTAG 协议只是用来辅助专门的硬件质检部门对印刷电路进行检测的
这些老账现不再提了 我们现在看到的各种JTAG 下载和仿真协议都是各生产厂商在原有JTAG 协议的思想上进行扩充的,并不具有通用性,甚至连最基本的电路检测部分功能也被加以改造——比如,一个JTAG 指令可能在大部分的版本中是4 位长度的,而对于AVR32 来说,一个JTAG 指令却是5 位
总之,现在大行其道的JTAG 协议,不变的部分就只有其核心TAP 状态机了
ARM 有ARM 的JTAG,AVR 有AVR 的JTAG,51 有51 的JTAG… … 在这样 一个缺 乏 统 一标 准的“ 街 头 ” JTAG 时 代 ,如果 你 想学 好JTAG 下载仿真协议的破 解 ,就必 须 从TAP 状态机开 始
[原理解 析 ] 在你 被复 杂 的时 序图 弄 得 眼 花 缭 乱 之前,你 应该 首 先 记 住 以下的断 言: A、JTAG 协议的本质与 SPI 协议并没 有什 么 不同 ,它 等于一个复 杂 的SS状态机+变长的MOSI 和MISO 数据 移 位操作
不过 所 谓 的变长,都是事 先 约 定好的
B、JTAG 协议是一个同 步 通讯 协议,它 是全 双 工 的
它 的通讯 原则 是“ 以物易 物” ——即 你 如果 想得 到某 些东 西 ,你 必 须 先 给 与 相 同 长度的内容; 你 如果只是想发 送 一些数据 ,也会自 动 获 取 相 同 长度的内容,至于交 换 的内容是