亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 嵌入式

Arm Core 设备中的 JTAG 实现

这篇文章将教你JTAG和Arm核心设备之间的交叉,特别关注Arm调试接口或ADI。

到目前为止,在我们关于 JTAG 的系列中,我们已经研究了 IEEE 1149.1 标准,包括测试访问端口 (TAP) 控制器和 TAP 状态机。然后我们回顾了可用于 JTAG 的不同物理接口,包括连接器的常见引脚分配,以及市场上可用的 JTAG 接口和调试探针。

在本文中,我们将稍微偏离 JTAG 标准,而是看看 JTAG 如何在无处不在的 ARM 核心设备中实现。

什么是手臂?

Arm 指的是处理器架构,以及大量与微处理器和微控制器接口相关的知识产权。消费类 PC 倾向于使用 x86 派生处理器、PowerPC 或 MIPS,而嵌入式电子设备最常使用 Arm 核处理器。

处理器的“核心”分发给 ST Microelectronics 或 NXP 等制造商,然后这些制造商添加额外的外围功能,例如 I2C 和 SPI 接口、ADC 和 DAC、USB 接口等。

Arm 架构的版本号为 ARMv,例如 ARMv2(可追溯至 1987 年)、ARMv6(2002-2005 年生产的处理器)等,使用这些架构的处理器内核被标记为 ARMx 系列(ARM1、ARM6、ARM7),以及最近作为 ARM Cortex-A/R/M 系列用于高性能 (Cortex-A)、实时 (Cortex-R) 和微控制器 (Cortex-M) 应用。架构版本遵循 Cortex 后缀命名,成为 ARMv6-M、ARMv7-R、ARMv7-A 等版本。

Arm 的调试接口属于 Arm CoreSight 架构的名称;这包括调试接口(Arm Debug Interface,ADI)、嵌入式跟踪宏单元 (ETM)、高速串行跟踪端口 (HSSTP) 和 CoreSight 程序流跟踪架构。 ADI 构成了使用 Arm 核心处理器进行调试操作的基础,该标准的一部分包括 JTAG 接口以及串行线调试 (SWD) 替代方案。本文的主题是 ADI,特别是硬件接口层。

Arm 调试接口 (ADI) 介绍

Arm 调试接口 (ADI) 是硬件接口和逻辑接口的规范,用于在主机和一个或多个设备之间进行调试。目前,大多数处理器都在实现 ADIv5(在 Arm IHI0031E 中指定),而较新的 ADIv6(参见 Arm IHI0074C)正在缓慢地逐步采用。因为它更受欢迎,我们将在此重点介绍 ADIv5 标准。

ADI 定义了调试访问端口 (DAP),由调试端口 (DP) 和访问端口 (AP) 组成。 DAP 是调试接口的主要“单元”。一个给定的设备将有一个调试端口,它处理与调试器的物理连接,以及多个访问端口,提供对系统资源(如调试寄存器、跟踪端口寄存器、ROM 表或系统存储器)的访问。因此DP包括物理连接(JTAG、SWD)以及一些内置寄存器,每个AP都有与系统的连接,以及一些自己的寄存器。

在 ADIv5 中,有两种类型的调试端口,以及(广义上的)三种类型的访问端口。 DP 可以是 JTAG-DP 或 SWD-DP,以用于从设备外部连接到 DAP 的接口命名。 AP 可以是 MEM-AP,通过寻址(类似于内存映射,因此得名)、JTAG-AP,允许 JTAG 扫描链连接到整个调试单元(DAP),以及特定于供应商的非 Arm 指定的 AP。 MEM-AP 是迄今为止最常见和最有用的,因此我们不会在这里介绍其他类型。

在 JTAG 上下文中,我们希望调试接口提供 JTAG 指令代码,以及供应商特定的 JTAG 功能。实际上,ADIv5 标准提供了以下说明:

同样,JTAG 数据寄存器包括:

这里应该突出的是指令 DPACC 和 APACC,以及相关的数据寄存器。 DPACC(调试端口访问)和 APACC(访问端口访问)是用于将命令传递到设备的关联 DP 和 AP 的指令/寄存器。通过在 DPACC 或 APACC 数据寄存器中设置不同的值,调试器可以执行不同的操作,一般与 DP 和 AP 本身的寄存器进行交互。请注意这些 DPACC 和 APACC 寄存器(JTAG 寄存器)与内置在 DP 和 AP 中的寄存器之间的区别。

这里的一般方法是,调试器使用 JTAG 或 SWD 接口通过 TAP 状态机执行指令,然后指令取数据并将其加载到 DP 或 AP,并根据数据,内部的不同寄存器DP 或 AP 被访问,提供所需的系统链接。

那么,DP和AP寄存器是什么?可用的 DP 寄存器包括:

而 MEM-AP 寄存器是:

连接示意图如下图 1 所示。

图 1。 Arm调试接口图,总结连接。注意:并非所有寄存器都显示为 DP 和 AP。

DP/AP 寄存器和内存映射的详细信息可以在规范 IHI 0031E 中找到。与其深入细节,我想重点讨论另一种类型的调试端口 SWD-DP,以及它如何仅使用两根线实现 JTAG。

串行线调试 (SWD)

虽然 JTAG-DP 是一个常见且熟悉的调试接口示例,但与我们的讨论最相关的是为 Arm 设备定义的 JTAG 替代方案,即 Arm 串行线调试 (SWD)。 SWD 被开发为用于具有有限引脚数的 Arm 核心设备的两线接口。由于微控制器的外围设备往往非常密集,大多数 Cortex-M 设备将实现 SWD 代替完整的 JTAG,以节省引脚空间。那么这个协议是如何工作的呢?

SWD 在 ADIv5 规范(B4 章)中进行了规定。 JTAG 的 TDI 和 TDO 引脚被称为 SWDIO 的单个双向引脚取代;测试模式选择 (TMS) 引脚被完全移除;并且时钟 (TCK) 保持不变(重新标记为 CLK 或 SWCLK)。因此,与 JTAG 中使用的四个引脚相比,SWD 仅使用两个引脚。为了完成这项工作,SWD 依赖于 JTAG 操作的重复性质:状态机被操纵,数据移入或移出,并重复该过程。与 SWD 的不同之处在于没有状态机。相反,命令通过 SWDIO 串行发出,然后使用同一引脚读取或写入数据。

SWD 通信分为三个阶段:数据包请求、确认和数据传输。在数据包请求期间,主机平台向 DP 发出请求,并且必须紧随其后是确认响应。如果数据包请求是数据读取或数据写入请求,并且存在有效确认,则系统进入数据传输阶段,在该阶段数据通过 SWDIO 计时(写入)或计时(读取)。数据传输后,主机负责启动数据包请求,或以空闲周期驱动 SWD 接口(将 SWDIO 时钟设为低电平)。奇偶校验适用于数据包请求和数据传输阶段。

通过查看时序图可以最好地了解 SWD 的细节,如图 2 所示。

图 2。 时序图显示了串行线调试的读写操作。 [点击放大]

读取和写入操作都以相同的方式开始,从主机将 SWDIO 线驱动到开始位开始,这是一个高电平信号。接下来是配置,包括 AP 或 DP 访问位 (APnDP)、读或写位 (RnW)、地址 (A[2:3])、奇偶校验位 (PAR) 和停止位 ( LOW 信号),最后是 Park 位,这是主机在线路进入周转之前将线路驱动为高电平。在周转期间,目标和主机都不允许驱动线路。

根据 RnW 的值,选择读或写操作。如果写入,目标提供一个 3 位 ACK 信号,那么还有另一个周转周期,接着是要写入的 32 位数据(WDATA)和一个奇偶校验位。如果正在读取,则目标提供一个 ACK​​,然后继续使用 32 位读取数据 (RDATA) 驱动线路,然后是奇偶校验位。如果发生错误,ACK 位将指示错误,主机可以尝试重新启动操作。观察到 WDATA 和 RDATA 首先传输最低有效位 (LSb),如图 2 所示,写入 WDATA[0:31] 而不是 WDATA[31:0]。

Arm IHI0031E 文档提供了进一步的时序图以阐明通信中的各种情况,但以上是主要用例。值得注意的是(截至撰写本文时)有两个版本的 SWD; SWDv1 仅支持主机和目标之间的一个连接(点对点),而 SWDv2 实现单主机多目标通信(多点)。除了一些边缘情况外,版本 2 几乎向后兼容版本 1。

JTAG 的其他变体

SWD 并不是 JTAG IEEE 1149.1 标准的唯一两线变体。值得注意的是,IEEE 1149.7 标准提供了减少引脚数的(2 线)JTAG 接口。其他 1149.x 标准,例如 IEEE 1149.4(混合信号测试总线标准)和 IEEE 1149.6(高级数字网络边界扫描标准)已在过去二十年中得到开发,并为更多涉及的应用程序提供附加功能。这包括模拟边界扫描测试以及差分和交流耦合线路的改进功能。

最新标准可从 IEEE 标准协会网站获得。

结论

我们对 JTAG 和 SWD 的介绍到此结束。在本系列中,我们了解了 JTAG 的来源、它的工作原理以及如何使用它来调试和编程设备。我们已经研究了 JTAG 的物理连接,包括可用的连接器和接口,包括商业和开源。最后,我们总结了流行的 Arm 处理器核心技术的 JTAG 实现,包括 SWD 两线接口。

从这里开始,我们可以自信地使用嵌入式设备的调试和编程功能,了解不同实现的细节,并充分利用我们的时间。


嵌入式

  1. 电感
  2. 量子设备
  3. Arm 为 Cortex-M 内核启用自定义指令
  4. 可靠地为电池供电的医疗设备供电
  5. Mouser:ADIS1647x IMU 改进了物联网设备中的导航
  6. ams 以简化 3D 光学传感技术的实施
  7. Marvell 与 Arm 扩展战略合作伙伴关系
  8. 监控医疗设备进展
  9. 电机控制器集成 Arm Cortex-M0 内核
  10. 隔离式 RS-485 收发器简化设计
  11. Arm 通过收购 Stream Technologies 扩展物联网连接和设备管理功能
  12. 起锚机安全装置