一文了解ECU调试使用的JTAG协议

文摘   2025-01-16 07:10   上海  

在ECU软件开发过程,通过调试器进行软件debug或测试经常会接触到JTAG接口,即通过JTAG协议使用 JLink 、ST-LINK和Lauterbach等仿真器/调试器在线调试软件程序。大家天天都在用,但是并不一定熟悉它,了解它,因此本文打算对此稍作介绍。

1 JTAG协议简介

JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,,它定义了如何与具有边界扫描功能的设备(如微控制器、FPGA和DSP)进行通信,JTAG允许访问这些设备的内部寄存器、内存和引脚,以及使用新软件对其进行编程,JTAG还可用于将多个设备链接在一起并从单个接口控制它们。
JTAG协议正式名称为 IEEE 1149.1,是电子和数字设计领域的一项重要技术,它是测试和调试集成电路 (IC) 和印刷电路板 (PCB) 的标准化方法,具体先来了解它的历史:

JTAG成立于20世纪 8 年代中期,旨在开发一种验证设计和测试制造后的印刷电路板的方法。在JTAG开发之前,电子电路的测试和调试是一个耗时且昂贵的过程,工程师必须手动探测和测试电路板上的每个引脚,这不仅速度慢,而且容易出错。JTAG的创建是为了提供用于测试和调试电子电路的标准化接口,它使用一组特殊的测试访问端口 (TAP),使工程师能够与电路交互并执行各种测试和调试任务。

JTAG标准的第一个版本于1990 年发布,并迅速受到工程师和制造商的欢迎,此后的几年中,JTAG标准经过多次修订和更新,增加了新特性和功能,使测试和调试更加轻松高效。
source: https://www.corelis.com/education/tutorials/jtag-tutorial/what-is-jtag/
  • JTAG)的成立:1985 年,德州仪器、IBM、英特尔和惠普等电子行业领先公司的代表成立了联合测试行动小组。该小组的主要目标是创建一种标准化方法来测试和调试电子系统,因为使用传统方法测试这些系统变得越来越复杂和困难。
  • 早期开发和贡献:JTAG协议早期开发的主要贡献者包括德州仪器公司的Ken Parker,他提出了使用单一标准化接口访问 IC 或 PCB 的多个引脚进行测试的概念。IBM 公司的 David Brownell 为 JTAG 状态机的设计做出了重大贡献,该状态机在控制测试操作和转换方面起着至关重要的作用。
  • JTAG 标准 介绍:1987年,联合测试行动小组正式发布了JTAG标准,即IEEE 1149.1。该标准名为“标准测试访问端口和边界扫描架构”,为在电子设备中实现JTAG协议提供了全面的框架,JTAG标准定义了必要的信号及其功能、状态机操作和边界扫描测试技术。
  • 快速采用和行业影响:JTAG协议凭借其众多优势迅速获得电子行业的认可,通过提供标准化的测试方法,JTAG大大简化了复杂系统的测试流程。它允许工程师执行非侵入式测试和调试,即使在难以或无法物理访问单个引脚的情况下也是如此。因此,JTAG 成为各种电子产品设计、制造和测试流程中不可或缺的一部分。
  • 演进和扩展:随着技术的不断进步,JTAG标准也不断发展,以满足行业不断变化的需求。引入了其他标准和扩展来增强JTAG的功能。比如IEEE 1149.4解决了模拟测试功能,而IEEE 1149.6则专注于高速数字系统中的测试挑战。
  • 融入行业标准:JTAG 已融入各种其他行业标准,以进一步扩大其应用范围和优势。值得注意的是,它已成为IEEE 1500的一部分,该标准专注于测试集成电路内的知识产权 (IP) 核心。

2 JTAG 协议的架构

IEEE-1149.1 JTAG标准概述了IC扫描逻辑的行为,以确保组件、系统和测试工具之间的无缝交互。集成电路 (IC) 包含逻辑单元,称为边界扫描单元,位于系统逻辑和与印刷电路板 (PCB) 建立连接的信号引脚之间。这些单元提供不同的测试功能,一些用作输入,另一些用作输出,还有一些具有双向功能。
JTAG)协议的架构旨在提供一种标准化方法来测试和调试集成电路 (IC) 和印刷电路板 (PCB),它由几个关键组件组成,这些组件协同工作,以实现对复杂数字系统的高效和非侵入式测试。

JTAG 架构的主要元素:
1. 测试访问端口 (TAP):JTAG架构的核心是测试访问端口 (TAP),TAP是一个数字状态机,用于控制对被测设备 (DUT) 内部组件的访问,它管理外部测试设备与DUT内部电路之间的数据流和控制信号流。测试访问端口由四个强制信号和一个可选的第五个信号组成:
    •     测试时钟 (TCK):同步测试设备和 DUT 之间的数据传输的时钟信号。

    •     测试模式选择 (TMS):决定 TAP 状态机状态转换的控制信号。

    •     测试数据输入 (TDI):用于将测试数据输入 DUT 的双向数据信号。

    •     测试数据输出 (TDO):用于从 DUT 输出测试数据的双向数据信号。

    •     测试复位(TRST)(可选):用于复位 TAP 的可选信号。

2. JTAG 状态机:测试访问端口包含一个状态机,用于管理 JTAG 协议的操作。状态机定义了 TAP 可以处于的不同状态以及这些状态之间的转换。每个状态对应一个特定的操作,允许 TAP 在测试和调试期间执行各种功能。JTAG状态机的主要状态如下:
    • 测试逻辑复位 (TLR):上电或测试复位后的初始状态,其中 TAP保持稳定状态。

    • 运行测试/空闲 (RTI): TAP处于空闲状态,等待指令或测试数据。

    • 选择-DR-扫描 (SDR):TAP准备将数据移入或移出DUT的数据寄存器的状态。

    • 捕获-DR(CDR):捕获要移入DR的输入数据的状态。

    • 移位-DR(SDR):数据移入或移出DR的状态。

    • Exit1-DR(EDR1):TAP离开Shift-DR状态,准备进行下一步操作的状态。

    • Exit2-DR(EDR2):最后一位移位完成后,TAP退出Shift-DR状态的状态。
3. 边界扫描寄存器:边界扫描寄存器是JTAG架构的基本功能之一,此寄存器可用于测试 PCB上不同IC之间的互连(网络)。它由DUT每个引脚的输入(旁路)和输出(捕获、移位和更新)单元组成,边界扫描测试有助于检测与开路、短路和其他连接问题相关的故障。
4. 指令寄存器 (IR) 和数据寄存器 (DR):指令寄存器 (IR) 和数据寄存器 (DR) 是 JTAG架构的一部分,有助于与DUT的内部组件进行通信和控制。IR用于选择和控制各种操作,例如从内部寄存器读取和写入数据,DR用于在测试和编程期间进行数据移位。
3 JTAG 协议说明
IEEE-1149.1规定了必须遵守的特定指令,才能完全符合JTAG要求。要实现JTAG要求,设备必须采用并实施这些指令。
  • EXTEST:EXTEST指令用于进行互连测试。激活后,它会将强制边界扫描寄存器连接到 TDI和TDO之间,从而有效地将设备置于“外部”测试模式。在此模式下,边界扫描输出单元将测试数据驱动到设备引脚上,而输入单元则从这些引脚捕获数据。此指令对于边界扫描测试至关重要。
  • SAMPLE/PRELOAD:SAMPLE/PRELOAD指令与EXTEST有相似之处,但允许边界扫描设备保持任务/功能模式,同时仍将边界扫描寄存器链接到TDI和TDO。使用 SAMPLE/PRELOAD指令时,可以通过数据扫描访问边界扫描寄存器,同时设备仍可运行。此功能有利于将数据预加载到边界扫描寄存器中,而不会中断设备的功能行为,为随后执行EXTEST指令做好准备。
  • BYPASS:BYPASS 指令通过单比特寄存器在TDI和TDO之间建立直接连接,绕过设备的较长边界扫描寄存器,因此得名。BYPASS通过排除当前操作不需要的设备,在缩短边界扫描链方面具有极大的优势。接收 BYPASS指令的设备保持其任务/功能模式,同时允许无缝串行数据流向链中的后续设备。

4 JTAG 协议 TAP 控制器

根据 IEEE-1149.1标准,TAP控制器以16个状态的有限状态机运行,由测试时钟 (TCK) 和测试模式选择 (TMS) 信号引导,状态转换由TCK上升沿的TMS状态控制。状态机包含两条模拟路径,通过扫描指令寄存器 (IR) 或数据寄存器 (DR) 来方便捕获和/或更新数据,如下所示:
JTAG 状态机中的每个状态都有两个出口,可通过TCK上采样的单个TMS信号控制所有转换。两个主要路径便于从设备的数据寄存器或指令寄存器设置或检索信息。访问的特定数据寄存器(例如 BSR、IDCODES、BYPASS)取决于加载到指令寄存器中的值。

5 JTAG 接口连接器及其引脚排列

JTAG连接器也称为JTAG接头或JTAG端口,是用于在设备或PCB与JTAG接口之间建立连接的物理连接器,这些连接器有助于使用 JTAG协议对设备进行测试、调试和编程。根据其外形尺寸、引脚数和应用,JTAG连接器有以下几种不同的类型:
  • 20针JTAG连接器。
  • 16 针 OCDS JTAG 连接器。
  • 14 针 JTAG 连接器。
  • 10 针 JTAG 连接器(ARM JTAG 连接器)。
  • 定制 JTAG 连接器。
  • 表面贴装 JTAG 连接器。
  • 飞线 JTAG 连接器。

以20针JTAG连接器为例,20针JTAG连接器是使用最广泛的,顾名思义,它具有20个引脚,排列成两排,每排10个。这种连接器类型通常用于传统的JTAG应用,可以在许多开发板和评估平台上找到,它为JTAG通信提供了标准接口,并且与大多数JTAG编程器和调试器兼容,引脚定义如下:

6 JTAG协议的工作原理

JTAG协议的工作原理是提供一种标准化方法来测试和调试IC 和 PCB,它允许工程师使用测试访问端口 (TAP) 和状态机中的一组定义状态来访问和控制设备的内部组件。以下简要说明 JTAG如何从PC进行调试以及运行带有断点的代码,调试过程涉及以下步骤:
  • 将JTAG硬件接口连接到目标设备的JTAG接口。
  • 使用 TCK、TMS、TDI 和 TDO 引脚在 PC 和 JTAG 接口之间建立通信。
  • 将TAP置于所需状态,比如选择-DR-扫描 (SDR),以访问和操作设备的内部寄存器。
  • 在PC上安装适当的调试软件,通过JTAG接口连接目标设备。
  • 调试软件允许您读取和写入数据到内部寄存器,设置断点,停止处理器,以及执行其他调试操作。
一旦PC通过JTAG接口连接到目标设备,您就可以使用JTAG将代码加载到设备的内存中。加载代码后,您可以像执行任何其他程序一样执行它。使用断点时,调试软件通过JTAG接口与处理器通信,并指示它在特定内存地址(断点)处停止执行,当处理器到达断点时,它会停止运行,让您可以检查程序状态、内存内容和寄存器值,这使您能够分析程序的行为并查找代码中的错误或错误。

source: https://silo.tips/download/trace32-documents-ide-user-interface-ide-users-guide-1

6 小结

总之JTAG协议在电子和嵌入式系统领域有着广泛的应用,它的一些关键应用如下所示:
对于汽车行业而言,主要在ECU开发,核心功能是用于软件的刷写和调试,比如ECU底层软件开发中使用到调试器(Jlink,Lauterbach和UDE等),OK,到此就是对JTAP的简单介绍,关于ECU软件开发相关内容,欢迎关注后续文章。

创作不易,欢迎点赞再看收藏关注

汽车研发交流群,有兴趣的朋友请添加群主:prOmiseyes,备注:公司+职务入群。仅限汽车从业人员。

谦益行
分享汽车研发日常,助力你我共同成长。
 最新文章