什么是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基本上都同时支持以上两种协议。并且两种协议的引脚复用,以节约资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27663.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识周汇|SAP脚本自动化-淋过雨的人更懂得伞的价值

目录 摘要 1 知识概览 1.1SAP GUI脚本 1.2Tracker工具 2 实践案例 2.1步骤1:SAP启动并进入系统(文本关键) 2.1.1手动操作:鼠标双击SAP,并点击所需要系统 2.1.2代码实现 2.2步骤2:通过tracker完善后…

【GPU使用】如何在物理机和Docker中指定GPU进行推理和训练

我的机器上有4张H100卡,我现在只想用某一张卡跑程序,该如何设置。 代码里面设置 import os # 记住要写在impot torch前 os.environ[CUDA_VISIBLE_DEVICES] "0, 1"命令行设置 export CUDA_VISIBLE_DEVICES0,2 # Linux 环境 python test.py …

【无标题】ABP更换MySql数据库

原因:ABP默认使用的数据库是sqlServer,本地没有安装sqlServer,安装的是mysql,需要更换数据库 ABP版本:9.0 此处以官网TodoApp项目为例 打开EntityFrameworkCore程序集,可以看到默认使用的是sqlServer&…

【网络编程】之TCP实现客户端远程控制服务器端及断线重连

【网络编程】之TCP实现客户端远程控制服务器端及断线重连 TCP网络通信实现客户端简单远程控制主机基本功能演示通信过程代码实现服务器模块执行命令模块popen系列函数 客户端模块服务器主程序 windows作为客户端与服务器通信#pragma comment介绍 客户端使用状态机断线重连代码实…

Git快速入门

文章目录 Git简介准备工作常用的Linux命令git配置 git工作原理git项目创建和克隆git基本操作命令git忽略文件配置ssh远程连接 IDEA集成Gitgit分支(多人开发)公司中用到的(很清楚) Git 简介 Git就是版本控制的工具 下面这个叫手动…

Redis 的几个热点知识

前言 Redis 是一款内存级的数据库,凭借其卓越的性能,几乎成为每位开发者的标配工具。 虽然 Redis 包含大量需要掌握的知识,但其中的热点知识并不多。今天,『知行』就和大家分享一些 Redis 中的热点知识。 Redis 数据结构 Redis…

深入解析Java虚拟机(JVM)的核心组成

深入解析Java虚拟机(JVM)的核心组成 Java虚拟机(JVM)作为Java语言跨平台的核心实现,其架构设计精妙而复杂。理解JVM的组成部分,是掌握Java内存管理、性能调优和问题排查的关键。本文将从四大核心模块剖析J…

GIT工具学习【2】:分支

1.什么是分支 新建一个分支,可以认为把当前项目copy了一份,不太严谨,没毛病,里面虽然文件内容和名字相同,其实互相没有关系。 2.什么是合并分支 就是把两个分支(项目文件夹)合并在一起 git m…

40岁开始学Java:Java中单例模式(Singleton Pattern),适用场景有哪些?

在Java中,单例模式(Singleton Pattern)用于确保一个类只有一个实例,并提供全局访问点。以下是详细的实现方式、适用场景及注意事项: 一、单例模式的实现方式 1. 饿汉式(Eager Initialization) …

Linux常见基本指令(一)

目录 前言 1、ls指令 2、用户相关指令 3、pwd指令 4、cd指令 相对路径与绝对路径 5、创建、删除文件和目录相关的指令 创建相关的指令 删除相关的指令 6、拷贝、移动和重命名 cp指令 mv指令 前言 学习Linux的过程中一定要多自己动手,Linux的指令繁多&a…

测试金蝶云的OpenAPI

如何使用Postman测试K3Cloud的OpenAPI 1. 引言 在本篇博客中,我将带你逐步了解如何使用Postman测试和使用K3Cloud的OpenAPI。内容包括下载所需的SDK文件、配置文件、API调用及测试等步骤。让我们开始吧! 2. 下载所需的SDK文件 2.1 获取SDK 首先&…

Tomcat

1.Tomcat是什么? Tomcat 是一个开源的、轻量级的 Servlet 容器,也被称为 Web 服务器,由 Apache 软件基金会的 Jakarta 项目开发,在 Java Web 开发领域应用广泛。 1)Servlet 容器:Servlet 是 Java 语言编写…

【windows driver】 开发环境简明安装教程

一、下载路径 https://learn.microsoft.com/en-us/windows-hardware/drivers/other-wdk-downloads 二、安装步骤: 1、安装Visual Studio IDE 笔者建议安装最新版本,可以向下兼容。发文截止到目前,VS2022是首选,当前笔者由于项…

长时间目标跟踪算法(3)-GlobalTrack:A Simple and Strong Baseline for Long-termTracking

GlobalTrack的原始论文和源码均已开源,下载地址。 目录 背景与概述 1.1 长期视觉跟踪的挑战 1.2 现有方法的局限性 1.3 GlobalTrack的核心思想 算法原理与架构 2.1 全局实例搜索框架 2.2 Query-Guided RPN(QG-RPN) 2.3 Query-Guided RCNN&a…

使用mermaid查看cursor程序生成的流程图

一、得到cursor生成的流程图文本 cursor写的程序正常运行后,在对话框输入框中输入诸如“请生成扫雷的代码流程图”,然后cursor就把流程图给生成了,但是看到的还是文本的样子,保留这部分内容待用 二、注册一个Mermaid绘图账号 …

MacOS本地部署Deepseek,不联网也可以使用AI,保护隐私

苹果笔记本本地部署deepseek主要用到Ollama与open-webui 1. 安装Ollama “Ollama” 是一个轻量级的 AI 模型运行时环境(runtime),旨在简化在本地部署和使用大语言模型(LLM)的过程。它由 Vicarious 公司开发&#xff…

unity学习62,尝试做第一个小游戏项目:flappy bird

目录 学习参考 1 创建1个unity 2D项目 1.1 2D项目模板选择 1.1.1 2D(built-in-Render pipeline) 1.1.2 universe 2D 1.1.3 这次选择 2D(built-in-Render pipeline) 1.2 创建项目 1.2.1 注意点 1.2.2 如果想修改项目名 2 导入美术资源包 2.1 下载一个flappy bird的…

基于Matlab的多目标粒子群优化

在复杂系统的设计、决策与优化问题中,常常需要同时兼顾多个相互冲突的目标,多目标粒子群优化(MOPSO)算法应运而生,作为群体智能优化算法家族中的重要成员,它为解决此类棘手难题提供了高效且富有创新性的解决…

使用DiskGenius工具来实现物理机多硬盘虚拟化迁移

使用DiskGenius工具来实现物理机多硬盘虚拟化迁移 概述准备工作注意事项实操过程记录1、Win7虚拟机,安装有两个硬盘(硬盘0和硬盘1),各分了一个区,磁盘2是一块未使用的磁盘2、运行DiskGenius程序,记录现有各…

win本地vscode通过代理远程链接linux服务器

时间:2025.2.28 1. win本地下载nmap.exe nmap官网 https://nmap.org/或者 https://nmap.org/download#windows下载win版本并安装。 2. vscode插件Remote-SSH 插件下载Remote-SSH 3. 配置 按照图中顺序配置ssh 1.点击左侧工具栏的“小电视”图标 2.点击ssh的…