来自 嵌入式系统Linux内核开发实战指南   http://book.chinaunix.net/showart.php?id=3258

 JTAG简介

JTAG接口的基本工作原理是:在芯片内部定义一个TAP(Test Access Port,测试访问端口),开发人员使用连接到芯片的JTAG外部接口上的JTAG调试器,通过访问芯片内部的TAP端口来扫描芯片内部各个扫描单元以写 入或读取扫描寄存器的状态,从而对芯片进行测试和调试。一个扫描单元对应一个外部管脚,每个外部管脚有一个扫描寄存器BSR单元,所有这些管脚的扫描寄存 器连在一起就形成了扫描链。简单地说,PC通过JTAG调试器对目标板的调试就是通过TAP端口完成对扫描寄存器BSR和指令寄存器IR的读写访问。要了 解关于JTAG 更全面的知识,请参阅 IEEE1149.1标准。

 一些基本概念

JTAG

是Joint Test Action Group(联合测试行动组)的缩写,是一种国际标准测试协议,它遵守IEEE 1149.1标准。一个含有JTAG接口的处理器,只要时钟正常,就可以通过JTAG接口访问处理器的内部寄存器、挂在处理器总线上的设备以及内置模块的 寄存器。

TAP

是Test Access Port(测试访问端口)的缩写,是芯片内部一个通用的端口,通过TAP可以访问芯片提供的所有数据寄存器(DR)和指令寄存器(IR),对整个TAP的控制是通过TAP控制器(TAP Controller)完成的。

边界扫描

英文叫Boundary Scan,边界扫描的基本思想是在靠近芯片的输入输出管脚(PIN)上设置一个移位寄存器单元,也就是边界扫描寄存器(Boundary-Scan Register)。当芯片处于调试状态时,边界扫描寄存器可以将芯片和外部输入输出管脚隔离开来,通过边界扫描寄存器单元,可以实现对芯片外部输入输出 管脚的观察和控制。对于芯片的输出管脚可以通过与之相连的边界扫描寄存器单元把信号(数据)加载到该引脚中去,对于芯片的输入管脚,也可以通过与之相连的 边界扫描寄存器"捕获"该管脚上的输出信号。在正常的运行状态下,边界扫描寄存器对芯片来说是透明的,所以正常的运行不会受到任何影响,这样,边界扫描寄 存器提供了一种便捷的途径用于观测和控制所需调试的芯片。另外,芯片管脚上的边界扫描(移位)寄存器单元可以相互连接起来,使芯片的周围形成一个边界扫描 链(Boundary-Scan Chain),边界扫描链可以串行地输入和输出,通过相应的时钟信号和控制信号,就可以方便地观察和控制处在调试状态下的芯片。

JTAG接口信号

标准的JTAG接口定义了以下一些信号管脚:

TMS:测试模式选择信号,输入,IEEE 1149.1标准强制要求。

TCK:测试时钟信号,输入,IEEE 1149.1标准强制要求。

TDI:测试数据输入信号,输入,IEEE 1149.1标准强制要求。

TDO:测试数据输出信号,输出,IEEE 1149.1标准强制要求。

TRST:内部TAP控制器复位信号,输入,IEEE 1149.1标准不强制要求,因为通过TMS也可以对TAP Controller进行复位。

STCK:时钟返回信号,IEEE 1149.1标准不强制要求。

DBGRQ:目标板上工作状态的控制信号,IEEE 1149.1标准不强制要求

TAP控制器的状态机

TAP控制器有16个同步状态,控制器的下一个状态TMS信号决定,TMS信号在TCK的上升沿被采样生效。

图列出了TAP控制器的16个同步状态转换机制。

Test-Logic-Reset测试逻辑复位状态

处于这种状态下,测试逻辑被禁止以允许芯片正常操作,读IDCODE寄存器将禁止测试逻辑。

无论TAP控制器处于何种状态,只要将TMS信号在5个连续的TCK信号的上升沿保持高电平,TAP就将进入Test-Logic-Reset状 态,如果TMS信号一直为高电平,那么TAP将保持在Test-Logic-Reset状态,另外TRST信号也可以强迫TAP进入Test- Logic-Reset状态。

处于Test-Logic-Reset状态的TAP,如果下一个TCK的上升沿时TMS信号处于低电平,那么TAP将被切换到Run-Test-Idle状态。

Run-Test-Idle运行测试空闲状态

Run-Test-Idle是TAP控制器扫描操作空闲状态,如果TMS信号一直处于低电平,那么TAP将保持在TRun-Test-Idle状态。当TMS信号在TCK上升沿处于高电平,TAP控制器将进入Select-DR-Scan状态。

Select-DR-Scan选择数据寄存器扫描状态

Select-DR-Scan是TAP控制器的一个临时状态,边界扫描寄存器BSR保持它们先前的状态。

当TMS信号在下一个TCK上升沿处于低电平,TAP控制器进入Capture-DR状态,一个边界扫描寄存器的扫描操作同时被初始化。

如果TMS信号在下一个TCK上升沿处于高电平,TAP控制器将进入Select-IR-Scan状态。

Capture-DR捕获数据寄存器状态

如果TAP控制器处于Capture-DR状态,且当前指令是SAMPLE/PRELOAD指令,那么边界扫描寄存器BSR在TCK信号的上升沿捕 获输入管脚的数据。如果此时不是SAMPLE/PRELOAD指令,那么BSR保持它们先前的值,另外BSR的值被放入连接在TDI和TDO管脚之间的移 位寄存器中。

处于Capture-DR状态时,指令不会被改变。

如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Exit1-DR状态。如果TMS信号在下一个TCK上升沿处于低电平,则TAP进入Shift-DR状态。

Shift-DR移位数据寄存器状态

在Shift-DR状态下,在每个TCK的上升沿,TDI-移位寄存器-TDO串行通道向右移一位,TDI的数据移入移位寄存器,移位寄存器最靠近TDO的位移到TDO管脚上。

处于Shift-DR状态时,指令不会被改变。

如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Exit1-DR状态。如果TMS信号处于低电平,则TAP一直进行移位操作。

Exit1-DR退出数据寄存器状态1

Exit1-DR是TAP控制器的一个临时状态,如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Update-DR状态;如果TMS信号在下一个TCK上升沿处于低电平,则TAP进入Pause-DR状态。

处于Exit1-DR状态时,指令不会被改变。

Pause-DR暂停数据寄存器状态

Pause-DR状态允许TAP控制器暂时停止TDI-移位寄存器-TDO串行通道的移位操作。

处于Pause-DR状态时,指令不会被改变。

如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Exit2-DR状态;如果TMS信号处于低电平,则TAP一直保持暂停状态。

Exit2-DR退出数据寄存器状态2

Exit2-DR也是TAP控制器的临时状态,如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Update-DR状态,结束扫描操作;如果TMS信号在下一个TCK上升沿处于低电平,则TAP重新进入Shift-DR状态。

处于Exit2-D状态时,指令不会被改变。

Update-DR更新数据寄存器状态

在正常情况下,边界扫描寄存器BSR的值是被锁存在并行输出管脚中,以免在EXTEST或SAMPLE/PRELOAD命令下执行移位操作时改变 BSR的值。当处于Update-DR状态时选择的是BSR寄存器,那么移位寄存器中的值将在TCK的下降沿被锁存到BSR寄存器的并行输出管脚中去。

处于Update-DR状态时,指令不会被改变。

如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Select-DR-Scan状态;如果TMS信号在下一个TCK上升沿处于低电平,则TAP进入Run-Test-Idle状态。

Select-IR-Scan选择指令寄存器扫描状态

Select-IR-Scan是TAP控制器的一个临时状态。

如果TMS信号在下一个TCK上升沿处于低电平,TAP控制器进入Capture-IR状态,一个对指令寄存器的扫描操作同时被初始化。

如果TMS信号在下一个TCK上升沿处于高电平,TAP控制器将进入Test-Logic-Reset状态。

处于Select-IR-Scan状态时,指令不会被改变。

Capture-IR捕获指令寄存器状态

处于Capture-IR状态时,指令寄存器中的值被固定设置成0b0000001,并将它放入连接在TDI与TDO之间的移位寄存器中。

处于Capture-DR状态时,指令不会被改变。

如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Exit1-IR状态;如果TMS信号在下一个TCK上升沿处于低电平,则TAP进入Shift-IR状态。

Shift-IR移位指令寄存器状态

在Shift-IR状态下,在每个TCK的上升沿,TDI-移位寄存器-TDO串行通道向右移一位,JTAG指令从TDI管脚上被逐位移入移位寄存器,而移位寄存器中的0b0000001则被逐位从TDO管脚移出。

处于Shift-IR状态时,指令不会被改变。

如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Exit1-IR状态;如果TMS信号处于低电平,则TAP一直进行移位操作。

Exit1-IR退出指令寄存器状态1

Exit1-IR是TAP控制器的一个临时状态,如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Update-IR状态;如果TMS信号在下一个TCK上升沿处于低电平,则TAP进入Pause-IR状态。

处于Exit1-IR状态时,指令不会被改变。

Pause-IR暂停指令寄存器状态

Pause-IR状态允许TAP控制器暂时停止TDI-移位寄存器-TDO串行通道的移位操作。

处于Pause-IR状态时,指令不会被改变。

如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Exit2-IR状态;如果TMS信号处于低电平,则TAP一直处于暂停状态。

Exit2-IR退出指令寄存器状态2

Exit2-IR也是TAP控制器的临时状态,如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Update-IR状态,结束扫描操作;如果TMS信号在下一个TCK上升沿处于低电平,则TAP重新进入Shift-IR状态。

处于Exit2-D状态时,指令不会被改变。

Update-IR更新指令寄存器状态

处于Update-IR状态时,移位寄存器中的值将在TCK的下降沿被锁存到指令寄存器中,一旦锁存成功,新的指令将成为当前的指令。

如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Select-DR-Scan状态;如果TMS信号在下一个TCK上升沿处于电平,则TAP进入Run-Test-Idle状态。

JTAG接口指令集

JTAG接口指令集包含以下常用指令:

EXTEST指令

外部测试指令,必须全为0,TAP强制定义。该指令初始化外部电路测试,主要用于板级互连以及片外电路测试。

EXTEST指令在Shift-DR状态时将扫描寄存器BSR寄存器连接到TDI与TDO之间。在Capture-DR状态时,EXTEST指令将 输入管脚的状态在TCK的上升沿装入BSR中。EXTEST指令从不使用移入BSR中的输入锁存器中的数据,而是直接从管脚上捕获数据。在Update- DR状态时,EXTEST指令将锁存在并行输出寄存器单元中的数据在TCK的下降沿驱动到对应的输出管脚上去。

SAMPLE/PRELOAD指令

采样/预装载指令,TAP强制定义。在Capture-DR状态下,SAMPLE/PRELOAD指令提供一个从管脚到片上系统逻辑的数据流快照, 快照在TCK的上升沿提取。在Update-DR状态时,SAMPLE/PRELOAD指令将BSR寄存器单元中的数据锁存到并行输出寄存器单元中,然后 由EXTEST指令将锁存在并行输出寄存器单元中的数据在TCK的下降沿驱动到对应的输出管脚上去。

BYPASS指令

旁路指令,必须全为1,TAP强制定义。BYPASS指令通过在TDI和TDO之间放置一个1位的旁通寄存器,这样移位操作时只经过1位的旁通寄存 器而不是很多位(与管脚数量相当)的边界扫描寄存器BSR,从而使得对连接在同一JTAG链上主CPU之外的其他芯片进行测试时提高效率。

IDCODE指令

读取CPU ID号指令,TAP强制定义。该指令将处理器的ID号寄存器连接到TDI和TDO之间。

JTAG的TAP状态机介绍相关推荐

  1. Verilog——JTAG标准的状态机实现

    JTAG标准的状态机实现 JTAG作为一项国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试和调试.目前的主流芯片均支持JTAG协议,如DSP.FPGA.ARM.部分单片机等.标准的J ...

  2. ‘SHIT’上最全有限状态机设计研究(一)-状态机介绍

    本系列主要针对有限状态机进行分析和设计,其中主要包括两部分:时钟同步状态机的分析和时钟同步状态机的设计,预计会有五篇文章进行展开,其中介绍一篇,分析和设计分别有两篇,每一部分都会有相应的实例. 文章目 ...

  3. Godot3游戏引擎入门之十四:RigidBody2D刚体节点的应用以及简单的FSM状态机介绍

    一.前言 时间飞逝,距离上次更新已经有半年之久!这几个月里我只有三分之一的时间很忙,相反其他时间是比较闲的,但是由于空闲时间非常"碎片化",导致我一直没有集中精力搞自己喜欢的&qu ...

  4. 手机html5 tap事件,HTML5触摸事件演化tap事件介绍

    触摸事件是移动浏览器特有的HTML5事件,虽然click事件在pc和移动端更通用,但是在移动端会出现300ms延迟,较为影响用户体验,300ms延迟来自判断双击和长按,因为只有默认等待时间结束以确定没 ...

  5. JTAG篇(2)——FT2232H 控制 JTAG TAP

    FT2232H 控制 JTAG TAP 简介 dependencies JTAG TAP 控制器实现 TAP简介 TAP Verilog实现 FT2232H 驱动JTAG 实验结果 简介 depend ...

  6. 如何利用状态机编程实现启保停控制(含Stateflow模型介绍)

    状态机的介绍这里不再赘述,概念也很简单没有过多的复杂理论.下面我们直接给出具体实现过程.有限自动状态机详细讲解请参看下面的文章链接: PLC面向对象编程系列之有限状态机(FSM)详解_RXXW_Dor ...

  7. JLINK与JTAG的区别

    调试ARM,要遵循ARM的调试接口协议,JTAG就是其中的一种.当仿真时,IAR.KEIL.ADS等都有一个公共的调试接口,RDI就是其中的一种, 那么我们如何完成RDI-->ARM调试协议(J ...

  8. 硬件设备 之一 详解 JTAG、SWD 接口

      JTAG 和 SWD 在嵌入式开发中可以说是随处可见,他们通常被用来配合 J-Link .ULINK.ST-LINK 等仿真器在线调试嵌入式程序.此外,还有飞思卡尔芯片中的 Background ...

  9. 【开发工具】【JTAG】JTAG基础【一】

    JTAG基础 什么是JTAG? JTAG(Joint Test Action Group ,联合测试行动小组 ) 是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真.调试. JTAG 技术是 ...

最新文章

  1. python读取数据库数据类型有哪些_数据库varchar 相当于python里的哪个类型
  2. http头部content-type与数据格式
  3. Linux文件目录及其作用
  4. 怎么使用config?
  5. 文献记录(part36)--A survey on heterogeneous network representation learning
  6. python安装环境傻瓜式安装_Python环境安装(两种方式)
  7. form表单提交,后台实体类接收转义问题 解决方案
  8. python程序框架_Python 程序构架浅析
  9. 代码不会骗人,但有时注释会
  10. 代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
  11. 为什么CPU的使用率总是100%
  12. uniapp实现滑动导航
  13. 大学英语综合教程三 Unit 1至Unit 8 课文内容英译中 中英翻译
  14. 360浏览器插件360抢票王火车票刷票技巧
  15. 决策树- 随机森林/GBDT/XGBoost
  16. eas上传文件到服务器,金蝶eas要使用云服务器
  17. 弘辽科技:淘宝提升展现词好吗?淘宝展现词如何提升?
  18. Long和Integer相互转换
  19. jws webservice 跳过https认证_【大连学为贵5周年庆典】多邻国考试不能认证是怎么回事?这些雷区不要踩!...
  20. RC522RFID读卡寻卡失败原因

热门文章

  1. debian修改字体
  2. 哥德尔不完全性定理探索数学边界
  3. Java如何创建支付接口
  4. 简洁UI设计,超简单的旅游APP,Figma源文件下载
  5. 工程师高级职称计算机考试成绩查询,高级工程师证书查询(高级工程师职称查询系统)...
  6. 配置yum本地仓库(我对全世界说晚安,独独对你说喜欢)
  7. 用腾讯云COS制作个人图床
  8. Python实现BOA蝴蝶优化算法优化支持向量机回归模型(SVR算法)项目实战
  9. python excel数据分析画直方图 饼状图_Excel数据可视化应用(直方图、折线图、饼状图)...
  10. tomcat宕机自动重启和每日定时启动tomcat