一、介绍
JTAG (Joint Test Action Group) 是一种国际标准接口协议,遵循 IEEE 1149.1 标准,最初是为了测试印刷电路板 (PCB) 上的集成电路 (IC) 而设计的。随着时间的推移,JTAG 接口也被广泛用于调试、编程和故障诊断等领域。
JTAG的三大功能:
1.下载器,即下载软件到FLASH里。
2. DEBUG,跟医生的听诊器似的,可探听芯片内部小心思。
3. 边界扫描,可以访问芯片内部的信号逻辑状态,还有芯片引脚的状态等等。
TCK | Test ClocK | 提供测试时钟信号 |
TMS | Test Mode Select | 选择测试模式 |
TDI | Test Data Input | 向边界扫描寄存器输入数据 |
TDO | Test Data Output | 从边界扫描寄存器输出数据 |
TRST | Test Reset | 可选引脚,用于复位 JTAG 测试电路。 |
二、JTAG接口指令集
JTAG接口指令集包含以下常用指令:
(1)EXTEST指令
外部测试指令,必须全为0,TAP强制定义。该指令初始化外部电路测试,主要用于板级互连以及片外电路测试。
EXTEST指令在Shift-DR状态时将扫描寄存器BSR寄存器连接到TDI与TDO之间。在Capture-DR状态时,EXTEST指令将 输入管脚的状态在TCK的上升沿装入BSR中。EXTEST指令从不使用移入BSR中的输入锁存器中的数据,而是直接从管脚上捕获数据。在Update- DR状态时,EXTEST指令将锁存在并行输出寄存器单元中的数据在TCK的下降沿驱动到对应的输出管脚上去。
(2)SAMPLE/PRELOAD指令
采样/预装载指令,TAP强制定义。在Capture-DR状态下,SAMPLE/PRELOAD指令提供一个从管脚到片上系统逻辑的数据流快照, 快照在TCK的上升沿提取。在Update-DR状态时,SAMPLE/PRELOAD指令将BSR寄存器单元中的数据锁存到并行输出寄存器单元中,然后 由EXTEST指令将锁存在并行输出寄存器单元中的数据在TCK的下降沿驱动到对应的输出管脚上去。
(3)BYPASS指令
旁路指令,必须全为1,TAP强制定义。BYPASS指令通过在TDI和TDO之间放置一个1位的旁通寄存器,这样移位操作时只经过1位的旁通寄存 器而不是很多位(与管脚数量相当)的边界扫描寄存器BSR,从而使得对连接在同一JTAG链上主CPU之外的其他芯片进行测试时提高效率。
(4)IDCODE指令
读取CPU ID号指令,TAP强制定义。该指令将处理器的ID号寄存器连接到TDI和TDO之间。