集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1657|回复: 3

ARM的JTAG接口详解

[复制链接]
zxopen88 发表于 2012-6-20 12:02:06 | 显示全部楼层 |阅读模式
  JTAG概述
  JTAG是Joint Test Action Group的缩写,是IEEE 1149.1标准。
  使用JTAG的优点:JTAG的建立使得集成电路固定在PCB上,只通过边界扫描便可以被测试。
  在ARM7TDMI处理器中,可以通过JTAG直接控制ARM的内部总线、I/O口等信息,从而达到调试的目的。
  边界扫描
  JTAG 调试中,边界扫描(Boundary-Scan)是一个很重要的概念。
  边界扫描基本思想:在靠近芯片的输入输出管脚上增加一个移位寄存器单元。因为这些移位寄存器单元都分布在芯片的边界上(周围),所以被称为边界扫描寄存器(Boundary-Scan Register Cell)。
  当芯片处于调试状态时,这些边界扫描寄存器可以将芯片和外围的输入输出隔离。
  通过这些边界扫描寄存器单元,可以实现对芯片输入输出信号的观察和控制。在正常运行状态下,这些边界扫描寄存器对芯片来说是透明的。
  芯片输入输出管脚上的边界扫描(移位)寄存器单元可以相互连接起来,在芯片的周围形成一个边界扫描链(Boundary-Scan Chain)。一般的芯片都会提供几条独立的边界扫描链,用来实现完整的测试功能。
  边界扫描链可以串行的输入和输出,通过相应的时钟信号和控制信号,就可以方便的观察和控制处在调试状态下的芯片。
  TAP (TEST ACCESS PORT)在IEEE 1149.1 标准里面,寄存器被分为两大类:数据寄存器(DR-Data Register)和指令寄存器(IR-Instruction Register)。边界扫描链属于数据寄存器中很重要的一种。
  边界扫描链:用来实现对芯片的输入输出的观察和控制。
  指令寄存器:用来实现对数据寄存器的控制,例如:在芯片提供的所有边界扫描链中,选择一条指定的边界扫描链作为当前的目标扫描链,并作为访问对象。
  TAP :一个通用的端口,通过TAP 可以访问芯片提供的所有数据寄存器(DR)和指令寄存器(IR)。
  对TAP 的控制通过TAP Controller 来完成。
  TAP 包括5 个信号:TCK、TMS、TDI、TDO 和TRST。
  JTAG 接口的主要信号
  (1)Test Clock Input (TCK)
  为TAP 的操作提供一个独立的、基本的时钟信号,TAP 的所有操作都是通过这个时钟信号来驱动的。
  (2)Test Mode Selection Input (TMS)
  控制TAP 状态机的转换。通过TMS ,可以控制TAP 在不同的状态间相互转换。TMS 信号在TCK 的上升沿有效。
  (3)Test Data Input (TDI)
  数据输入。所有要输入到特定寄存器的数据都是通过TDI 接口一位一位串行输入的(由TCK 驱动)。
  (4)Test Data Output (TDO)
  数据输出。所有要从特定的寄存器中输出的数据都是通过TDO 接口一位一位串行输出的(由TCK 驱动)。
  (5)Test Reset Input (TRST)
  复位(初始化)。
  ***通过TAP 接口,对DR进行访问的一般过程是:
  1)通过IR,选定一个需要访问的数据寄存器;
  2)把选定的数据寄存器连接到TDI 和TDO 之间;
  3)由TCK 驱动,通过TDI,把需要的数据输入到选定的数据寄存器中;并把选定的数据寄存器中的数据通过TDO读出。
  TAP 主要状态
  TAP有16 个状态,状态的转换由TMS 控制。
  Test-Logic Reset:系统上电后,TAP Controller 自动进入该状态。在该状态下,测试部分的逻辑电路全部被禁用。
  Run-Test/Idle:在不同操作间的一个中间状态。这个状态下的动作取决于当前指令寄存器中的指令。
  Select-DR-Scan:临时的中间状态。
  Capture-DR:在TCK 上升沿,芯片输出管脚上的信号将被“捕获”到与之对应的数据寄存器的各个单元中去。
  Shift-DR:由TCK 驱动,每一个时钟周期,被连接在TDI 和TDO 之间的数据寄存器将从TDI 接收一位数据,同时通过TDO 输出一位数据。
  Update-DR:由TCK 上升沿驱动,数据寄存器当中的数据将被加载到相应的芯片管脚上去,用以驱动芯片。
  Select-IR-Scan:临时的中间状态。
  Capture-IR:一个特定的逻辑序列装载到指令寄存器中。
  Shift-IR:与Shift-DR类似,对应指令寄存器。
  Update-IR:新指令将被用来更新指令寄存器。
  TAP 状态机

  

  JTAG链的工作过程
  步骤一:JTAG处于挂起状态,JTAG的扫描单元并不影响设备信号的输入输出。
  步骤二:在JTAG状态机的Capture-DR状态,把IO口上的数据捕获到JTAG扫描单元的移位寄存器上。
  步骤三:在JTAG状态机的Shift-DR状态,TCK的一次跳变,把数据从TDI移位到JTAG移位寄存器的高位上,并从TDO输出移位寄存器的低位(就是O3的数据)。
  步骤四:经过6个TCK的时钟可以把整个捕获到的JTAG链的移位寄存器上的数据移出,并且,把新的数据移入JTAG链。
  步骤五:在JTAG状态机的Update—DR状态,可以把新的数据锁定到设备的输入或者输出I/O口上,从而完成了一次JTAG的数据更新。
  ARM7TDMI的JTAG调试结构
  一个调试系统一般包括三个部分:
  (1)调试主机
  (2)协议转换器
  (3)调试目标

  


  

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

  JTAG扫描链
  ARM7TDMI的JTAG宏单元(Macrocell)主要包括3条JTAG扫描链(Scan Chain) 和一个JTAG的控制TAP状态机。
  Scan Chain 0:可以访问ARM7TDMI 内核的外围电路,包括数据总线。该扫描链长度为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 进入调试状态、设置断点、设置观察点。
  ARM7TDMI中通过JTAG对外设的访问
  JTAG可以对ARM的内核进行控制,从而实现对外围设备的读写。
  通常,在ARM7TDMI处理器中,JTAG对ARM外围设备的访问是通过对JTAG扫描链1的控制实现的。
  ARM7TDMI中JTAG扫描链1有33个移位寄存器。其中前32位和ARM总线上的数据相连,第33位是ARM内核的—个控制信号。
  当第33位是0时,表示ARM内核在执行下一条指令的时候,是在Debug模式下运行;
  当第33位是1时,表示ARM内核在执行下一条指令的时候,是在System模式下运行
zhiweiqiang33 发表于 2013-6-26 16:50:33 | 显示全部楼层
学习 学习 谢谢 分享
fpga_feixiang 发表于 2022-6-18 19:37:58 | 显示全部楼层
6666666666666666666
dameihuaxia 发表于 2022-6-20 14:18:48 | 显示全部楼层
用c语言开发FPGA
http://www.fpgaw.com/forum.php?m ... 5&fromuid=58166
(出处: fpga论坛|fpga设计论坛)
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-5-8 06:28 , Processed in 0.090565 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表