当前位置: 首页 > article >正文

什么是JTAG、SWD?

一、什么是JTAG?

JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,常用于芯片内部测试及对系统进行调试、编程等操作。以下从其起源、工作原理、接口标准、应用场景等方面详细介绍:
JTAG端口

起源

20世纪80年代,随着集成电路技术的发展,芯片的集成度越来越高,引脚数量不断增加,传统的测试方法难以满足芯片测试的需求。为了解决这一问题,由菲利普、英特尔、摩托罗拉等公司联合成立了JTAG组织,制定了JTAG测试标准,旨在提供一种统一的、标准化的芯片测试解决方案。

工作原理

JTAG的核心是一个扫描路径,它通过在芯片内部集成一系列的移位寄存器(称为边界扫描寄存器)来实现。这些寄存器连接在芯片的引脚和内部逻辑之间,形成一个链式结构。

  • 测试数据输入:在测试时,测试数据通过JTAG接口的TDI(Test Data Input,测试数据输入)引脚串行地输入到边界扫描寄存器中。
  • 数据移位和处理:数据在边界扫描寄存器中逐位移动,经过芯片内部逻辑的处理后,再从边界扫描寄存器的另一端通过TDO(Test Data Output,测试数据输出)引脚串行输出。
  • 测试控制:通过TMS(Test Mode Select,测试模式选择)引脚和TCK(Test Clock,测试时钟)引脚来控制测试过程的模式和时序。TMS引脚用于选择不同的测试状态,TCK引脚提供时钟信号,确保数据的同步传输。

接口标准

常见的JTAG接口有4针和10针、20针等,不同的设备可能会采用不同的接口形式,但基本的信号引脚是一致的,主要包括:

  • TDI(Test Data Input):测试数据输入引脚,用于将测试数据串行输入到芯片内部的边界扫描寄存器。
  • TDO(Test Data Output):测试数据输出引脚,用于将芯片内部处理后的测试数据串行输出。
  • TMS(Test Mode Select):测试模式选择引脚,通过该引脚的不同电平组合可以选择不同的测试状态,如测试逻辑复位、数据移位、数据捕获等。
  • TCK(Test Clock):测试时钟引脚,为测试数据的传输和处理提供时钟信号,确保数据的同步操作。
  • TRST(Test Reset,可选):测试复位引脚,用于将JTAG测试逻辑复位到初始状态。
    JTAG电路图

应用场景

芯片测试
  • 引脚连接测试:可以检测芯片引脚与电路板之间的连接是否正常,如是否存在短路、开路等问题。通过向边界扫描寄存器输入特定的测试数据,然后检查输出数据是否符合预期,来判断引脚连接的正确性。
  • 内部逻辑测试:对芯片内部的逻辑电路进行功能测试,验证芯片的各项功能是否正常工作。可以通过设置不同的测试模式和输入数据,模拟芯片在不同工作状态下的运行情况。
系统调试
  • 程序调试:在嵌入式系统开发中,JTAG接口可以用于调试程序。开发人员可以通过JTAG调试工具(如JTAG仿真器)连接到目标系统,实时监控程序的运行状态,设置断点、单步执行程序等,方便查找和解决程序中的错误。
  • 寄存器访问:可以通过JTAG接口直接访问芯片内部的寄存器,读取和修改寄存器的值,了解芯片的工作状态和配置信息,为系统调试提供重要的依据。
芯片编程
  • Flash编程:对于一些带有Flash存储器的芯片,JTAG接口可以用于对Flash进行编程。开发人员可以将编译好的程序代码通过JTAG接口下载到芯片的Flash存储器中,实现程序的烧录。
  • 配置文件加载:在一些可编程逻辑器件(如FPGA)中,JTAG接口可以用于加载配置文件,将设计好的逻辑电路配置到FPGA中,使其实现特定的功能。

局限性

  • 速度限制:JTAG采用串行数据传输方式,数据传输速度相对较慢,在处理大量数据时可能会影响测试和调试的效率。
  • 引脚占用:JTAG接口需要占用一定数量的芯片引脚,对于引脚资源有限的芯片来说,可能会造成一定的资源浪费。

尽管存在一些局限性,但JTAG仍然是一种广泛应用的芯片测试和调试技术,在嵌入式系统开发和集成电路测试领域发挥着重要作用。

二、什么是SWD?

SWD(Serial Wire Debug)即串行调试接口,是ARM公司开发的一种用于调试ARM Cortex系列微控制器的串行通信协议,它为嵌入式系统开发人员提供了一种高效、便捷的方式来对芯片进行调试和编程。以下从基本概念、工作原理、与JTAG的比较、应用场景等方面进行详细介绍:

SWD接口

基本概念

SWD 是在 JTAG(Joint Test Action Group)技术基础上发展而来的一种调试接口标准。相比于 JTAG,SWD 采用了更精简的引脚设计和串行通信方式,在不牺牲太多调试功能的前提下,减少了对芯片引脚资源的占用,提高了调试效率。

工作原理

SWD 主要通过两根信号线进行通信:

  • SWCLK(Serial Wire Clock):串行时钟线,为数据传输提供时钟信号,确保数据的同步传输。发送端和接收端依据这个时钟信号来协调数据的发送和接收,保证数据传输的准确性。
  • SWDIO(Serial Wire Data Input/Output):串行数据线,是一个双向信号引脚,用于在调试器和目标芯片之间传输数据和命令。在不同的时刻,它既可以作为数据输入线,接收来自调试器的数据和命令;也可以作为数据输出线,将目标芯片的状态信息和调试结果反馈给调试器。

调试过程中,调试器通过 SWCLK 提供时钟信号,按照特定的协议格式,将调试命令和数据通过 SWDIO 发送给目标芯片。目标芯片接收到命令后进行相应的操作,并将执行结果通过 SWDIO 反馈给调试器。

与 JTAG 的比较

引脚数量
  • JTAG:标准的 JTAG 接口通常需要 4 - 5 根信号线(TDI、TDO、TMS、TCK,可能还有 TRST),在一些对引脚资源要求严格的应用场景中,会占用较多的芯片引脚。
  • SWD:仅需要两根信号线(SWCLK 和 SWDIO),大大减少了引脚的使用数量,使得芯片可以将更多的引脚用于其他功能。
    SWD和JTAG接口对比
通信方式
  • JTAG:采用并行和串行相结合的方式进行数据传输,虽然能实现较为复杂的测试和调试功能,但通信速度相对较慢,尤其是在处理大量数据时,效率较低。
  • SWD:采用纯串行通信方式,数据按位依次传输。这种方式虽然每次传输的数据量较小,但由于其通信协议相对简单,在实际应用中可以实现较高的通信速率,提高了调试效率。
调试功能
  • JTAG:具有较为强大的边界扫描功能,可对芯片引脚连接进行详细测试,适用于复杂的芯片级测试。
  • SWD:虽然调试功能相对 JTAG 没有那么全面,但对于大多数嵌入式系统的调试需求,如程序下载、断点设置、单步执行等基本调试功能都能很好地支持,并且在一些 ARM Cortex 系列芯片中,SWD 还能提供与 JTAG 相当的调试性能。

应用场景

嵌入式系统开发
  • 程序调试:开发人员可以使用 SWD 接口连接调试器和目标芯片,实时监控程序的运行状态,设置断点、单步执行程序,查看变量的值和寄存器的状态,方便快速定位和解决程序中的错误。
  • 程序下载:通过 SWD 接口,开发人员可以将编译好的程序代码下载到目标芯片的 Flash 存储器中,实现程序的烧录和更新。
    SWD接口
产品生产测试

在产品生产过程中,SWD 接口可用于对芯片进行功能测试和验证。通过发送特定的调试命令和数据,检测芯片的各项功能是否正常工作,提高产品的生产质量和可靠性。

局限性

  • 功能完整性:相比于 JTAG,SWD 的功能相对有限,特别是在一些复杂的芯片级测试场景中,可能无法提供像 JTAG 那样全面的边界扫描测试功能。
  • 兼容性:部分旧款的芯片或调试工具可能不支持 SWD 接口,在使用时需要确保目标芯片和调试设备之间的兼容性。

总结

  • 范围:JTAG是芯片通用的调试接口,基本上市面上的所有MCU都支持该协议。而SWD协议由ARM公司开发,仅支持ARM系列芯片。
  • STM32:STM32系列MCU基本上都同时支持以上两种协议。并且两种协议的引脚复用,以节约资源。

相关文章:

什么是JTAG、SWD?

一、什么是JTAG? JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,常用于芯片内部测试及对系统进行调试、编程等操作。以下从其起源、工作原理、接口标准、应用场景等方面详细介绍&#xff1a…...

物理竞赛中的线性代数

线性代数 1 行列式 1.1 n n n 阶行列式 定义 1.1.1:称以下的式子为一个 n n n 阶行列式: ∣ A ∣ ∣ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ∣ \begin{vmatrix}\mathbf A\end{vmatrix} \begin{vmatrix} a_{11…...

如何在Apple不再支持的MacOS上安装Homebrew

手头有一台2012年产的Macbook Pro,系统版本停留在了10.15.7(2020年9月24日发布的)。MacOS 11及后续的版本都无法安装到这台老旧的电脑上。想通过pkg安装Homebrew,发现Homebrew releases里最新的pkg安装包不支持MacOS 10.15.7&…...

深入探索DeepSeek开源之旅:开源Week全程解析

摘要 在农历新年刚刚结束之际,DeepSeek以卓越的开源精神,连续六天举办了开源Week活动。这一系列活动不仅展示了DeepSeek在技术领域的活跃度和影响力,还彰显了其对开源社区的贡献。通过这次活动,DeepSeek吸引了众多开发者和技术爱好…...

无人机遥控器无线传输技术解析!

一、主流无线传输方式 无线电遥控系统(2.4GHz/5.8GHz频段) 频段特性:2.4GHz频段穿透力强、覆盖距离远(可达2公里以上),适合控制信号传输;5.8GHz频段带宽更高,适用于高清视频流&…...

微调训练方法概述:Fine-tuning、Prompt-tuning、P-tuning 及其他高效技术

在深度学习和自然语言处理(NLP)领域,预训练模型(如 GPT、BERT 等)已经成为许多任务的基石。然而,尽管这些模型在预训练阶段学习了大量的通用知识,它们通常仍然需要根据特定任务进行微调&#xf…...

在笔记本电脑上用DeepSeek搭建个人知识库

最近DeepSeek爆火,试用DeepSeek的企业和个人越来越多。最常见的应用场景就是知识库和知识问答。所以本人也试用了一下,在笔记本电脑上部署DeepSeek并使用开源工具搭建一套知识库,实现完全在本地环境下使用本地文档搭建个人知识库。操作过程共…...

Java面试第七山!《MySQL索引》

一、索引的本质与作用 索引是帮助MySQL高效获取数据的数据结构,类似于书籍的目录。它通过减少磁盘I/O次数(即减少数据扫描量)来加速查询,尤其在百万级数据场景下,索引可将查询效率提升数十倍。 核心作用:…...

DeepSeek 助力 Vue3 开发:打造丝滑的弹性布局(Flexbox)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...

大白话跨域问题的原理与多种解决方法的实现

大白话跨域问题的原理与多种解决方法的实现 跨域问题原理 简单来说,当一个网页中的JavaScript代码想要去访问另一个不同域名、端口或协议的服务器上的数据时,就会出现跨域问题。这是浏览器的一种安全机制,为了防止恶意网站窃取用户信息等。…...

el-table input textarea 文本域 自适应高度,切换分页滚动失效处理办法

场景: el-table 表格 需要 input类型是 textarea 高度是自适应,第一页数据都是单行数据 不会产生滚动条,但是第二页数据是多行数据 会产生滚动条, bug: 第一页切换到第二页 第二页滚动条无法展示 解决办法:直接修改样…...

动态表头报表的绘制与导出

目录 一、效果图 二、整体思路 三、代码区 一、效果图 根据选择的日期范围动态生成表头(eg:2025.2.24--2025.03.03)每个日期又分为白班、夜班;数据列表中对产线合并单元格。支持按原格式导出对应的报表excel。 点击空白区可新…...

DeepSeek 助力 Vue3 开发:打造丝滑的密码输入框(Password Input)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...

【解决】OnTriggerEnter/OnTriggerExit 调用匿名委托误区的问题

开发平台:Unity 开发语言:CSharp 6.0 开发工具:Visual Studio 2022   问题背景 public void OnTriggerEnter(Collider collider) {output.OnInteractionNoticed () > OnInteractionTriggered?.Invoke(); }public void OnTriggerExit(C…...

Linux 基础---文件权限

概念 文件权限是针对文件所有者、文件所属组、其他人这三类人而言的,对应的操作是chmod。设置方式:文字设定法、数字设定法。 文字设定法:r,w,x,- 来描述用户对文件的操作权限数字设定法:0,1,2,3,4,5,6,7 来描述用户对文件的操作…...

SpringBoot五:JSR303校验

精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 松散绑定 意思是比如在yaml中写的是last-name,这个和lastName意思是一样的,-后的字母默认是大写的 JSR303校验 就是可以在字段增加…...

【计算机网络】考研复试高频知识点总结

文章目录 一、基础概念1、计算机⽹络的定义2、计算机⽹络的目标3、计算机⽹络的组成4、计算机⽹络的分类5、计算机⽹络的拓扑结构6、计算机⽹络的协议7、计算机⽹络的分层结构8、OSI 参考模型9、TCP/IP 参考模型10、五层协议体系结构 二、物理层1、物理层的功能2、传输媒体3、 …...

Error Density-dependent Empirical Risk Minimization

经验误差密度依赖的风险最小化 v.s. 经验风险最小化 论文: 《 Error Density-dependent Empirical Risk Minimization》 发表在: ESWA’24 相关代码: github.com/zxlml/EDERM 研究背景 传统的经验风险最小化(ERM)方…...

02_NLP文本预处理之文本张量表示法

文本张量表示法 概念 将文本使用张量进行表示,一般将词汇表示为向量,称为词向量,再由各个词向量按顺序组成矩阵形成文本表示 例如: ["人生", "该", "如何", "起头"]># 每个词对应矩阵中的一个向量 [[1.32, 4,32, 0,32, 5.2],[3…...

Spring Boot全局异常处理:“危机公关”团队

目录 一、全局异常处理的作用二、Spring Boot 实现全局异常处理(附上代码实例)三、总结: 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢&#x1…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_list_init

ngx_list_init 定义在 src\core\ngx_list.h static ngx_inline ngx_int_t ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n, size_t size) {list->part.elts ngx_palloc(pool, n * size);if (list->part.elts NULL) {return NGX_ERROR;}list->par…...

C# OnnxRuntime部署DAMO-YOLO香烟检测

目录 说明 效果 模型信息 项目 代码 下载 参考 说明 效果 模型信息 Model Properties ------------------------- --------------------------------------------------------------- Inputs ------------------------- name:input tensor:Floa…...

GitHub开源协议选择指南:如何为你的项目找到最佳“许可证”?

引言 当你站在GitHub仓库创建的十字路口时,是否曾被众多开源协议晃花了眼? 别担心!这篇指南将化身你的"协议导航仪",用一张流程图五个灵魂拷问,帮你轻松找到最佳选择。无论你是开发者、开源爱好者&#xff…...

[密码学实战]Java生成SM2根证书及用户证书

前言 在国密算法体系中,SM2是基于椭圆曲线密码(ECC)的非对称加密算法,广泛应用于数字证书、签名验签等场景。本文将结合代码实现,详细讲解如何通过Java生成SM2根证书及用户证书,并深入分析其核心原理。 一、证书验证 1.代码运行结果 2.根证书验证 3.用户证书验证 二、…...

安装 cnpm 出现 Unsupported URL Type “npm:“: npm:string-width@^4.2.0

Unsupported URL Type "npm:": npm:string-width^4.2.0 可能是 node 版本太低了,需要安装低版本的 cnpm 试试 npm cache clean --force npm config set strict-ssl false npm install -g cnpm --registryhttps://registry.npmmirror.com 改为 npm insta…...

探秘基带算法:从原理到5G时代的通信变革【九】QPSK调制/解调

文章目录 2.8 QPSK 调制 / 解调简介QPSK 发射机的实现与原理QPSK 接收机的实现与原理QPSK 性能仿真QPSK 变体分析 本博客为系列博客,主要讲解各基带算法的原理与应用,包括:viterbi解码、Turbo编解码、Polar编解码、CORDIC算法、CRC校验、FFT/…...

四、数据存储

在爬虫项目中,我们需要将目标站点数据进行持久化保存,一般数据保存的方式有两种: 文件保存数据库保存 在数据保存的过程中需要对数据完成去重操作,所有需要使用 redis 中的 set 数据类型完成去重。 1.CSV文件存储 1.1 什么是c…...

C# OnnxRuntime部署DAMO-YOLO人头检测

目录 说明 效果 模型信息 项目 代码 下载 参考 说明 效果 模型信息 Model Properties ------------------------- --------------------------------------------------------------- Inputs ------------------------- name:input tensor:Floa…...

Metal学习笔记七:片元函数

知道如何通过将顶点数据发送到 vertex 函数来渲染三角形、线条和点是一项非常巧妙的技能 — 尤其是因为您能够使用简单的单行片段函数为形状着色。但是,片段着色器能够执行更多操作。 ➤ 打开网站 https://shadertoy.com,在那里您会发现大量令人眼花缭乱…...

《一个端粒到端粒的参考基因组为木瓜中五环三萜类化合物生物合成提供了遗传学见解》

A telomere-to-telomere reference genome provides genetic insight into the pentacyclic triterpenoid biosynthesis in Chaenomeles speciosa Amplification of transposable elements 转座元件的扩增 Sequence mining disclosed that TEs were one main event in the ex…...