当前位置: 首页 > 科技观察

关于Jtag,你知道的和不知道的都在这里

时间:2023-03-16 17:37:47 科技观察

01JTAG简介JTAG(JointTestActionGroup)是一个接口。针对这个接口,成立了一个叫做JTAG组的小组,这个小组成立于1985年。1990年,IEEE觉得一切都井井有条,于是发布了IEEEStandard1149.1-1990,并将其命名为StandardTestAccessPortandBoundary-ScanArchitecture,这就是著名的JTAG。JTAG的三大功能大家知道吗,非常有名:1.Downloader,即下载软件到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仿真器都是一样的。02JTAG引入边界测试:比如你有两个芯片,两个芯片之间有很多条线连接。如何保证这些线之间的连接是OK的呢?配合JTAG,可以控制所有IC的管脚。脚。这称为芯片边界测试。在JTAG接口中,最常用的信号有四种,分别是TCK/TMS/TDO/TDI。JTAG接口可以一对一使用,或形成菊花链的一对多拓扑。两种拓扑如下图所示。对于多核芯片,芯片内部已经以菊花链的形式连接起来。JTAG菊花链的玩法有很多种。CPU和FPGA厂商允许使用JTAG进行端口调试;FPGA厂商允许FPGA通过JTAG进行配置,JTAG信号用于传入FPGA内核。03JTAG与SWDSWD接口:串行调试(SerialWireDebug),应该算是区别于JTAG的一种调试方式,最直接体现在调试接口上,相比JTAG的20个引脚,SWD只需要4(或5)个引脚。VCC、SWDIO、SWCLK、GND(在某些情况下,还添加了RESET引脚)。SWD与传统调试方式的区别:SWD模式在高速模式下比JTAG更可靠。在数据量大的情况下,JTAG下载程序会失败,但是SWD的几率会小很多。在基本使用JTAG仿真模式的情况下,可以直接使用SWD模式,只要你的仿真器支持即可,所以推荐使用该模式。当CPU的GPIO不够用的时候,可以使用SWD仿真,支持的pin数比较少。当硬件PCB尺寸有限时,推荐使用SWD模式。它需要更少的引脚,当然需要更少的PCB空间。仿真接口可以选择一个小的2.54间距5芯端子。Keil环境下Jlink调试器的JTAG模式和SWD模式Jlink调试器在IAR环境下的JTAG模式和SWD模式Jlink的JTAG模式和SWD模式对比图JTAG管脚说明SWD管脚说明04关于Vref管脚我们上面提到的Vref管脚属于到IO接口的电源域。目的是使芯片的逻辑电平与调试器的逻辑电平一致,避免出现逻辑错误,甚至造成器件损坏。Jlink上有一个用于Vref的跳线帽。三个排针:①为NC,②为Vref,接输出脚1,③为3.3V。如果想让Jlink1脚Vref输出3.3V,短接②和③即可。05关于TRST管脚,JTAG定义中的TRST管脚是用来复位TAP控制器的。在STM32系列单片机中,没有TRST引脚,名称为NJTRST。以STM32F207为例,JTAG和SWD模式下NJTRST引脚说明。STM32F20706RESET引脚的SWJI/O引脚可用性用于一些使用4线SWD模式的STM32产品仿真。release版本通常把JTAG口设置为普通IO,或者因为pin不够用,在release版本中作为Otheruses使用。我们调试的是release版本,因为JTAG模式被禁用了,没办法仿真。此时最常用的方法是将BOOT0引脚拉高,进入MainFlash内存模式,进行调试仿真。与STM32官方开发板相比,我们在使用SWD模式时没有引出RST引脚。当然,还有属于SWD的SWO信号。这个是用来监控的,也是很有用的。两个信号都可以连接到仿真器。板子上对比:仿真器有UnderReset方法。所以当仿真器需要仿真时,会向MCU发送RST信号,使MCU处于RST,或者复位后仿真,代码还没有执行到JTAG被禁止的状态。所以可以直接模拟。当然也可以主动复位电源,也可以离开原来的JTAG禁用状态。boot0引脚也可以拉高。本文转载自微信公众号“知乎编程”,可通过以下二维码关注。转载本文请联系知编程公众号。