01

JTAG简介

JTAG(JointTest ActionGroup)是一个接口,为了这个接口成立了一个小组叫JTAG小组,它成立于1985年。在1990年IEEE觉得一切妥当,于是发布了IEEE Standard 1149.1-1990,并命名为Standard Test Access Port and Boundary-ScanArchitecture,这就是大名鼎鼎的JTAG了。

JTAG的三大功能你知道吗,响当当的:

1.下载器,即下载软件到FLASH里。

2. DEBUG,跟医生的听诊器似的,可探听芯片内部小心思。

3. 边界扫描,可以访问芯片内部的信号逻辑状态,还有芯片引脚的状态等等。

JTAG根本没有标准的接口定义,甚至每家公司定义都不一样。在ARM的《系统和接口设计参考》文档中

文档下载地址:

链接:https://pan.baidu.com/s/13aQXOXR73_wiERz2kwN15w

提取码:xaaf

(提示:公众号不支持外链接,请复制链接到浏览器下载)

这篇文档列举了不同的JTAG接口

而我们经常在互联网看到的下图,是SEGGER公司的Jlink的JTAG接口。

J-Link是德国SEGGER公司推出基于JTAG的仿真器。简单地说,是给一个JTAG协议转换盒,即一个小型USB到JTAG的转换盒,其连接到计算机用的是USB接口,而到目标板内部用的还是jtag协议。它完成了一个从软件到硬件转换的工作。

同时Jlink也是个人觉的最流行的调试器。通过《系统和接口设计参考》可知,这个ARM官方的JTAG20pin并不相同。

在这里希望大家明白,ARM,Jlink,JTAG之间的关系。

使用频率也挺高的ST-linkV2的接口由上文可知,这也是ST公司自己定义的接口,如下:

Ulink、CMSIS_DAP和其他STM32的仿真器是一样的道理。

02

JTAG介绍

边界测试:

举个例子你有两个芯片,这两个芯片之间连接了很多很多的线,怎么确保这些线之间的连接是OK的呢,用JTAG,它可以控制所有IC的引脚。这叫做芯片边界测试。

在JTAG接口中,最常用的信号有四个,分别是TCK/TMS/TDO/TDI。JTAG接口可以一对一的使用,也可以组成菊花链的一对多拓扑结构,两种拓扑结构如下图所示。多核的芯片,其芯片内部已经接成了菊花链的形式。

JTAG的菊花链还有很多玩法

CPU和FPGA制造商允许JTAG用来端口debug;FPGA厂商允许通过JTAG配置FPGA,使用JTAG信号通入FPGA核。

03

JTAG和SWD

SWD接口:串行调试(SerialWireDebug),应该可以算是一种和JTAG不同的调试模式,最直接的体现在调试接口上,与JTAG的20个引脚相比,SWD只需要4(或者5)个引脚。

VCC、SWDIO、SWCLK、GND(有些情况,也加上了RESET脚)。

SWD和传统的调试方式区别:

  1. SWD模式比JTAG在高速模式下面更加可靠。在大数据量的情况下面JTAG下载程序会失败,但是SWD发生的几率会小很多。基本使用JTAG仿真模式的情况下是可以直接使用SWD模式的,只要你的仿真器支持,所以推荐大家使用这个模式。

  2. 当CPU的GPIO不够用的时候,可以使用SWD仿真,这种模式支持更少的引脚。

  3. 在硬件PCB的体积有限的时候推荐使用SWD模式,它需要的引脚少,当然需要的PCB空间就小,可以选择一个很小的2.54间距的5芯端子做仿真接口。

Keil环境下Jlink调试器的JTAG模式和SWD模式

IAR环境下Jlink调试器的JTAG模式和SWD模式

Jlink的JTAG模式和SWD模式对比图

JTAG引脚说明

SWD引脚说明

04

关于Vref引脚

上面我们提到Vref引脚,属于IO接口的电源域,目的是为了使芯片逻辑电平与调试器的逻辑电平一致,避免逻辑错误,甚至对设备造损坏。

在Jlink上有Vref的跳线帽。

三个排针:①是NC,②是Vref,是和输出的1脚相连的,③是3.3V

如果要Jlink的1脚Vref输出3.3V,直接将②和③短接即可。

05

关于TRST引脚

JTAG定义中的TRST引脚,用来复位TAP控制器的。在STM32系列单片机中,并没有TRST引脚,名字为NJTRST。

以STM32F207为例,NJTRST引脚在JTAG和SWD模式中的说明。

STM32F207的SWJI/O引脚可用性

06

RESET引脚作用

在一些STM32的产品仿真时使用4线的SWD模式,发布版通常会将JTAG口设置为普通IO,或者由于管脚不够用,在发布版用作其他用途。我们在调试发布版,因为禁止了JTAG模式,没有办法仿真了。

这个时候,最常用的做法是,拉高BOOT0管脚,进入MainFlash memory模式,进行debug仿真。

对比STM32的官方开发板,我们在使用SWD模式没有引出RST引脚,当然属于SWD的还有SWO信号,这是个监视用的,也是非常有用。这两个信号都可以连接仿真器的。

板子上对照:

仿真器有UnderReset的方式,因此,仿真器在需要仿真的时候,会把RST信号送到MCU,让MCU处于RST,或者采用Reset后仿真,代码还没执行到禁止JTAG状态下,所以可以直接仿真。当然,也可以主动复位供电,也是可以脱离原来的JTAG禁止状态。也可以拉高boot0管脚。


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

关于JTAG,你知道的和不知道的都在这里相关推荐

  1. TVS管选型指南,您不知道的都在这里

    提及电路保护器件,大多数人第一想到的是TVS管,确实,TVS管目前是使用最广泛的器件保护装备之一.在这个网络信息大力普及的时代,关于TVS管的信息,不管哪方哪面,都有许多详细的阐述和介绍,但是,其内容 ...

  2. tcp协议不具备的功能是_TCP协议的状态深度解析,你知道的和不知道的都在这篇文章(干货)...

    今天和大家说说,TCP协议的状态解析.大家可以看看下图,接下来我们会详细说明. 发起握手阶段 CLOSED:表示初始状态. LISTEN:表示服务器端的某个SOCKET处于监听状态,可以接受连接. S ...

  3. 区块链的那些事,你知道和不知道的都在这里!

    今年以来"区块链"的概念可以说是异常火爆,好像互联网金融峰会上没人谈一谈区块链技术就out了,BAT以及各大银行还有什么金融机构都在开始自己的区块链研究工作,就连IBM最近也成立了 ...

  4. TVS二极管,您不知道的都在这里

    一.TVS二极管工作原理 TVS(Transient Voltage Suppressors)二极管,即瞬态电压抑制器,又称雪崩击穿二极管,是采用半导体工艺制成的单个PN结或多个PN结集成的器件.TV ...

  5. CMD命令大全,你知道的和不知道的都有,非常实用,C++中system的用法 (史上最详细)

    c++cmd命令大全(第一部分) winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构(WMI) wupdmgr--------windo ...

  6. ES6 你可能不知道的事 – 基础篇

    ES6 你可能不知道的事 – 基础篇 转载 作者:淘宝前端团队(FED)- 化辰 链接:taobaofed.org/blog/2016/07/22/es6-basics/ 序 ES6,或许应该叫 ES ...

  7. 考csp所需算法_CSP vs RxJS:您所不知道的。

    考csp所需算法 by Kevin Ghadyani 通过凯文·加迪亚尼(Kevin Ghadyani) CSP vs RxJS:您所不知道的. (CSP vs RxJS: what you don' ...

  8. 苹果小圆点怎么关闭_苹果手机连按2下屏幕,就能自动截图,不知道的来学一学...

    苹果手机连按2下屏幕,就能自动截图,不知道的来学一学 很多苹果用户都羡慕安卓手机,可以花式截屏,不仅支持局部截屏还可以长截屏. 其实苹果手机的截屏方式也可以很炫酷,今天就来教大家一招,连按2下手机屏幕 ...

  9. 那些你所不知道的arXiv使用技巧

    作者:Tom Hardy Date:2020-12-23 来源:那些你所不知道的arXiv使用技巧

最新文章

  1. Android开发笔记1.2
  2. 利用Libra进行机器学习和深度学习
  3. inv(a) matlab,设A为矩阵,b为列向量,则Matlab中运算A\b 和运算inv(A)*b
  4. linux   RedHat AS5(x86_64)安装oracle10g
  5. JAVA实现二维数组中的查找(《剑指offer》)
  6. javascript跨域解决方案
  7. nginx 405错误后 用get重定向
  8. IDEA手动添加jar包
  9. 闪灯什么意思_开车闪一下闪二下闪三下大灯是什么意思
  10. 在Ubuntu14.04上安装UberWriterMarkdown编辑器
  11. Can not issue data manipulation statements with executeQuery()错误解决
  12. python写一个聊天程序_python实现一个简单的网络聊天程序
  13. spring学习笔记二(基于注解)
  14. JAVA开发环境搭建
  15. HTML页面在iPhone中电话号码自动检测带来的布局问题
  16. 计算机的影视后期论文,浅谈影视后期制作-毕业论文提纲范文
  17. idea中设置EcmaScript6
  18. linux远程利用漏洞CVE-2016-4484 93次空密码重试就可以获得root权限 影响大多数Linux版本...
  19. import cv2时出现ImportError: DLL load fail:找不到指定模块
  20. 到底是什么原因?让200多家企业参与区块链改革?

热门文章

  1. dotty编译器语法特性之一交叉类型,联合类型和文本单例类型
  2. 局域网 两台电脑共享 密码关闭
  3. 《MySQL排错指南》——1.9 许可问题
  4. 一起谈.NET技术,在MVC2.0使用Lodop为WEB打印提出完美解决方案
  5. 学成在线--0.项目概述
  6. 清华大学《操作系统》(八):置换算法
  7. element table 怎么知道点击的是第几行_el-data-table, 让CRUD更简单??
  8. python策略模式包含角色_详解Python设计模式之策略模式
  9. 【Java】HashMap源码(1.7)
  10. C语言常量类型及名称,菜鸟带你入门C语言|基本数据类型之常量