嵌入式调试接口

嵌入式系统的开发和调试是一项复杂的任务,需要强大的工具和接口来确保硬件和软件的正确性。在这个领域,JTAG(Joint Test Action Group)和SWD(Serial Wire Debug)是两个常用的调试接口标准,它们在嵌入式系统开发中起到关键作用。

JTAG

什么是JTAG:Joint Test Action Group;联合测试工作组

• 边界扫描要求符合IEEE1149.1 (JTAG) 标准
• BSDL(Boundary- ScanDescriptionLanguage)边界扫描描述语言
• 边界扫描测试 (Boundary-Scan-TEST):对符合IEEE1149.1标准的器件,通过BSDL文件生成测试向量, 测试器件开路短路的一种测试方法

边界扫描(Boundary Scan)测试发展于上个世纪90年代,随着大规模集成电路的出现,印制电路板制造工艺向小,微,薄发展,传统的ICT 测试已经没有办法满足这类产品的测试要求。由于芯片的引脚多,元器件体积小,板的密度特别大,根本没有办法进行下探针测试。一种新的测试技术产生了,联合测试行为组织(Joint Test Action Group)简称JTAG 定义这种新的测试方法即边界扫描测试。

JTAG是一种IEEE标准用来解决板级问题,开发于上个世纪80年代。今天JTAG被用来烧录、debug、探查端口。当然,最原始的使用是边界测试。

边界测试

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

JTAG引脚

JTAG发展到现在已经有脚了,通常四个脚:TDI,TDO,TMS,TCK,当然还有个复位脚TRST。对于芯片上的JTAG的脚实际上是专用的。

TDI:测试数据输入,数据通过TDI输入JTAG口;

TDO:测试数据输出,数据通过TDO从JTAG口输出;

TMS:测试模式选择,用来设置JTAG口处于某种特定的测试模式;

TCK:测试时钟输入;

TRST:测试复位;

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

JTAG怎么工作

PC控制JTAG:用JTAG电缆连接PC的打印端口或者USB或者网口。最简单的是连接打印端口。

TMS:在每个含有JTAG的芯片内部,会有个JTAG TAP控制器。TAP控制器是一个有16个状态的状态机,而TMS就是这玩意的控制信号。当TMS把各个芯片都连接在一起的时候,所有的芯片的TAP状态跳转是一致的。下面是TAP控制器的示意图:

改变TMS的值,状态就会发生跳转。如果保持5个周期的高电平,就会跳回test-logic-rest,通常用来同步TAP控制器;

通常使用两个最重要的状态是Shift-DR和Shift-IR,两者连接TDI和TDO使用。

IR:命令寄存器,你可以写值到这个寄存器中通知JTAG干某件事。每个TAP只有一个IR寄存器而且长度是一定的。

DR:TAP可以有多个DR寄存器,与IR寄存器相似,每个IR值会选择不同的DR寄存器。

边界扫描

TAP控制器进入边界扫描模式时,DR链可以遍历每个IO块或者读或拦截每个引脚。

在FPGA上使用JTAG,你可以知晓每个引脚的状态当FPGA在运行的时候。

可以使用JTAG命令SAMPLE,当然不同IC可能是不同的。

JTAG的优势

广泛支持:许多嵌入式芯片和处理器都提供了JTAG接口,因此它具有广泛的硬件支持。

丰富的功能:JTAG接口通常提供了丰富的调试功能,包括读取和写入寄存器、访问内存、硬件断点等。

适用于复杂系统:对于复杂的嵌入式系统,JTAG通常更适用,因为它提供了更多的控制和功能。

JTAG的劣势

复杂性:由于其并行性和较多的控制线,JTAG接口的硬件和实现通常更为复杂。

速度限制:JTAG在数据传输速度方面存在一定限制,不如一些串行接口快速。

SWD

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

VCC、SWDIO、SWCLK、GND(有些情况,也加上了RESET脚)。SWD是一种相对较新的调试接口,专为降低调试接口的复杂性和提高通信速度而设计。它只需要三个主要线路:SWDIO(数据和时钟)、SWDCLK(时钟)和SWDNRST(复位)。SWD使用更简单的状态机,以串行方式传输数据。

SWD的优势

简化硬件:SWD只需要少量引脚,因此硬件设计更为简化。这使得它在资源受限的系统中更容易集成。

高速通信:SWD通常比JTAG更快,因为它使用了串行通信,减少了通信开销。

低功耗:由于少量引脚和高效的通信方式,SWD通常具有较低的功耗。

SWD的劣势

支持有限:尽管SWD在许多新的嵌入式芯片中得到支持,但并不是所有老的或低成本的芯片都支持SWD接口。

功能限制:SWD可能不如JTAG提供丰富的功能,尤其是在一些复杂系统调试方面。

SWD和JTAG的调试方式区别

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引脚说明

JTAG vs. SWD

1、硬件支持

首先,检查目标芯片是否支持所需的调试接口。如果芯片只支持其中一种接口,选择已支持的接口是明智的。

2、性能需求

如果你需要更高的通信速度和较低的功耗,那么SWD可能是更好的选择。但如果你需要丰富的调试功能,可能需要使用JTAG。

3、系统复杂性

对于较复杂的系统,特别是涉及多个处理器核心或FPGA的系统,JTAG通常更适用,因为它提供了更多的控制和功能。

4、成本考虑

考虑硬件成本和复杂性。SWD通常更简单,因此在资源有限的系统中可能更经济实惠。

5、开发工具

确保你的开发工具和调试器支持你选择的接口。大多数现代调试工具都同时支持JTAG和SWD。

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值