欢迎各位莅临我的自由空间!

arm jtag

上一篇 / 下一篇  2008-05-03 22:55:22

JTAG的协议定义入手,如下是一些学习笔记

第一份得到的宝贵资料是来自 OPEN-JTAG 开发小组的《ARM JTAG 调试原理》,对该组的成员表示感谢。
JTAG(Joint Test Action Group)是1985年制定的检测PCB和IC芯片的一个标准,1990年被修改后成为IEEE的一个标准,

即IEEE1149.1-1990。通过这个标准,可对具有JTAG口芯片的硬件电路进行边界扫描和故障检测。我在看的是2001年版本及

IEEEStd 1149.1-2001(Revision of Std 1149.1-1990) IEEE Standard Test Access Port and Boundary-Scan Architecture

几句从标准中拷贝下来的话: 
  The circuitry defined by this standard allows test instructions and associated test data to be fed into a component and, subsequently, allows the results of execution of such instructions to be read out. All information (instructions, test data, and test results) is communicated in a serial format.
串行操作。允许互动操作。

The test logic defined by this standard is designed such that the serial movement of instruction information is not apparent to those circuit blocks whose operation is controlled by the instruction. The 

instruction applied to these blocks changes only on completion of the shifting (instruction load) process.
输入输出不影响其内部状态,移入的指令要生效,需要Intruction Load 操作。

Note that the movement of test data has no effect on the instruction present in the test circuitry.


Note that in cases where the same test operation is to be repeated but with different data, new test data can be shifted into the component while the test results are shifted out. There is no need for the  instruction to be reloaded.
指令在不修改之前一直生效。

The boundary-scan technique involves the inclusion of a shift-register stage (contained in a boundary-scan register cell) adjacent to each component pin so that signals at component boundaries can be controlled and observed using scan testing principles.
将芯片的管脚与内部的边缘扫描移位寄存器相关联起来,通过检测控制寄存器的状态可以Sample和Observe芯片的管脚状态。

To allow the components on the board to be tested, the boundary-scan register can be used as a means of  isolating on-chip system logic from stimuli received from surrounding components while an internal  self-test is performed  DFT  design for test feature 可测试性设计方法


Design-for-test features such as these can be accessed and controlled using the data path between the serial test data pins of the TAP defined by this standard. Instructions that cause internal reconfiguration of the component's system logic such that the test operation is enabled may be shifted into the component through the TAP.

 

-------------------------------------------------------------------------------------------------

在JTAG调试当中,边界扫描(Boundary-Scan)是一个很重要的概念。边界扫描技术的基本思想是在靠近芯片的输入输出管脚上增加一个移位寄存器单元。因为这些移位寄存器单元都分布在芯片的边界上(周围),所以被称为边界扫描寄存器(Boundary-Scan Register Cell)。当芯片处于调试状态的时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来。通过这些边界扫描寄存器单元,可以实现对芯片输入输出信号的观察和控制。芯片输入输出管脚上的边界扫描(移位)寄存器单元可以相互连接起来,在芯片的周围形成一个边界扫描链(Boundary-Scan Chain)。


如何来管理和使用这些边界扫描链?
对边界扫描链的控制主要是通过TAP (Test Access Port)Controller来完成的。


在IEEE 1149.1标准里面,寄存器被分为两大类:数据寄存器(DR-Data Register)和指令寄存器(IR-Instruction Register)。边界扫描链属于数据寄存器中很重要的一种。


TAP是一个通用的端口,通过TAP可以访问芯片提供的所有数据寄存器(DR)和指令寄存器(IR)。对整个TAP的控制是通过TAP Controller来完成的。TAP总共包括5个信号接口TCK、TMS、TDI、TDO和TRST :其中4个是输入信号接口和另外1个是输出信号接口。


TMS信号在TCK的上升沿有效。TRST是可选的一个信号接口,这是因为在TMS上连续加5个TCK脉冲宽度的"1"信号也可以对测试逻辑电路进行复位,使得TAP Controller进入Test-Logic Reset状态。定义很简单,看状态机的转移流程,很容易看出任何一条路最多经过5个‘1'必然回到Test-Logic Reset状态。

TAP的状态机,总共有16个状态。状态名称如下:
Test-Logic Reset 
Run-Test/Idle

Select-DR-Scan
Capture-DR
Shift-DR
Exit1-DR
Pause-DR
Exit2-DR
Update-DR


Select-IR-Scan
Capture-IR
Shift-IR
Exit1-IR
Pause-IR
Exit2-IR
Update-IR

开始---〉捕获---〉移位----〉退出

TDI----〉SCAN CHAIN----〉TDO


指令寄存器: 指令寄存器允许特定的指令被装载到指令寄存器当中,用来选择需要执行的测试,或者选择需要访问的测试数据寄存器。

BYPASS指令和Bypass寄存器: Bypass寄存器是一个一位的移位寄存器,通过BYPASS指令,可以将bypass寄存器连接到TDI和TDO之间,其中只经

过一个单位长度的链。在不需要进行任何测试的时候,将bypass寄存器连接在TDI和TDO之间,在TDI和TDO之间提供一条长度最短的串行路径。

这样允许测试数据可以快速的通过当前的芯片送到开发板上别的芯片上去。

IDCODE指令和Device Identification 寄存器: Device identification寄存器中可以包括生产厂商的信息,部件号码,和器件的版本信息等。

INTEST指令和Boundary-Scan 寄存器: Boundary-Scan寄存器就是我们前面例子中说到的边界扫描链。通过边界扫描链,可以进行部件间的连通性测试。当然,更重要的是可以对测试器件的输入输出进行观测和控制,以达到测试器件的内部逻辑的目的。INTEST指令是在IEEE 1149.1标准里面定义的一条很重要的指令:结合边界扫描链,该指令允许对开发板上器件的系统逻辑进行内部测试。


一个调试系统一般包括三个部分:调试主机、协议转换器和调试目标。


ARM7TDMI处理器主要包括三大部分:
ARM CPU Main Processor Logic 这部分包括了对调试的硬件支持;
Embedded ICE-RT Logic 这部分包括了一组寄存器和比较器,用来产生调试异常、设置断点和观察点;
TAP Controller TAP Controller通过JTAG接口来控制和操作扫描链。


现ARM7TDMI提供了4条扫描链:Scan Chain 0, 1, 2 & 3.
Scan Chain 0 通过扫描链0可以访问ARM7TDMI内核的外围电路,包括数据总线。通过该扫描链可以进行芯片间的测试(EXTEST)和芯片的内部测试(INTEST)。该扫描链长度为113位,具体包括:数据总线的0-31位,内核控制信号,地址总线的31-0位,EmbeddedICE-RT的控制信号。 

Scan Chain 1 扫描链1是扫描链0的子集,长度为33位,具体包括:数据总线的0-31位、BREAKPT信号。扫描链1比扫描链0的长度短了很多,通过扫描链1可以更快的插入指令或者是数据到ARM7TDMI的内部。
Scan Chain 2 扫描链2长度为38位,该扫描链是专门用来访问EmbeddedICE-RT内部的寄存器。通过访问EmbeddedICE-RT的内部寄存器,可以让ARM7TDMI进入调试状态、设置断点、设置观察点。
Scan Chain 3 通过扫描链3,ARM7TDMI可以访问外部的边界扫描链。


ARM7TDMI的正常运行状态和调试状态的区别?
在正常运行状态下,ARM7TDMI由MCLK(Memory Clock)驱动。
在调试状态下,ARM7TDMI的正常运行被打断,并且和系统的其它部分隔离开来。
在调试状态下,我们可以通过插入特定的ARM/THUMB的指令来读写ARM7TDMI的内部寄存器和修改内存的内容。
在调试状态下,ARM7TDMI由内部的调试时钟DCLK(Debug Clock)驱动。
在完成需要的操作后,可以用RESTART JTAG指令让ARM7TDMI返回到正常运行状态,恢复原来的运行。


ARM7TDMI调试当中经常用到的几条JTAG指令。

IDCODE 
该指令的二进制代码是1110。
IDCODE指令将Device Identification Code寄存器连接到TDI和TDO之间。
Device Identification Code寄存器的长度是32位,通过TAP就可以将ARM7TDMI的ID给读出来。
ARM7TDMI的ID是0x1F0F0F0F. 在CAPTURE-DR状态下,器件的ID被捕获到ID寄存器里面。

SCAN_N 
该指令的二进制代码是0010。
ARM7TDMI提供了4条扫描链,通过SCAN_N指令可以选择需要访问的扫描链。


BYPASS 
该指令的二进制代码是1111。
BYPASS指令将1-BIT 长的BYPASS寄存器连接到TDI和TDO之间。


INTEST 
该指令的二进制代码是1100。
INTEST指令将通过SCAN_N选定的扫描链置于内部测试模式。


RESTART 
该指令的二进制代码是0100。
RESTART指令用来使ARM7TDMI处理器从调试状态退回到正常的运行状态。


过扫描链2来访问EmbeddedICE-RT内部的寄存器。EmbeddedICE-RT内部包括了丰富的寄存器,通过这些寄存器,可以控制ARM7TDMI进入或者退出调试状态;可以设置断点和观察点。

不同的寄存器有不同的长度,而且被分配了一个长度为5的地址。其中Debug Control Register用来控制EmbeddedICE-RT;通过Debug Status Register可以查询当前系统的状态;Abort Status Register用来确定异常的产生原因:断点、观察点还是真的异常;Debug Comms Control Register和Debug Comms Data Register是用来控制和操作Debug Communication Channel的;后面的所有寄存器都是关于WATCH POINT的,设置断点和观察点就是通过设置这些寄存器来实现的。

要访问EmbeddedICE-RT内部的寄存器,必须通过扫描链2来实现。扫描链的长度是38位,其中0-4位用来标识要访问的寄存器的5位宽的地址;5-36位为数据位;第37位用来标识对当前寄存器进行读操作还是写操作。

TAG: ARM JTAG arm jtag

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-11  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 2136
  • 日志数: 15
  • 建立时间: 2007-04-14
  • 更新时间: 2008-07-19

RSS订阅

Open Toolbar