基于JTAG的ARM芯片系统调试

基于JTAG的ARM芯片系统调试,第1张

        1 引言

  随着嵌入式处理器性能的逐步提高,运算速度越来越快、处理的数据量越来越大,传统的调试方法如ROM驻留监控程序以及串口调试工具已经不能满足要求。ARM处理器采用一种基于JTAGARM的内核调试通道,它具有典型的ICE功能,基于ARM的包含有Embedded ICE(嵌入式在线仿真器)模块的系统芯片通过JTAG端口与主计算机连接。通过配置支持正常的断点、观察点以及处理器和系统状态访问,完成调试。为了对代码进行实时跟踪,ARM的提供了嵌入式跟踪单元(Embedded Trace Macrocell),对应用程序的调试将更加全面。

  2 JTAG边界扫描原理

  “JTAG边界扫描”或IEEE1149标准[1]是由“测试联合行动组”(Joint Test AcTIon Group,简称JTAG)开发的针对PCB的“标准测试访问接口和边界扫描结构”的标准。这个标准是ARM处理器调试的基础。

  2.1 硬件电路

  JTAG边界扫描测试接口的一般结构[2]如图1所示。

   基于JTAG的ARM芯片系统调试,JTAG边界扫描测试接口的一般结构,第2张

 

  JTAG边界扫描硬件电路主要由三部分构成:

  1) TAP控制器。测试访问端口(TAP)控制器,是由TMS控制状态转换的状态机。

  2) 指令寄存器。用于存储JTAG边界扫描指令,通过它可以串行的输入并执行各种 *** 作指令。

  3) 数据寄存器。特定芯片的行为由测试指令寄存器的内容决定。测试指令寄存器可用来选择各种不同的数据寄存器。

  2.2 边界扫描测试信号

  支持这个测试标准的芯片必须提供5个专用信号接口:

  ? TRST:测试复位输入信号,低电平有效,为TAP控制器提供异步初始化信号。

  ? TCK:JTAG测试时钟,独立于任何系统时钟,为TAP控制器和寄存器提供测试参考。

  ? TMS:TAP控制器的测试模式选择信号,控制测试接口状态机的 *** 作。

  ? TDI:JTAG指令和数据寄存器的串行输入端,给边界扫描链或指令寄存器提供数据。

  ? TDO:TAG指令和数据寄存器的串行输出。

  2.3 指令

  JTAG测试系统是通过向指令寄存器送入指令,然后使用数据寄存器进行测试。测试指令说明要进行的测试种类及测试要使用的数据寄存器。测试指令分为公开指令和私有指令。公开指令已经定义且用于通用测试。私用指令用于片上的专用测试,测试标准没有规定如何使用私有指令。测试标准支持的最小集的公开指令有:

  ? BYPASS:器件将TDI经一个时钟延时连接到TDO,用于同一个测试环中其它器件的测试。

  ? EXTEST:将边界扫描寄存器连接到TDI和TDO之间,用于支持板级连接测试。

  ? IDCODE:将ID寄存器连接到TDI和TDO之间。通过它可以读出器件ID(厂家赋与的固定标识,包括产品编号及版本码)。

  ? INTEST:将边界扫描寄存器连接到TDI和TDO之间。

  3 EmbeddedICE

  ARM的EmbeddedICE调试结构[3]是一种基于JTAG的ARM的内核调试通道,它是基于JTAG测试端口的扩展,引入了附加的断点和观测点寄存器,这些数据寄存器可以通过专用JTAG指令来访问,一个跟踪缓冲器也可用相似的方法访问。ARM核周围的扫描路径可以将指令加入ARM流水线并且不会干扰系统的其它部分。这些指令可以访问及修改ARM和系统的状态。由于EmbeddedICE条件断点,单步运行等功能的实现是基于片上JTAG测试访问端口进行调试,芯片不需要增加额外的引脚,避免使用笨重的、不可靠的探针接插设备完成调试。芯片中的调试模块与外部的系统时序分开,可以直接运行在芯片内部的独立时钟速度。

  3.1 硬件结构

  EmbeddedICE模块包括两个观察点寄存器和控制与状态寄存器,还包括一个Debug comms端口。当地址、数据和控制信号与观察点寄存器的编程数据相匹配时,也就是触发条件满足时,观察点寄存器可以中止处理器。由于比较是在屏蔽控制下进行的,因此当ROM或RAM中的一条指令执行时,任何一个观察点寄存器可配置为能够中止处理器的断点寄存器。

  1) 观察点

  每个观察点皆可以观察ARM地址总线、数据总线、和

基于JTAG的ARM芯片系统调试,第3张

等信号的特定组合值。任何一个组合值与观察点寄存器值匹配则中止处理器。另外一种方式是把两个观察点链接起来,只有第一个观察点先匹配了,当第二个观察点再匹配时将使处理器中止。

  2) 寄存器

  EmbeddedICE寄存器通过JTAG测试端口使用专用扫描链编程。扫描链38位长,包括32个数据位,5个地址位和一个控制寄存器是读还是写的 位。地址位指定特定的寄存器,地址和寄存器一一对应。

  3) Debug comms端口

  debug comms端口运行在目标系统上的软件可以通过这个端口与主机通信。运行在目标系统上的软件将comms端口视为一个6位控制寄存器和32位可读写寄存器,可以使用对协处理器14的MRC和MCR指令访问。主机将这些寄存器视为EmbeddedICE寄存器。

  3.2 实现原理

  1) 访问状态

  EmbeddedICE模块允许程序在指定点中止,但不允许直接观测、修改处理器或系统状态。这可以通过属于JTAG端口访问的扫描路径实现。访问处理器状态的方法是中止处理器,再在处理器指令序列中强制插入一条多寄存器存取指令。然后通过扫描链向处理器加入时钟,使处理器将寄存器内容送到数据端口。每个寄存器的值都可以被扫描链采样并移出。

  2) 调试

  基于ARM的包括EmbeddedICE模块的系统芯片通过JTAG端口和协议转换器与主计算机连接。这种配置支持正常的断点、观察点以及处理器和系统状态访问,(除上面介绍的comms端口以外)这是程序设计人员在本地或基于ICE的调试中习惯采用的方式。采用适当的主机调试软件,以较少的硬件代价得到完全的源代码级调试功能。

  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2713518.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存