大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家讲的是嵌入式调试里的接口标准JTAG

  嵌入式开发中,大家免不了需要仿真调试代码,尤其是当应用工程功能逻辑复杂到一定程度时,免不了在写代码时会引入一些逻辑bug,仅靠代码审查有时候并不一定能排除所有bug,所以在线调试便成为排除bug最有效直接的方式,今天我们要聊的是调试里最基础的东西,即接口标准。ARM内核原生支持2种业界通用的接口标准,分别是JTAG和SWD。本节课痞子衡先给大家详细讲讲JTAG接口。

一、JTAG接口标准

  JTAG全称“Joint Test Action Group”,既是个标准也是个组织,这是个由几家主要的电子制造商(IBM、AT&T、TI、Philips等)成立于1985年的组织,这个组织成立的目的是发起制订一种PCB和芯片测试标准。
  JTAG标准于1990年被IEEE批准为IEEE1149.1测试访问端口和边界扫描结构标准。JTAG标准规定了进行边界扫描所需要的硬件和软件,主要应用于电路的边界扫描测试和可编程芯片的在线系统编程。

1.1 IEEE 1149.1标准

IEEE 1149.1工作组 http://grouper.ieee.org/groups/1149/1/最初版手册1149.1-1990 http://standards.ieee.org/findstds/standard/1149.1-1990.html最新版手册1149.1-2013 http://standards.ieee.org/findstds/standard/1149.1-2013.html

1.2 JTAG接口信号

  JTAG接口,总称测试访问接口TAP(Test Access Port),使用如下信号来实现边界扫描操作:

  • TCK(测试时钟):同步内部状态机操作的时钟信号。

  • TMS(测试模式选择):控制内部状态机转换的模式信号(TCK上升沿采样)。

  • TDI(测试数据输入):移入器件测试或编程逻辑的数据(TCK上升沿采样)。

  • TDO(测试数据输出):移出器件测试或编程逻辑的数据(TCK下降沿采样)。

  除了以上信号线外,还有1个可选的信号:

  • TRST(测试重置):重置TAP控制器的状态机的复位信号。

1.3 JTAG系统内部构造

  JTAG系统内部最基本的单元是边界扫描单元(其扫描获取的值存在边界扫描寄存器BSR(Boundary Scan Register)中),每个边界扫描单元都位于目标器件的边界上,所以很多时候JTAG测试也被称为边界扫描。
  所有目标器件核心逻辑与针脚之间的信号都会被串联的边界扫描单元所拦截。正常运行时,这些边界扫描单元是不可见的。但是,在测试模式下这些单元可以被用来设置/读取目标器件针脚或核心逻辑的值。

  除了上述BSR之外,JTAG系统还需要以下3个寄存器:

  • 指令寄存器:存储当前的指令,指令内容被TAP控制器用来决定如何处理接收到的信号。

  • 旁路寄存器(BYPASS):把信息从TDI传到TDO的单位寄存器。

  • 识别码寄存器(IDCODES):含有器件的识别码和版本序号,该信息可以使器件和它的边界扫描描述语言(BSDL)文件相关联。

  JTAG系统最核心的是TAP控制器,TAP控制器被设计用来与JTAG系统内部寄存器相互动,TAP控制器是一个被TMS信号控制转换的同步状态机,控制着JTAG系统的行为。
  如上图所示,TAP控制器的内部状态机一共16个状态,关于各个状态具体含义可查阅IEEE1149.1手册。TAP控制器的基本功能是产生BSR和指令寄存器正常工作所需要的时钟和控制信号,其主要功能有以下几点:

  • 提供信号将指令装入指令寄存器。

  • 提供信号将输入数据从TDI管脚移入内部寄存器、把输出数据从内部寄存器移出到TDO管脚。

  • 执行相应功能,如捕获、移位和更新数据等。

  指令寄存器是用来存储需要解释执行的指令的,IEEE 1149.1标准规定了JTAG兼容器件必须要具备的指令:

  • BYPASS:用单一单元旁路寄存器传送数据,缩短JTAG链上不必要的扫描链路。

  • EXTEST:将已知值(存在BSR)驱动到芯片针脚上。

  • SAMPLE/PRELOAD:将捕获到的芯片针脚值装入BSR。

  除了必备的指令外,IEEE 1149.1标准还规定了如下可选的指令:

  • IDCODE:将IDCODES寄存器中的数据移出。

  • INTEST:将已知值(存在BSR)驱动到芯片核心逻辑上。

  • RUNBIST:当TAP进入测试运行空闲状态时,芯片进行自检。

1.4 JTAG调试工具pinout

  通常支持JTAG接口的调试编程工具其实只是利用了JTAG技术的四线TAP通信协议,而除了标准TAP信号线外,有时还加入其他辅助信号线构成完整pinout,对于ARM JTAG调试工具来说,有两种比较通用的pinout标准,即ARM20 JTAG header和ARM14 JTAG header:

  上述两种ARM JTAG header中除了标准TAP信号线外,其他辅助信号线含义如下:

信号名 ARM20-pin ARM14-pin 信号含义
Vref P1 P1,P13 JTAG接口电平参考电压。用于检查目标系统是否供电,该引脚通常与目标系统Vdd相连,中间不允许串接电阻。
Vsupply P2 N/A 电源输入
nSRST P15 P12 System Reset信号,与目标系统复位信号相连。可以直接对目标系统复位,同时可以检测目标系统的复位情况。为了防止误触发,应在目标端加上适当的上拉电阻。
RTCK P11 N/A Return Test Clock。由目标系统反馈给JTAG的时钟信号,用来动态控制TCK速率。不使用时可以直接接地。
GND P4,P6,P8,P10,P12,P14,P16,P18,P20 P2,P4,P6,P8,P10,P14 接地
DBGRQ P17 N/A 连接到目标系统的调试请求信号
DBGACK P19 N/A 由目标系统反馈回来的调试应答信号

Note:更多JTAG pinout详见JTAG test网站的整理 http://www.jtagtest.com/pinouts/

二、JTAG接口进阶

  前面讲完了JTAG基础知识,下面痞子衡再给大家多介绍一些JTAG相关的“黑科技”。

2.1 BSDL文件

  现如今支持JTAG接口的芯片越来越多,为了统一各芯片厂商的具体JTAG实现,促进整个电子行业的一致性,IEEE1149.1标准制订了BSDL语言规范。BSDL是JTAG设备的标准建模语言,它的语法是VHDL的子集,是对JTAG器件的边界扫描特性的描述,主要用来沟通芯片厂商、用户与测试工具之间的联系。

开源的JTAG BSDL库网站(http://bsdl.info/),涵盖主流厂商的主流芯片的BSDL文件

  痞子衡随便找一款芯片的BSDL文件(Freescale K60_1M(K24_144QFP))简单分析下:

entity k60_1m is

2.2 JTAG菊花链

  当你的系统中有多个JTAG设备时,为解决JTAG口过多占用PCB的问题,JTAG支持如下菊花链方式连接(在FPGA应用尤其广泛):

  从上图可以看出TMS、TCK是一主多从并联的结构(设备过多时TMS,TCK电路需加缓冲器(如74LVC245)增加驱动能力);TDI、TDO是一主一从串联的结构,这种菊花链方式使得PCB上只需要一个JTAG接口便可以访问所有JTAG设备。

  至此,嵌入式调试里的接口标准JTAG痞子衡便介绍完毕了,掌声在哪里~~~

jtag接口_嵌入式调试里的接口标准JTAG相关推荐

  1. fpga的jtag接口扫不到器件_JTAG和JTAG链,JTAG边界扫描

    1.JTAG JTAG(Joint Test Action Group:联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试.现在多数的高级器件都支持JTAG协 ...

  2. MCU模拟JTAG接口对LATTICE CPLD FPGA 进行在线编程加载

    完整版请点击 https://hifpga.com/问题/719 索取源码,向博主本人提问FPGA相关问题 作者:Rock.Ding(莱迪思半导体公司) 关键字:MCU, JTAG, 在线编程, CP ...

  3. JTAG基本原理及仿真器性能比较和JTAG接口解读

    JTAG(Joint Test Action Group,联合测试行动组)是一种国际标准测试协议(IEEE 1149.1兼容).标准的JTAG接口是4线--TMS.TCK.TDI.TDO,分别为模式选 ...

  4. 关于JTAG——韦东山嵌入式Linux视频学习笔记02

    1. JTAG的字面意思 JTAG --Joint Test Action Group,联合测试行动组. 2. JTAG标准 随着技术的发展,芯片的结构和功能越来越复杂,传统的使用万用表.示波器测试芯 ...

  5. 智能车基础学习JTAG接口

    从智能车的制作中知道中断的概念,但一直一知半解,最终下定决心好好打基础. 在一开始主要接触的是K60,所以这些基础知识也结合K60切入,之后可能会接触K66的有关内容,估计大同小异吧. JATG接口 ...

  6. 什么是JTAG及JTAG接口简介

    1 JTAG(Joint Test Action Group;联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试.现在多数的高级器件都支持JTAG协议,如DS ...

  7. fiq中断的入口地址_嵌入式技巧:ARM的三种中断调试方法介绍

    嵌入式软件开发流程 参照嵌入式软件的开发流程.第一步:工程建立和配置.第二步:编辑源文件.第三步:工程编译和链接.第四步:软件的调试.第五步:执行文件的固化. 在整个流程中,用户首先需要建立工程并对工 ...

  8. if mybatis tk 多个_面试题:mybatis 中的 DAO 接口和 XML 文件里的 SQL 是如何建立关系的?...

    前言 这是 mybatis 比较常问到的面试题,我自己在以前的面试过程中被问到了2次,2次都是非常重要的面试环节,因此自己印象很深刻. 这个题目我很早就深入学习了,但是一直没有整理出来,刚好最近一段时 ...

  9. 广工android嵌入式系统试卷_嵌入式系统试卷

    嵌入式系统试卷 一(选择题 1.下面那个系统属于嵌入式系统(,) a."天河一号"计算机系统b.联想t400笔记本计算机 c.联想s10上网本d.联想ophone手机 2(软硬件协 ...

最新文章

  1. 映射到此登录名的用户_小课堂:什么是数据映射以及如何进行数据映射
  2. 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Category 分类注入方法 )
  3. 全球与中国抗生素软膏市场运营现状十四五及前景规划分析报告2021-2027年版
  4. git放弃本地修改,强制覆盖本地文件
  5. leetcode746. 使用最小花费爬楼梯
  6. [JavaWeb-HTML]HTML标签_表单标签
  7. HH SaaS电商系统的商品销售分区功能模块设计
  8. python交通流预测代码_使用ARIMA模型进行的短时交通流预测和结果分析
  9. 新代系统plc梯形图说明书_东莞自动化PLC编程需要多少钱
  10. hdu 5229 找规律
  11. 浏览器用户用滤镜实现网页的翻转效果
  12. 简述python文件操作_python 文件操作总结
  13. php游戏充值平台源码,PHP平台源码下载-PHP第四方支付平台源码pc端下载
  14. 基于matlab的信号与系统实验,基于MATLAB的《信号与系统》实验系统
  15. CareUEyes Pro(电脑防蓝光软件)官方中文版V2.1.0.0 | 超实用电脑护眼软件下载-学生白领必备护眼神器!!
  16. 模拟器链接appium
  17. 安卓手机连接不上电脑的解决方法 adb devices 找不到设备
  18. 《白夜行》读后感:忽视就是虐待
  19. 一分钟解决连接git/github失败问题!亲测可行!
  20. SQL Server查询优化方法

热门文章

  1. 自由之路,从建站开始
  2. 心碎了该如何去收场?
  3. Toolbar 工具栏(导航栏)
  4. 验证控件弹窗——ValidationSummary 控件
  5. 封装与解封装(TCP头部格式)
  6. javaWebService技术框架
  7. WM SCM630 笔记 Unit 4 Putaway Control (2)
  8. 【Python并行计算】- Dask 让你的python更快更强
  9. Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)
  10. 深拷贝和浅拷贝的理解-----------【Java基础】