什么是SWD和JTAG的标准?
扫描二维码
随时随地手机看文章
什么是标准?简单来说,标准是一组规则和协议,特定行业中的每个参与者都同意遵循并执行。在SWD和JTAG之类的协议出现之前,调试器及其协议一片混乱,每个MCU制造商都提出了自己的专有方法,将代码加载到他们的MCU上。制造商每次发布MCU时,嵌入式软件工程师都需要了解其专有协议,以将代码加载到微控制器中。
而且,调试适配器很昂贵,因为制造商实际上并没有竞争者可以使调试适配器与他们的协议相匹配,因为协议是专有的。它们昂贵的另一个原因是由于体积不足,因为它们只能将调试适配器出售给使用它们制造的MCU的公司(工程师)。
不同协议还会导致开发成本增加,比如:你在设计的板上有来自4个不同制造商的4种芯片,并且希望对其进行一些自动化测试以提高生产过程的效率。但是,由于所有电路板都有自己的协议,因此您需要制作一个能适应复杂性的超级复杂的生产代码,并且需要在电路板上的测试点安装4个不同的调试器,从而增加了成本,生产时间和编程时间。
3.制定协议各种下载调试不同会导致几个问题:投入更多的学习时间下载调试的成本生成测试效率低下,为了解决这一问题,各大MCU制造和生产商的工程师们就针对调试制定了一些规范协议。该小组于1980年后期开始讨论,并于1990年正式发布了解释IEEE标准的文档。(IEEE代表电气与电子工程师协会,是一个国际组织,其中发布了所有标准,如WiFi,蓝牙等)。他们提出的协议在1990年被记录在IEEE 1149.1中。后来对该文档进行了修订和完善,在撰写本文时,最新标准是IEEE 1149.7。JTAG基本上带有5个引脚:TDI: Test Data In。串行输入引脚TDO: Test Data Out,串行输出引脚TCK:Test Clock,时钟引脚TMS: Test Mode Select,模式选择(控制信号)引脚TRST: Test Reset,复位引脚
在电子领域,芯片调试是一个至关重要的环节。为了更有效地进行芯片调试,我们有必要深入了解不同的调试协议。本文将详细解析从JTAG到SWD的转变,帮助读者全面理解这两种协议的工作原理及其在芯片调试中的应用。
JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,与IEEE 1149.1标准兼容,专为芯片内部测试而设计。如今,多数高端器件仍支持这一标准,虽然JTAG接口在现代设备上较少见,但ARM、DSP和FPGA等高端器件依然广泛支持。标准的JTAG接口包含四条线:TMS、TCK、TDI和TDO,分别用于模式选择、时钟信号、数据输入和数据输出。具体来说,这些引脚的定义如下:
TMS(测试模式选择):用于设定JTAG接口的特定测试模式。
TCK(测试时钟输入):提供时钟信号。
TDI(测试数据输入):数据通过此引脚输入JTAG接口。
TDO(测试数据输出):数据通过此引脚从JTAG接口输出。
值得注意的是,由于早期PC机普遍配备并口,JTAG协议在定义时便与之相连。然而,随着技术的发展,现在的计算机尤其是笔记本电脑很少配备并口,取而代之的是USB接口的广泛应用。因此,JTAG协议在市场上的应用已逐渐减少。
串行调试(Serial Wire Debug,简称SWD)是一种与JTAG不同的调试模式,其使用的调试协议亦有所差异。最直观的差异体现在调试接口上:相较于JTAG的20个引脚,SWD仅需4个(或5个)引脚,结构更为简洁。SWD因其引脚少、结构简单,在数据量大时更稳定,适用于有限GPIO资源的场合,建议优先使用。虽然SWD的使用范围目前尚不及JTAG广泛,主流调试器也是在后期才增设了SWD调试模式。
谈及SWD与传统调试方式的区别,其优势在高速模式下更为明显。在处理大数据量时,JTAG下载程序可能会失败,而SWD则能显著降低此情况的发生概率。此外,若仿真器支持,用户可以在基本使用JTAG仿真模式的情况下直接切换至SWD模式,因此推荐大家优先考虑使用SWD模式。
远程调试接口(Remote Debug Interface,简称RDI)是ARM公司为ARM芯片仿真而提出的标准调试接口。过去,由于各IDE厂商使用的调试接口各异,硬件调试往往局限于特定平台。然而,随着RDI为ARM芯片提供的统一调试接口,使跨平台硬件调试成为可能,多家IDE厂商逐渐采用标准RDI作为调试接口,跨平台的硬件调试已成为现实。例如,EasyJTAG便支持这一标准,从而能在任何遵循标准RDI接口的IDE调试环境中发挥作用,如ARM公司的ADS1.2及IAR公司的EWARM 3.30等。
ULINK,由ARM/KEIL公司精心打造的仿真器,现已升级为ULINK2和ULINK Pro两个版本,供用户选择。该仿真器与Keil软件紧密结合,提供强大的仿真功能,支持多种调试技术,但仅限于Keil平台。它新增了串行调试(SWD)支持、返回时钟支持以及实时代理等实用特性。
开发工程师在RealView MDK的调试器与ULINK2的协同作用下,能轻松地在目标硬件上进行片上调试,包括使用on-chip JTAG、SWD和OCDS技术,以及Flash编程。
ST-LINK仿真器是专为意法半导体STM8和STM32系列芯片设计的。它支持SWIM标准接口和JTAG/SWD标准接口,具备多种功能:
编程功能:能够烧写FLASH ROM、EEPROM、AFR等,为芯片提供灵活的编程能力。
仿真功能:支持全速运行、单步调试、断点调试等多种调试方法,同时提供IO状态和变量数据的查看,助力开发者深入理解芯片运行状态。
仿真性能:通过USB2.0接口进行仿真调试,单步和断点调试反应迅速,提升开发效率。
编程性能:同样采用USB2.0接口,支持SWIM/JTAG/SWD下载方式,下载速度迅捷,节省开发时间。
专为STM系列芯片设计,支持多种接口和功能,提升了编程和调试的效率。
串行调试(Serial Wire Debug),应该可以算是一种和JTAG不同的调试模式,使用的调试协议也应该不一样,所以最直接的体现在调试接口上,与JTAG的20个引脚相比,SWD只需要4个(或者5个)引脚,结构简单,但是使用范围没有JTAG广泛,主流调试器上也是后来才加的SWD调试模式。
SWD模式比JTAG在高速模式下面更加可靠。在大数据量的情况下面JTAG下载程序会失败,但是SWD发生的几率会小很多。基本使用JTAG仿真模式的情况下是可以直接使用SWD模式的,只要你的仿真器支持,所以推荐大家使用这个模式。