JTAG是JOINT TEST ACTION GROUP的简称,JTAG的两个标准IEEE 1149.1(2001)和IEEE 1149.7(2009)。

JTAG中主要包含两部分内容:TAP(TEST ACCESS PORT)和BOUNDARY-SCAN ARCHITECTURE。

边界扫描的基本思想是:在靠近芯片输入输出引脚处,增加一个移位寄存器单元,称为边界扫描寄存器(Boundary-Scan Register cell)

在芯片处在debug模式下时,这些边界扫描寄存器可以将芯片和外围的input/output隔离开来,

对于input,可以通过边界扫描寄存器将信号或数据加载到该管脚中;

对于output,可以通过边界扫描寄存器得到该管脚上的输出信号;

在normal模式下,这些边界扫描寄存器对芯片是透明的。

管脚上的边界扫描寄存器可以相互连接起来,在芯片周围形成一个边界扫描链(Boundary-Scan Chain);

一般芯片会有很多条独立的boundary-scan chain来灵活控制整个chip所有的input/output

TAP主要作用是来管理这些Boundary-Scan Chain,主要通过TAP Controller中的状态机FSM来作用。

TAP可以访问到芯片提供的所有的数据寄存器(DR)和指令寄存器(IR),Boundary-Scan Chain属于DR中很重要的一种。

TAP总共包含5个信号:

1)Test CLock Input(TCK),TAP操作的独立,基本时钟;

2)Test Mode Selection Input(TMS),控制TAP FSM中state的转变;

3)Test Data Input(TDI),

4)Test Data Output(TDO),

5)Test Reset Input(TRST),对TAP Controller进行复位;不是强制要求的,也可以通过5个高脉冲的TMS产生;

通过Boundary-Scan Chain来control/observe 芯片的输入和输出的过程:

1)observe output,将管脚上的输出装载到Boundary-Scan Chain的寄存器中(Capture),然后通过TDO输出(Shift);

2)control input,将TDI中的信号移位到相应Boundary-Scan Chain的寄存器中(Shift),然后将寄存器中的值加载到管脚上(Capture);

DR表示数据寄存器,IR表示指令寄存器,

状态机主要分为DR和IR两条路,每条路都是先进行capture----shift----update,分别对应output的observe-----register shift------update pad

通过TAP接口访问数据寄存器(DR)的一般过程:

1)通过指令寄存器(IR),选择一个需要访问的数据寄存器(DR)包括Boundary-Scan Chain;

2)将选定的数据寄存器连接到TDI和TDO之间;

3)由TCK驱动,FSM控制,pad

在标准IEEE 1149.1中,还规定了一些指令寄存器,公共指令,和相关的一些数据寄存器

芯片厂商一般还会在这个基础上扩建自己的寄存器,来方便debug

1)BYPASS指令和Bypass 寄存器,一位的寄存器,通过BYPASS指令,将bypass寄存器连接到TDI和TDO之间。提供通路测试;

2)IDCODE指令和Device Identification寄存器,Device Identification寄存器中包含生产厂商和部件号码的信息,使用IDCODE指令,

就可以通过TAP来访问这些信息;

3)INTEST指令和Boundary-Scan寄存器,Boundary-Scan寄存器就是Boundary-Scan Chain寄存器,是debug中最常用的DR,

INTEST命令是使用最频繁的一条指令;

ARM7的debug框图(新的cortex架构的core都采用trace的非侵入方式来debug,不再提供jtag接口)

ARM CPU Main Processor Logic:core的logic包括对debug的支持;

Embedded ICE-RT Logic:包含一组寄存器和比较器,产生debug exception, breakpoint,observe point

TAP Controller:控制jtag scan chain

Boundary Scan的结构:

Boundary Scan Cell的结构:

Out接外部pad,Scan in接Scan out部分。

JTAG的更多相关文章

  1. STM32C8T6 JTAG使用到PB3|PB4|PA13|PA14|PB15端口做普通IO时,需禁止JTAG!

    GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIO ...

  2. STM32用JLINK 烧写程序时出现NO Cortex-m device found in JTAG chain现象和解决方案

    现象 CPU: STM32107VC 用JLINK 烧写程序时出现NO Cortex-m device found in JTAG chain 如图无法查找到硬件就是CPU 提示1:NO Cortex ...

  3. 偶遇STM32 JTAG和SWD口(调试)被禁用无法下载,已经粗暴解决!

    处女座,为了板子走线美观,拉线方便,在项目量产前,还更改了原来外设的IO口,埋头苦干一天,移植ok,发现PB3一直不听使唤,好,加班检查代码,检查初始化,时钟,IO对应,然后试PCB板,是否短路,断路 ...

  4. (转)小心FPGA的JTAG口(上电和下电顺序)

    同志们,根据ALTERA官方FAE(现场应用工程师)的强烈建议,请注意不要随意带电插拔你的JTAG下载接口,否则会损坏FPGA芯片的JTAG口信号管脚.现象:在排除了下载线的问题后,还是不能访问FPG ...

  5. JTAG 学习 -SVF格式

    yxr注: 主要zt,附上自己的心得如下: 1)反观SVF文件,除了设置必要的条件之外(初始条件和TIR等四条命令),真正的运行命令就两条,SIR向JTAG TAP状态机的IR寄存器送命令,SDR往J ...

  6. [异常解决] JTAG 与STM32的SWD连接接线方式

    如果我们的板子上只留了4个接口:V3.3,SWDIO,SWDCLK,GND.那么和JTAG的连接关系参见下图: dd400cf22b5c01e57a6c9e198d5383a0_189.jpg (0 ...

  7. Quartus 11.0 的AS 下载方式和JTAG下载jic文件的方式

    FPGA下载的三种方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式: AS由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列.如EPCS1,EP ...

  8. JTAG和SWD连接关系图

    经实际测试 SWD最少接线方法: 1.VTref与Vsupply短接 2.JLINK的SWDIO与目标板SWDIO相连 3.JLINK的SWCLK与目标板SWCLK相连 4.JLINK任意一个GND与 ...

  9. LPC43XX JTAG Scan Chain

    Debug and trace functions are integrated into the ARM Cortex-M4. Serial wire debug and trace functio ...

随机推荐

  1. 【Android学习5】Clean 之后R文件丢失

    今天一不小心Clean下,发现R文件的资源都不可用,查阅资料发现是自己不小将一个.xml文件的文件名中包含了一个大写字母(为何不能包含大写呢?)   参考解决方法如下: 首先确定你的SDK是新的. 其 ...

  2. String.format(转)

    转自:http://blog.csdn.net/lonely_fireworks/article/details/7962171 方便自己查阅. 常规类型的格式化 String类的format()方法 ...

  3. POI简易帮助文档系列--给Excel设置样式

    正如Html需要CSS一样,我们的POI生成的Excel同样需要样式才能更完美的表现我们的数据.下面还是从简单的例子出发,学习和了解POI的样式设计. 一.我的位置. package com.myja ...

  4. JS-007-富文本域操作

    在日常 web 编写过程中,富文本域几乎成为了一个网站不可页面元素,同时,其也有着各种各样的实现方式,网络上也存在着各种各样的集成插件可供引用.此文以 js 获取.修改 163 邮箱写邮件时的邮件内容 ...

  5. Proxy settings in TortoiseSVN and command line svn client

    The server file is created when you install TortoiseSVN, Eclipse or command-line Subversion. Use the ...

  6. MVC项目实践,在三层架构下实现SportsStore-06,实现购物车

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  7. 第一篇 Integration Services:SSIS是什么

    本篇文章是Integration Services系列的第一篇,详细内容请参考原文. Integration Services是一种在SQL Server中最受欢迎的子系统.允许你在各种数据源之间提取 ...

  8. cocos2dx 3.x(精灵的碰撞检测,点击移动与拖动精灵)

    // // MainScene.hpp // helloworld // // Created by apple on 16/9/19. // // #ifndef MainScene_hpp #de ...

  9. NSTimer 线程操作

    http://www.jianshu.com/p/0c050af6c5ee 2.NSTimer的创建与撤销必须在同一个线程操作.performSelector的创建与撤销必须在同一个线程操作.

  10. IntelliJ IDEA 缓存和索引介绍和清理方法

    IntelliJ IDEA 首次加载项目的时候,都会创建索引,而创建索引的时间跟项目的文件多少成正比,我也简单强调了 IntelliJ IDEA 索引的重要性.这里我们再对此进行详细说明索引.缓存对 ...