JTAG基础

什么是JTAG?

JTAG(Joint Test Action Group ,联合测试行动小组 ) 是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。 JTAG 技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路 TAP ( Test Access Port ,测试访问口),通过专用的 JTAG 测试工具对内部节点进行测试。

如今大多数比较复杂的器件都支持 JTAG 协议,如 ARM 、 DSP 、 FPGA 器件等。标准的 JTAG 接口是 4 线: TMS 、 TCK 、 TDI 、 TDO ,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。

JTAG的作用是什么?

主要用途:芯片内部测试,调试。

JTAG最初是用来对芯片进行测试的,JTAG的基本原理是在器件内部定义一个TAP(Test Access Port,测试访问口)通过专用的JTAG测试工具对内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。如今,JTAG接口还常用于实现ISP(In-System Programmer,在系统编程),对FLASH等器件进行编程。

TAG编程方式是在线编程,传统生产流程中先对芯片进行预编程然后再装到板上,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG接口可对DSP芯片内部的所有部件进行编程。

一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)内置模块的寄存器,像UART,Timers,GPIO等等的寄存器。

上面说的只是JTAG接口所具备的能力,要使用这些功能,还需要软件的配合,具体实现的功能则由具体的软件决定。


JTAG的硬件基础知识

JTAG是硬件实现的。

在cpu(注意:这里的cpu是指运算处理单元,只包含了内部寄存器以及运算单元等基本部件)外围,处理器(即cpu扩展芯片,不是soc)内部包含了JTAG的硬件实现,并且向外界提供接口。


JTAG接口

JTAG内部有一个状态机,称为TAP控制器。TAP控制器的状态机通过TCK和TMS进行状态的改变,实现数据和指令的输入。

标准的JTAG接口是四线(还有可选):

TMS(强制要求)——模式选择,TMS用来设置JTAG口处于某种特定的测试模式,TMS信号在TCK的上升沿有效。TMS在IEEE1149.1标准里是强制要求的。TMS信号用来控制TAP状态机的转换。通过TMS信号,可以控制TAP在不同的状态间相互转换。

TCK(强制要求)——时钟,TCK在IEEE1149.1标准里是强制要求的。TCK为TAP的操作提供了一个独立的、基本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的。

TDI(强制要求)——数据输入,数据通过TDI输入JTAG口,TDI在IEEE1149.1标准里是强制要求的。TDI是数据输入的接口。所有要输入到特定寄存器的数据都是通过TDI接口一位一位串行输入的(由TCK驱动)。

TDO(强制要求)——数据输出,数据通过TDO从JTAG口输出,TDO在IEEE1149.1标准里是强制要求的。TDO是数据输出的接口。所有要从特定的寄存器中输出的数据都是通过TDO接口一位一位串行输出的(由TCK驱动)。

TRST(可选引脚)——测试复位,输入引脚,低电平有效。

这个信号接口在IEEE 1149.1标准里是可选的,并不是强制要求的。TRST可以用来对TAPController进行复位(初始化)。因为通过TMS也可以对TAP Controll进行复位(初始化)。所以有四线JTAG与五线JTAG之分。

除了上述的标准JTAG线之外,硬件JTAG接口上还有其他引脚,一起介绍下:

VTREF(强制要求)——接口信号电平参考电压一般直接连接Vsupply。这个可以用来确定ARM的JTAG接口使用的逻辑电平(比如3.3V还是5.0V?)

RTCK(可选引脚)——返回测试时钟(Return Test Clock,用来同步TCK信号。由目标端反馈给仿真器的时钟信号,用来同步TCK信号的产生,不使用时直接接地。

nSRST(可选引脚)——系统复位(System Reset,复位目标系统。与目标板上的系统复位信号相连,可以直接对目标系统复位。同时可以检测目标系统的复位情况,为了防止误触发应在目标端加上适当的上拉电阻。

USER IN——用户自定义输入。可以接到一个IO上,用来接受上位机的控制。

USER OUT——用户自定义输出。可以接到一个IO上,用来向上位机的反馈一个状态。


JTAG接口连接标准

如今 JTAG 接口的连接有两种标准,即 14 针接口和 20 针接口,其定义分别如下所示。

为什么会有多种接口标准?还有原本只需要标准4/5根线就能实现JTAG调试,为什么实际接口有20针/14针呢?

由于JTAG经常使用排线连接,为了增强抗干扰能力,在每条信号线间加上地线就出现了这种20针的接口。但事实上,RTCK、USER IN、USER OUT一般都不使用,于是还有一种14针的接口。对于实际开发应用来说,由于实验室电源稳定,电磁环境较好,干扰不大。

注:图为各式JTAG的接口电路。

对应14针的JTAG硬件引脚说明如下:

对应20针的JTAG硬件引脚说明如下:


参考:

JTAG基本原理与调试

https://www.cnblogs.com/TaigaCon/archive/2012/12/20/2826941.html


本篇只讲了下JTAG基础,可以继续点击下面的链接看JTAG原理,JTAG调试实例等:

JTAG基础

JTAG调试原理

JTAG调试实例

模拟系统崩溃,使用JTAG调试找到崩溃点

【开发工具】【JTAG】JTAG基础【一】相关推荐

  1. go linux 开发工具,golang的基础语法和常用开发工具详解

    golang的基础语法 golang的基础语法和其他语言大部分都差别不大,如果我们有学习过其他语言,比如JavaScript,php,java,python等,有其他语言的语法基础,那么我们学习gol ...

  2. ultraedit教程java_Java开发工具配置UltraEdit基础教程

    确定你的jdk环境变量配置是正确的. 对于java初学者来说,编译和运行java程序是一件很头疼的东西. 显然,在命令方式下编译和运行java程序用久了,确实是很麻烦, 而我们又不想使用大型的开发工具 ...

  3. 初学Web前端会用到开发工具【零基础web前端入门视频教程】

    目前市面上比较流行的前端开发工具主要有WebStorm.Vscode.Sublime.HBuilder.notepad++.EditPlus.记事本等,今天介绍一下这些开发工具,并且给出了下载地址. ...

  4. Java版Word开发工具Aspose.Words基础转换指南:将Word文档和图像转换为PDF

    Aspose.Words for Java是功能丰富的文字处理API,开发人员可以在自己的Java应用程序中嵌入生成,修改,转换,呈现和打印Microsoft Word支持的所有格式的功能.它不依赖于 ...

  5. Java版Word开发工具Aspose.Words基础教程:创建或加载文档

    Aspose.Words for Java是功能丰富的文字处理API,开发人员可以在自己的Java应用程序中嵌入生成,修改,转换,呈现和打印Microsoft Word支持的所有格式的功能.它不依赖于 ...

  6. Java版Word开发工具Aspose.Words基础教程:检测文件格式并检查格式兼容性

    Aspose.Words for Java是功能丰富的文字处理API,开发人员可以在自己的Java应用程序中嵌入生成,修改,转换,呈现和打印Microsoft Word支持的所有格式的功能.它不依赖于 ...

  7. ezStudio,易用高效的业务基础平台开发工具

    摘要 本文从业务基础平台谈起,引申出与业务基础平台息息相关的开发工具,通过对国内外开发工具现状与未来趋势的描述,引导读者对开发工具有一个较为全面的了解.最后对清华同方ezONE(易众)业务基础平台中的 ...

  8. Unity3D ——强大的跨平台3D游戏开发工具教程

    http://unity3d.9ria.com/?p=22 众所周知,Unity3D是一个能够实现轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎.在现有的版本中,其强大的游戏制作功能已经 ...

  9. 软件开发工具与环境 (课程代码:07169)

    软件开发工具与环境 (课程代码:07169) 试题 一次测评 二次测评 试题 一次测评 1.第三代程序设计语言属于 A.汇编语言 B.机器语言 C.过程化语言 D.非过程化语言 2.软件开发环境的主要 ...

  10. 【03173】2020年10月高等教育自学考试-软件开发工具

    第一部分 选择题 一.单项选择题:本大题共20小题,每小题1分,共20分.在每小题列出的备选项中 只有一项是最符合题目要求的,请将其选出. 1. 软件开发工具的发展基础是 A. 第一代语言 B. 第二 ...

最新文章

  1. SQL工具-技术支持工具
  2. 2020-11-12(JNI开发常见错误)
  3. 苹果公司有“内鬼”!ID被盗后每条只卖10元钱
  4. java string问题_Java关于String的问题?
  5. 基于 Redis 实现 CAS 操作
  6. C# Socket初探
  7. postman插件下载、安装教程
  8. MYSQL常用操作(一)之设置ROOT密码,连接,常用命令
  9. Java 读取excl
  10. 物联网卡不实名认证有什么风险
  11. mysql 电商项目(二)
  12. centos 7 修改ip
  13. VMware Tools手动安装
  14. C++编码实现定时任务执行功能
  15. 重要极限二:x趋近于无穷大,(1+1/x)^x的极限
  16. 康考迪亚计算机科学硕士,康考迪亚大学专业
  17. mac Segmentation Fault
  18. java技术--报警通知及实现方式
  19. 工业设计公司如何选择
  20. php array_sli ce,JavaScript Array --map()、filter()、reduce()、forEach()函数的使用

热门文章

  1. CF845 A - B
  2. java多媒体播放器_Java多媒体播放器(四)
  3. android 线性布局总结
  4. 牛顿下山法(Python实现)
  5. 基于QT 实现机器视觉软件
  6. easyui messager
  7. sheet.js插件解析excel数据
  8. [学习笔记]UserInterface/Layouts
  9. Python爬虫——12306网站车次信息
  10. php毕业设计 基于php+mysql电子书阅读系统毕业设计开题报告功能参考