0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式调试里的接口标准JTAG详细介绍

Wildesbeast 来源:与非网 作者:与非网 2020-02-12 16:03 次阅读

嵌入式开发中,大家免不了需要仿真调试代码,尤其是当应用工程功能逻辑复杂到一定程度时,免不了在写代码时会引入一些逻辑 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 信号线外,其他辅助信号线含义如下:

二、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))简单分析下:

2.2 JTAG 菊花链

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5068

    文章

    19008

    浏览量

    302932
  • 接口
    +关注

    关注

    33

    文章

    8486

    浏览量

    150804
  • JTAG
    +关注

    关注

    6

    文章

    398

    浏览量

    71587
收藏 人收藏

    评论

    相关推荐

    嵌入式C开发中的JTAG接口定义及主要特点

    JTAG(联合测试行动组)是测试和调试集成电路的标准,广泛用于嵌入式系统开发。
    的头像 发表于 12-12 11:08 1586次阅读
    <b class='flag-5'>嵌入式</b>C开发中的<b class='flag-5'>JTAG</b><b class='flag-5'>接口</b>定义及主要特点

    四种嵌入式arm调试方法介绍

    复杂的设计和工艺,因而其价格比较昂贵。在线仿真器通常用在 arm 的硬件开发中,在软件的开发中较少使用,其价格高昂也是在线仿真器难以普及的因素。  上边向大家具体介绍嵌入式arm的几种调试方法,之后
    发表于 05-11 16:53

    嵌入式系统交叉调试原理和方法

    嵌入式系统交叉调试方法一般分为两种,一种是基于JTAG的片上调试方法,一种是基于调试代理的远程调试
    发表于 12-18 10:55

    串口串行数据接口标准介绍

    RS-232C;嵌入式系统中应用最广泛的串行接口RS-422;命名为TIA/EIA-422-A标准;单机发送、多机接收的单向、平衡传输规范RS-485;命名为TIA/EIA-485-A标准
    发表于 12-17 08:29

    JTAG接口标准是什么?

    JTAG接口标准是什么?JTAG系统内部构造是怎样的?
    发表于 12-24 07:34

    嵌入式JTAG调试方法步骤

    嵌入式JTAG调试方法步骤 嵌入式系统JTAG调试步骤1. 将PC与
    发表于 03-01 16:24 34次下载

    一种嵌入式系统实现的JTAG调试

    一种嵌入式系统实现的JTAG调试JTAG 作为一个通用的标准器件功能测试接口, 具有灵活高
    发表于 10-06 09:53 1192次阅读
    一种<b class='flag-5'>嵌入式</b>系统实现的<b class='flag-5'>JTAG</b><b class='flag-5'>调试</b>器

    DVI接口标准介绍

    DVI接口标准介绍,可以了解DVI接口的一些知识,适合初级人员查看。
    发表于 09-06 16:03 63次下载

    jtag接口是什么_jtag接口定义

    JTAG(JointTestActionGroup,联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试JTAG技术是一种
    发表于 01-11 09:45 3.1w次阅读
    <b class='flag-5'>jtag</b><b class='flag-5'>接口</b>是什么_<b class='flag-5'>jtag</b><b class='flag-5'>接口</b>定义

    两种远程调试嵌入式系统的介绍

    调试嵌入式系统与桌面操作系统差别很大,本文向您介绍调试嵌入式系统的两种推荐方案,插桩和片上调试
    发表于 04-14 07:43 2567次阅读
    两种远程<b class='flag-5'>调试</b><b class='flag-5'>嵌入式</b>系统的<b class='flag-5'>介绍</b>

    嵌入式教程之嵌入式系统基础的详细资料说明

    本文档的主要内容详细介绍的是嵌入式教程之嵌入式系统基础的详细资料说明主要内容包括了:1.系统概
    发表于 12-06 17:31 30次下载
    <b class='flag-5'>嵌入式</b>教程之<b class='flag-5'>嵌入式</b>系统基础的<b class='flag-5'>详细</b>资料说明

    嵌入式软件的开发流程_嵌入式软件的调试

    本文首先介绍嵌入式软件的发展,其次阐述了嵌入式软件的开发流程,最后介绍嵌入式软件的调试
    发表于 08-31 16:02 6228次阅读

    调试接口SWD和JTAG的区别

    作者 | strongerHuang 微信公众号 | strongerHuang 作为嵌入式工程师,下载调试器都应该知道,但你真正了解其SWD 和 JTAG接口的含义和区别吗? 1 什
    的头像 发表于 10-27 09:29 1.7w次阅读
    <b class='flag-5'>调试</b><b class='flag-5'>接口</b>SWD和<b class='flag-5'>JTAG</b>的区别

    下载调试接口SWD和JTAG的区别

    作为嵌入式工程师,下载调试器都应该知道,但你真正了解其 SWD 和 JTAG 接口的含义和区别吗? 1、什么是下载调试器 简单来说,下载
    的头像 发表于 11-28 11:44 4504次阅读

    jtag接口和swd接口区别

    它们都可以用于嵌入式设备调试,但在设计、功能和性能方面存在一些区别。以下是关于 JTAG 和 SWD 接口详细比较。 1.
    的头像 发表于 12-07 15:29 6063次阅读