一、jtag的基本知识
jtag是joint test action group的缩写,是ieee 1149.1标准。使用jtag的优点:jtag的建立使得集成电路固定在pcb上,只通过边界扫描便可以被测试。在arm7tdmi处理器中,可以通过jtag直接控制arm的内部总线、i/o口等信息,从而达到调试的目的。
二、arm的jtag调试结构
(1)debug主控(host)通常是运行有arm公司或者第三方提供的调试软件的pc机,常用的调试软件有armsdt中的arm debug for windows(adw)、linux下的arm-elf-gdb等。通过这些调试软件,可以发送高级的arm调试命令,如设置断点、读写存储器、单步跟踪、全速运行等。
(2)协议转换器(protocol converter)负责转换debug主控端发出的高级arm调试命令为底层的和arm内核通信的jtag命令。debug主控端和协议转换器之间的介质可以有很多种,比如以太网、usb、rs-232、并口等。debug主控端和协议转换器之间的通信协议最典型的就是arm公司提供的angel标准,也可以是第三方厂家自己定义的标准。关于angel的协议,可参考armsdt和ads的相关文档。典型的协议转换器有:arm公司的multi-ice、abatron公司的bdi、aiji公司的openlce32、epi公司的jeeni等。
(3)arm7tdmi的jtag宏单元(macrocell)主要包括3条jtag扫描链(scan chain) 和1个jtag的控制tap状态机。
三、arm7tdmi内核的jtag扫描链结构
arm7tdmi内核的jtag扫描链结构主要包括3条jtag扫描链:scan chain0、scan chain 1、scan chain2。
四、arm7tdmi中通过jtag对外设的访问
作为arm典型的调试手段,jtag除了可以设置arm的断点以外,还可以对arm的内核进行控制,从而实现对外围设备的读/写(比如下载程序到ram或者flash空间)。通常在arm7tdmi处理器中,jtag对arm外围设备的访问是通过对jtag扫描链1的控制实现的。