第十三章、ARM JTAG 测试与调试结构⚓︎
约 2019 个字 预计阅读时间 10 分钟
Chapter1、JTAG 边界扫描测试结构⚓︎
JTAG:⚓︎
联合测试行动组,开发了用于印刷版测试标准。IEEE1149,描述了一个用于数字电路引脚信号电平访问和控制的5引脚串行协议,并扩展到测试芯片上的电路。
基本思想: 在靠近芯片的输入输出管脚上增加一个移位寄存器单元(边界扫描寄存器),当芯片处于测试状态的时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来,实现对芯片输入输出信号的观察和控制;在正常的运行状态下,这些边界扫描寄存器对芯片来说是透明的,边界扫描(移位)寄存器单元可以相互连接起来,在芯片的周围形成一个边界扫描链(是一个数据寄存器)。
TAP 控制器(测试访问端口)⚓︎
控制边界扫描链,是个由TMS控制状态转换的状态机,是一个通用端口,可以访问芯片提供的所有数据寄存器(DR)和指令寄存器(IR)。
数据寄存器(DR)⚓︎
- 器件ID寄存器:读出固定在芯片内部的标识码;
- 旁路(Bypass)寄存器:将TDI经过1个时钟周期的延迟连接到TDO,可以快速访问同一电路板上测试环路的另一个器件(即跳过本器件);
- 边界扫描寄存器:截取该逻辑与引脚之间的所有信号
- 芯片上还可以有些其他寄存器用于其他功能的测试
指令⚓︎
- JTAG测试系统的过程是向指令寄存器送入指令,使用数据寄存器进行测试
- 指令分为公开和私用
- 公开指令已经在IEEE1149.1定义且用于通用测试
- 私用指令用于片上专用测试(兼容器件必须支持的公开指令)
最小集的公开指令(兼容器件必须支持的公开指令)⚓︎
- BYPASS:器件将TDI经过1个时钟延时连接到TDO,用于同一个测试环中其他器件的测试
- EXTEST:将边界扫描寄存器连接到TDI和TDO之间,能够捕获和控制引脚状态。这条指令用于支持极级连接测试
- IDCODE:将ID寄存器连接到TDI和TDO之间
- INTEST:将边界扫描寄存器连接到TDI和TDO之间,能够捕获和控制该逻辑的输入及输出状态。这条指令用于内部逻辑核的测试
五个信号接口(四输入一输出): - TCK(独立于系统时钟的测试时钟) - TMS(测试模式选择信号) - TDI(测试数据输入) - TRST(测试复位输入) - TDO(测试数据输出)
通过 TAP 接口,对数据寄存器(DR)进行访问的一般过程是: 通过指令寄存器(IR),选定一个需要访问的数据寄存器,把选定的数据寄存器连接到 TDI 和 TDO 之间,由 TCK 驱动,通过 TDI 把需要的数据输入到选定的数据寄存器当中去;同时把选定的数据寄存器中的数据通过 TDO 读出来
PCB 测试: - JTAG 测试的主要目的是测试印制板上走线与焊盘之间的连接 - 支持 JTAG 测试接口的器件可以通过 EXTEST 指令 - 不支持 JTAG 测试接口的器件还需要使用探针技术(封装减少导致探针技术不适用) - 探针与 JTAG 接口相结合可以降低制造产品测试仪的成本及难度
VLSI 测试(JTAG 能用,但并不是通用解决方案): - 高复杂度 IC 芯片通过非常昂贵的测试仪进行测试; - JTAG 测试电路以串行方式工作,不能高速的将测试向量加到核逻辑上,不能以器件正常速度测试性能; - JTAG 在 VLSI 产品测试中作用: - IC 内部电路功能测试(INTEST 指令) - 较好的控制 IC 引脚用于参数测试(如引脚的物理参数等)(EXTEST 指令) - 用于内部扫描路径,提高从引脚难以访问的内部节点的可控性较可观察性 - 用于访问片上调试功能(EmbeddedICE),不需要额外引脚,也不会干扰系统的功能 - 提供了基于宏单元设计的功能测试方法
宏单元测试: - 系统芯片使用大量的复杂、已设计好的宏单元(如 ARM 处理器核本身) - 宏单元的产品测试向量主要依赖于宏单元供应商 - 将测试向量加到宏单元的方法: - 通过多路器使每个宏单元的信号依次连接到系统芯片的引脚上的测试模式 - 片上总线(AMBA 总线)可以支持每个连接到总线上 的宏单元的直接测试访问 - 每个宏单元可以有一个边界扫描路径,使用扩展的 JTAG 结构,测试向量可以通过扫描路径加到宏单元上(同样有速度过低的缺点)
Chapter2、ARM 调试结构⚓︎
桌面调试: 调试器与要调试的系统都是运行在同一台 PC 上的不同程序,所有用户接口准备好,采用断点和调试符号表,普通缺乏观察点工具
嵌入式调试: 调试工具必须在远程机上运行,并通过某种通信方式与目标机器连接。通常采取在线仿真器(ICE,通常为一个相同的芯片或更多引脚的变型芯片)替代目标系统中的处理器,并包含缓冲器以实现硬件跟踪。
几种常见的调试方法: - 指令集模拟器:一种利用 PC 机端的仿真开发软件模拟调试的方法。 - 驻留监控软件:驻留监控程序运行在目标板上,PC 机端调试软件可通过并口、串口、网口与之交互,以完成程序执行、存储器及寄存器读写、断点设置等任务。 - JTAG 仿真器:通过 ARM 芯片的 JTAG 边界扫描口与 ARM 核进行通信,不占用目标板的资源,是目前使用最广泛的调试手段 - 在线仿真器:使用仿真头代替目标板上的 CPU,可以完全仿真 ARM 芯片的行为。但结构较复杂,价格昂贵,通常用于 ARM 硬件开发中
JTAG 与 Angel: - JTAG 调试:协议转换器解释上位机传送过来的命令,通过 JTAG 控制 ARM 执行。 - Angel 调试:协议转换器可以直接做为目标板的 Firmware 的一部分。直接执行从宿主机传送过来的调试命令;并回送相应的数据。(宿主机调试需要 Angel 协议) - Angel 可以节省专门的 JTAG 仿真器,但是需要软件,或者是嵌入式操作系统的支持,做不到完全的实时仿真。 - JTAG 仿真是通过硬件和控制 ARM 的 EmbeddedICE 实现的,可以做到实时仿真
ARM 调试硬件: ICE 方法不能适用于复杂的包含多个宏单元的系统芯片
软件模型仿真具有局限性,不能仿真整个软件系统运行情况与精确描述所有实时约束
ARM 调试硬件采取了 EmbeddedICE 模块提供了类似 ICE 的调试工具
EmbeddedICE 模块: 能够用较低的成本使处理器停止实现断点、观察点的功能。
- 两个观察点单元
- 可以通过监控地址总线,数据总线和控制信号来探测观察点和断点
- 每个单元可以用来提供
- 1 观察点,或
- 1 个 ROM 或 RAM 里的硬件断点,或
- RAM 里的多个软件断点
- 调试控制和状态寄存器
- 调试通讯通道(DCC)