1、嵌入式系统结构与设计基础,第5讲合肥工业大学计算机与信息学院 史久根,2018/10/25,合肥工业大学计算机与信息学院,2,第3章 嵌入式微处理器技术基础,本章主要介绍以下内容: 嵌入式微处理器典型技术 主流嵌入式微处理器 嵌入式处理器的调试技术 边界扫描测试技术JTAG,2018/10/25,合肥工业大学计算机与信息学院,3,3.4 边界扫描测试接口JTAG,JTAG是一种片上调试接口,即OCD接口。 OCD英文原文: On-Chip Debugging Interface JTAG的建立使得集成电路固定在PCB(Printed Circuit Board,印刷电路板)上,只通过边界扫描便
2、可以被测试。 含有JTAG口的芯片种类较多,如CPU、DSP、CPLD/FPGA等,广泛得到应用。,2018/10/25,合肥工业大学计算机与信息学院,4,3.4.1 测试摩尔定律,1999年英特尔公司的副总裁Patrick Celsinger先生在美国大西洋城举行的国际测试会议上提出了测试摩尔定律,并就此了讲演。 该定律预测未来几年,每一晶体管的硅投资成本将低于其测试成本。 Patrick Celsinger先生指出,硅成本已迅速下降,测试成本却基本保持不变。并且,被测器件的速度常常比测试设备能测的速度高。也就是说,测试设备的发展速度已跟不上测试对象的发展。同时,测试成本在制造成本中所占比例
3、过大。,2018/10/25,合肥工业大学计算机与信息学院,5,double d_bh; short s_bh;sense_horizontal_velocity( / OPERAND ERROR,代码出错案例: 阿利亚娜5型火箭发射失败,2018/10/25,合肥工业大学计算机与信息学院,6,3.4.2 JTAG基本概念,JTAG是Joint Test Action Group(联合测试行动组)的缩写,联合测试行动组是IEEE的一个下属组织 该组织研究标准测试访问接口和边界扫描结构(Standard Test Access Port and Boundary-Scan Architectur
4、e) JTAG的研究成果被接纳为IEEE1149.1-1990规范 JTAG成为电子行业的一种国际测试标准 现在,人们通常用JTAG来表示IEEE1149.1-1990规范,或者满足IEEE1149规范的接口或者测试方法。,2018/10/25,合肥工业大学计算机与信息学院,7,JTAG扫描循环示意图,2018/10/25,合肥工业大学计算机与信息学院,8,边界扫描单元,JTAG标准定义了一个串行的移位寄存器 寄存器的每一个单元分配给IC芯片的相应引脚 每一个独立的单元称为BSC(Boundary-Scan Cell)边界扫描单元 这个串联的BSC在IC内部构成JTAG回路 所有的BSR(Bo
5、undary-Scan Register)边界扫描寄存器通过JTAG测试激活,2018/10/25,合肥工业大学计算机与信息学院,9,ARM的JTAG调试结构,2018/10/25,合肥工业大学计算机与信息学院,10,ARM调试系统说明,调试系统一般包括3部分: 调试主机是运行软件调试器的计算机 例如ADW,ARM Debugger for Windows 调试主机允许发出高级命令,如设置断点或检查存储器内容。 协议转换器处理调试主机和ARM7TDMI处理器JTAG接口之间的通讯 包括调试主机发出的高级命令以及JTAG接口的低级命令。 一般通过增强型并行口进行连接。,2018/10/25,合肥
6、工业大学计算机与信息学院,11,ARM调试系统说明(续),调试目标 ARM CPU主处理器逻辑:对调试有硬件支持。 嵌入式ICE-RT逻辑:这是用于产生调试异常(如断点)的寄存器和比较器的集合。 TAP控制器:用JTAG串行接口控制扫描链的动作。,2018/10/25,合肥工业大学计算机与信息学院,12,协议转换器的调试扩充功能,ARM7TDMI具有易于在最低层调试的硬件扩充,其调试扩充功能如下列出: 允许暂停程序的执行; 检查和修改内核的内部状态; 查看和修改存储器系统的状态; 执行中止异常,允许实时的内核监控; 重新开始程序执行。,2018/10/25,合肥工业大学计算机与信息学院,13,
7、3.4.3 ARM7TDMI扫描链布局,2018/10/25,合肥工业大学计算机与信息学院,14,ARM7TDMI内核扫描链结构,113位,38位,33位,2018/10/25,合肥工业大学计算机与信息学院,15,JTAG接口的IC内部结构,2018/10/25,合肥工业大学计算机与信息学院,16,JTAG状态转换图,2018/10/25,合肥工业大学计算机与信息学院,17,JTAG信号,TMS:测试模式选择(Test Mode Select) 通过TMS信号控制JTAG状态机的状态。 TCK:JTAG的时钟信号 TDI:数据输入信号 TDO:数据输出信号 nTRST:JTAG复位信号,复位J
8、TAG的状态机和内部的宏单元(Macrocell)。,2018/10/25,合肥工业大学计算机与信息学院,18,3.4.4 TAP控制器,TAP控制器内部有多个寄存器 测试数据寄存器 JTAG控制指令寄存器 旁路寄存器 ARM7TDMI器件识别码(ID)寄存器 扫描路径选择寄存器,2018/10/25,合肥工业大学计算机与信息学院,19,JTAG的TAP控制器结构,2018/10/25,合肥工业大学计算机与信息学院,20,测试数据寄存器,在TDI和TDO之间可以连接的测试数据寄存器有如下8个: 指令寄存器; 旁路寄存器; ARM7TDMI的器件识别(ID)码寄存器; 扫描路径选择寄存器; 扫描
9、链0、1、2和3。,2018/10/25,合肥工业大学计算机与信息学院,21,JTAG控制指令寄存器,JTAG接口中指令寄存器长度是4位 在指令寄存器共安排10条控制指令,见下表。,2018/10/25,合肥工业大学计算机与信息学院,22,JTAG的指令寄存器,在SHIFT-IR态,将指令寄存器选做TDI和TDO之间串行路径。见(a) 在UPDATE-IR态,指令寄存器的值成为当前指令。见(b) 在CAPTURE-IR态,将b0001加载到该寄存器。该值在SHIFT-IR态移位输出。见(c) 复位时,IDCODE(b1110)成为当前指令。见(d) 指令寄存器的最低有效位首先被扫描输入和输出。
10、,2018/10/25,合肥工业大学计算机与信息学院,23,旁路寄存器,功能: 通过提供TDI和TDO之间的路径,在扫描测试期间对器件旁路。 长度: 1位 操作方式: 当BYPASS指令是指令寄存器中的当前指令时,串行数据在SHIFT-DR态以1个TCK周期的延迟从TDI传到TDO。旁路寄存器没有并行输出。 在CAPTURE-DR态,从旁路寄存器的并行输入端装入“0”。,2018/10/25,合肥工业大学计算机与信息学院,24,ARM7TDMI器件 识别码(ID)寄存器,识别码用途:读32位器件识别码。不提供可编程的识别码。 长度:32位。寄存器的格式如下图所示。 操作方式 当IDCODE指令
11、是当前指令时,将ID寄存器选做TDI和TDO之间的串行路径。ID寄存器没有并行输出。在CAPTURE-DR态,32位器件识别码从其并行输入端加载到ID寄存器。寄存器的最低有效位首先被扫描输出。,版本 4位,部件编号 16位,制造者标识 12位,0,31,11,28,2018/10/25,合肥工业大学计算机与信息学院,25,扫描路径选择寄存器,用途和长度 变换当前活动的扫描链,4位。 操作方式 仅当执行了一条SCAN_N指令或当发生复位时,当前所选的扫描链改变。复位时,将扫描链0选做活动的扫描链。 在SHIFT-DR态, SCAN_N指令把扫描路径选择寄存器作为TDI和TDO之间的串行数据移位路
12、径。 在CAPTURE-DR态,将b1000加载到该寄存器。这个值在SHIFT-DR态加载输出,同时装入新值。 在UPDATE-DR态,由寄存器中的值选择一个扫描链成为当前活动的扫描链。所有进一步的指令(如INTEST)都应用到该扫描链上。,2018/10/25,合肥工业大学计算机与信息学院,26,扫描链编号分配,2018/10/25,合肥工业大学计算机与信息学院,27,3.4.5 JTAG扫描链工作原理,JTAG扫描链由扫描单元组成 每一个被测试逻辑电路引出信号线同它的引脚之间配置一个扫描单元 每一个扫描单元的内部由两个D触发器和两个多路选择器组成 分别把逻辑电路输入输出线同引脚之间的穿越扫
13、描单元的电流方向成为横向,沿扫描单元串接线运动的电流方向成为纵向。 JTAG扫描链一共有四种操作:挂起、捕获、移位和更新。,2018/10/25,合肥工业大学计算机与信息学院,28,JTAG扫描单元构造,纵向,纵向,横向,横向,横向,四种操作: 挂起,移位,俘获,更新,2018/10/25,合肥工业大学计算机与信息学院,29,JTAG扫描链的组成,Logic,Pin,Pin,Pin,Pin,Logic,Logic,Logic,Logic,Pin,Pin,Logic,2018/10/25,合肥工业大学计算机与信息学院,30,JTAG处于挂起状态,横向直行,横向直行,如同扫描链不存在,2018/1
14、0/25,合肥工业大学计算机与信息学院,31,捕获JTAG状态,当前引脚 信号的快照 存入扫描链,2018/10/25,合肥工业大学计算机与信息学院,32,移位数据,纵 向 直 行,此刻处理器的工作脉冲暂停,2018/10/25,合肥工业大学计算机与信息学院,33,移位结束,纵 向 直 行,此刻处理器的工作脉冲暂停,2018/10/25,合肥工业大学计算机与信息学院,34,数据更新,JTAG扫描链取代系统向处理器输入信号,并且替代处理器向系统输出信号。,2018/10/25,合肥工业大学计算机与信息学院,35,扫描链0,Scan Chain 0:有113个扫描单元,包括ARM核的所有的I/O、
15、地址数据总线和输入输出控制信号。这条链上的信号复杂,不易控制,但是包含的信息丰富,可以通过这条链得到ARM7TDMI内核的所有信息。 从查询数据输入到输出,扫描链的顺序为: (1)数据总线位0-位31; (2)内核控制信号; (3)地址总线位31-位0; (4)嵌入式ICE-RT控制信号。 嵌入式ICE-RT控制信号(特别是DBGRQI)首先被扫描输出。,2018/10/25,合肥工业大学计算机与信息学院,36,扫描链0单元,2018/10/25,合肥工业大学计算机与信息学院,37,扫描链0单元(续1),2018/10/25,合肥工业大学计算机与信息学院,38,扫描链0单元(续2),2018/
16、10/25,合肥工业大学计算机与信息学院,39,扫描链1,扫描链1:有33个扫描单元,包括ARM核的数据总线和一个断点控制信号。这是一条很有用的链,通过控制这条链,可以控制ARM核执行指定的指令,从而实现对ARM的内部寄存器、协处理器以及外部存储器的读写操作。,2018/10/25,合肥工业大学计算机与信息学院,40,扫描链1(续),扫描链1的前32位用于数据值,加上在BREAKPT内核输入上的扫描单元。第33位有如下4个用途: 在正常INTEST测试条件下,允许将已知值扫描到BREAKPT的输入。 在EXTEST测试条件下,捕获从系统加到BREAKPT输入的值。 在调试期间,第33位的值决定
17、在执行指令之前ARM7TDMI核是否同步回系统速度。 ARM7TDMI核进入调试状态后,该位第一次被捕获并被扫描输出。其值告诉调试器内核是否由断点(位33清零)或由观察点(位33置位)进入调试状态。,2018/10/25,合肥工业大学计算机与信息学院,41,扫描链2,Scan Chain 2共有38个扫描单元,通过控制EmbeddedICE宏单元,实现对ARM执行指令的断点、观察点的控制。 从TDI到TDO的扫描链次序如下: 读/写; 寄存器地址位4-位0; 数据值位31-位0。,2018/10/25,合肥工业大学计算机与信息学院,42,3.4.6 嵌入式ICE-RT逻辑,嵌入式ICE-RT逻
18、辑也称为Embedded ICE或者Embedded ICE-RT,其主要功能是为ARM7TDMI核提供集成的在线调试支持。 ARM公司的片上测试部件。 使用ARM7TDMI的TAP控制器来控制嵌入式ICE-RT逻辑的串行数据输入。 下图给出了内核、嵌入式ICE-RT逻辑和TAP控制器之间的关系。图中仅显示了有关的信号。,2018/10/25,合肥工业大学计算机与信息学院,43,嵌入式ICE-RT连线结构图,2018/10/25,合肥工业大学计算机与信息学院,44,嵌入式ICE-RT逻辑的组成,嵌入式ICE-RT逻辑的组成如下: 2个实时观察点单元; 3个独立的寄存器:调试控制寄存器、调试状态
19、寄存器、中止状态寄存器; 调试通信通道DCC(Debug Communications Channel)。,2018/10/25,合肥工业大学计算机与信息学院,45,嵌入式ICE-RT逻辑的组成(续),调试控制寄存器和调试状态寄存器提供嵌入式ICE-RT操作的所有控制。在选择监控模式时使用中止状态寄存器。 可以编程1个或2个观察点单元来暂停内核程序的执行。当编程进入嵌入式ICE-RT的值与当前出现在地址总线、数据总线和各种控制信号的值匹配时,暂停执行。,2018/10/25,合肥工业大学计算机与信息学院,46,EmbeddedICE的数据结构,EmbeddedICE是集成在ARM内核中的嵌入式
20、ICE仿真器。其结构如下图所示。 通过对EmbeddedICE的控制,对EmbeddedICE中寄存器的读取,可以获得ARM内核的状态,为程序设置断点以及读取Debug通讯通道。 EmbeddedICE的串行数据长度是38位,包括: 32位数据 5位的访问EmbeddedICE中寄存器的地址 1个读写控制位,2018/10/25,合肥工业大学计算机与信息学院,47,EmbeddedICE结构,EmbeddedICE扫描链共38位,2018/10/25,合肥工业大学计算机与信息学院,48,EmbeddedICE的寄存器,2018/10/25,合肥工业大学计算机与信息学院,49,Watchpoin
21、t寄存器的使用,EmbeddedICE的一个主要作用就是可以在ARM的程序中设置软件或者硬件的断点。 在EmbeddedICE中,集成了一个比较器,比较器负责把ARM处理器取指的地址A31:0、数据D31:0以及一些控制信号与EmbeddedICE中Watchpoint寄存器中设置的数值相比较 具体的说应该是进行同或运算 比较的结果用来确定输出一个ARM的断点(Breakpoint)信号。 具体的运算关系如下公式所描述: (Av31:0,Cv4:0 XNOR A31:0,C4:0) OR Am31:0,Cm4:0 = 0x1FFFFFFFFF,2018/10/25,合肥工业大学计算机与信息学院
22、,50,EmbeddedICE断点信号条件,当上述表达式为真的时候,断点信号有效,ARM的内核就进入了Debug模式。 在Debug模式下,ARM内核的时钟从系统的主时钟(MCLK)被替换成跟踪时钟(DCLK)。 跟踪时钟(DCLK)是通过在JTAG的状态机的Run-test/Idle状态的TCK来控制的。,2018/10/25,合肥工业大学计算机与信息学院,51,Watchpoint表达式的含义,2018/10/25,合肥工业大学计算机与信息学院,52,3.4.7 ARM7TDMI断点的设置,ARM中断点的设置主要是设置EmbeddedICE中的寄存器 主要包括:设置EmbeddedICE的
23、两个watchpoint单元的地址、数据或控制信号寄存器。 当一个(或者两个)watchpoint寄存器满足条件的时候,ARM就从运行状态进入Debug状态。 也就是与ARM中的地址(也可以包括数据)和ARM所执行的当前的指令相同的时候,2018/10/25,合肥工业大学计算机与信息学院,53,硬件断点和软件断点,在ARM7TDMI处理器的内核中,有两种断点的设置方式:硬件断点和软件断点 硬件断点 通过设置EmbeddedICE中的Watchpoint寄存器中的地址相关的寄存器,来实现断点。 通过这种方式设置断点,断点数目受EmbeddedICE中的Watchpoint数目的限制(在ARM7T
24、DMI处理器的内核中,只有两组Watchpoint寄存器,最多只能设置两个硬件断点)。 硬件断点可以在任何地方设置。不受存储器类型的限制。,2018/10/25,合肥工业大学计算机与信息学院,54,软件断点,软件断点的实现比较复杂,需要如下几个步骤: 通过设置EmbeddedICE中的Watchpoint寄存器中的数据相关寄存器(data value和data mask value)为一个特殊的32位数字ARM的未定义指令,比如:0x06000010。 替换RAM中的指令为上面所设置的那个未定的指令0x06000010,作为一个标志。 当系统运行到RAM中所设定的单元位置时候,那个事先设置的标
25、志数字将被当作一个指令读入处理器的内核。,2018/10/25,合肥工业大学计算机与信息学院,55,软件断点(续),此时,系统所读入的指令的数据刚好和data value中的数字相吻合,系统就进入了Debug模式。这就是软件断点的工作过程。 软件断点的数目不受ARM内核的Watchpoint数目的限制,不管系统设置多少个软件断点,仅仅使用了ARM内核的一个Watchpoint资源。 软件断点是通过替换系统的断点地址的指令实现的,所以,软件断点只能在可写的存储器的地址中设置(比如:RAM),而不能在ROM(比如:Flash)中设置。,2018/10/25,合肥工业大学计算机与信息学院,56,断点
26、设置小结,总之,在有两个Watchpoint资源的ARM7TDMI的内核中,断点可以有如下情况: 2个硬件断点,没有软件断点 1个硬件断点,任意多个软件断点 任意多个软件断点,2018/10/25,合肥工业大学计算机与信息学院,57,3.4.8 ARM调试接口,ARM7TDMI调试接口基于IEEE标准1149.1-1990以及标准测试访问口和边界扫描体系结构(Standard Test Access Port and Boundary-Scan Architecture)。 调试扩充可强迫内核进入下列模式之一: 暂停模式(调试模式):在断点或观察点,内核进入调试状态。在调试状态,内核停止工作并
27、与系统的其它部分隔离。当调试完成后,调试主机恢复内核和系统状态,程序重新开始执行。 监控模式:在断点或观察点,形成指令中止或数据中止而不进入调试状态。内核仍正常接受和服务中断。,2018/10/25,合肥工业大学计算机与信息学院,58,调试阶段,外部调试接口信号或嵌入式ICE-RT逻辑请求迫使ARM7TDMI进入调试状态。激活调试的事件如下: 断点(取指); 观察点(数据访问); 外部调试请求。 使用JTAG格式的串行口检测ARM7TDMI的内部状态。在暂停模式下,这可确保不使用外部数据总线即可将指令串行插入进内核流水线。 例如,在调试状态,存储多个寄存器指令(STM)可以插入指令流水线,输出
28、ARM7TDMI寄存器的内容。数据可以串行移出而不影响系统的其它部分。 在监控状态,JTAG接口用于在调试器与运行在ARM7TDMI核上简单的监控程序之间传送数据。,2018/10/25,合肥工业大学计算机与信息学院,59,时钟,ARM7TDMI核有如下2个时钟: MCLK是存储器时钟; DCLK是内部调试时钟,由测试时钟TCK生成。 在正常工作期间,内核由MCLK时钟驱动,内部逻辑保持DCLK为低电平。 当ARM7TDMI在暂停模式时,在TAP状态机控制下,内核由DCLK供给时钟,MCLK自由运行。选择的时钟在信号线ECLK上输出以便由外部系统使用。,2018/10/25,合肥工业大学计算机
29、与信息学院,60,调试接口信号,与调试接口有关的外部信号主要有如下3个: BREAKPT和DBGRQ是处理器进入调试状态的系统请求信号; DBGACK是指示内核处于调试状态的信号。 进入调试状态的入口 (1) 在断点进入调试状态 (2) 在观察点进入调试状态 (3) 由调试请求进入调试状态,2018/10/25,合肥工业大学计算机与信息学院,61,调试接口信号(续),调试状态下ARM7TDMI的动作 在暂停模式下,除nMREQ和SEQ外,所有存储器接口输出发生与存储器系统异步的改变。 在监控模式下,ARM7TDMI继续执行指令,存储器接口的行为正常。,2018/10/25,合肥工业大学计算机与
30、信息学院,62,ARM处理器的实时JTAG仿真器 与开发板的连线图,2018/10/25,合肥工业大学计算机与信息学院,63,第5讲重点,测试摩尔定律 边界扫描单元和JTAG扫描链 ARM的JTAG调试结构 ARM7TDMI的JTAG扫描链结构 JTAG状态机的状态转换图 JTAG标准信号和JTAG工作原理 ARM公司的嵌入式ICE-RT功能和结构 硬件断点和软件断点 ARM处理器的JTAG仿真器接线,2018/10/25,合肥工业大学计算机与信息学院,64,第5讲 复习题和思考题,哪些类型的半导体集成电路芯片内嵌了JTAG扫描电路? 测试摩尔定律的主要观点是什么? 试阐述JTAG标准的基本概念。 ARM处理器的JTAG调试结构对于其他含有JTAG接口的嵌入式处理器或者芯片也适用吗? JTAG协议转换器有哪些功能? JTAG扫描链能够完成哪几种基本操作? 嵌入式ICE-RT逻辑可以设置几个调试断点? 硬件断点和软件断点有什么区别? 试在因特网上检索几种ARM仿真器,并指出各自的技术特点?,