7 平台搭建与下载工具
书籍下载地址(复制到下载工具进行下载):
https://files.cnblogs.com/wenziqi/ARMCortex-M0原理与应用实践.part1.rar
https://files.cnblogs.com/wenziqi/ARMCortex-M0原理与应用实践.part2.rar
注:书籍内容会不定期进行更新!
7.4 JTAG与串行调试(SWD)
7.4.1 JTAG简介
JTAG(Joint Test Action Group;联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
JTAG最初是用来对芯片进行测试的,JTAG的基本原理是在器件内部定义一个TAP(Test Access Port;测试访问口)通过专用的JTAG测试工具对进行内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现ISP(In-System Programmable�在线编程),对FLASH等器件进行编程。
JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。
具有JTAG口的芯片都有如下JTAG引脚定义:
TCK——测试时钟输入;
TDI——测试数据输入,数据通过TDI输入JTAG口;
TDO——测试数据输出,数据通过TDO从JTAG口输出;
TMS——测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式。
可选引脚TRST——测试复位,输入引脚,低电平有效。
含有JTAG口的芯片种类较多,如CPU、DSP、CPLD等。
JTAG内部有一个状态机,称为TAP控制器。TAP控制器的状态机通过TCK和TMS进行状态的改变,实现数据和指令的输入。
JTAG标准定义了一个串行的移位寄存器。寄存器的每一个单元分配给IC芯片的相应引脚,每一个独立的单元称为BSC(Boundary-Scan Cell)边界扫描单元。这个串联的BSC在IC内部构成JTAG回路,所有的BSR(Boundary-Scan Register)边界扫描寄存器通过JTAG测试激活,平时这些引脚保持正常的IC功能。
7.4.2 SWD简介
ARM Cortex-M0 集成了调试的功能。支持串行线调试功能。ARMCortex-M0 被配置为支持多达 4个断点和 2 个观察点。
串行线调试技术可作为 CoreSight调试访问端口的一部分,它提供了2 针调试端口,这是 JTAG 的低针数和高性能替代产品。
串行线调试 (SWD) 为严格限制针数的包装提供一个调试端口,通常用于小包装微控制器,但也用于复杂 ASIC 微控制器,此时,限制针数至关重要,这可能是设备成本的控制因素。
SWD 将 5 针 JTAG 端口替换为时钟 + 单个双向数据针,以提供所有常规 JTAG 调试和测试功能以及实时系统内存访问,而无需停止微控制器或需要任何目标驻留代码。SWD 使用 ARM 标准双向线协议(在 ARM 调试接口第 5 版中定义),以标准方式与调试器和目标系统之间高效地传输数据。作为基于 ARM 微控制器的设备的标准接口,软件开发人员可以使用 ARM 和第三方工具供应商提供的各种可互操作的工具。
l 仅需要 2 个针 - 对于非常低的连接设备或包装至关重要
l 提供与 JTAG TAP 控制器的调试和测试通信
l 使调试器成为另一个 AMBA 总线主接口,以访问系统内存和外设或调试寄存器
l 高性能数据速率 - 4 M 字节/秒 @ 50 MHz
l 低功耗 - 不需要额外电源或接地插针
l 较小的硅面积 - 2.5k 附加门数
l 低工具成本
l 可靠 - 内置错误检测
l 安全 - 防止未连接工具时出现插针故障
SWD 提供了从 JTAG 的轻松且无风险的迁移,因为两个信号 SWDIO 和 SWCLK 重叠在 TMS 和 TCK 插针上,从而使双模式设备能够提供其他 JTAG 信号。在 SWD 模式下,可以将这些额外的 JTAG 针切换到其他用途。SWD 与所有 ARM 微控制器以及使用 JTAG 进行调试的任何微控制器兼容,它可以访问 Cortex微控制器和 CoreSight 调试基础结构中的调试寄存器。目前,批量生产设备中实现了串行线技术,例如,NuMicro M051系列微控制器。
ARM 多点 SWD 技术允许通过单个连接同时访问任意数量的设备,以将 SWD 优点应用于基于多微控制器的复杂 SoC,从而为复杂设备开发人员提供了低功耗 2 针调试和跟踪解决方案。这对连接受限的产品特别重要,例如,手机,其中多晶片和多芯片是很常见的。
多点 SWD 完全向后兼容,从而保留现有的单一点到点主机设备连接,并允许在未选择设备时将其完全关闭以降低功耗。
SWD串行调试具有以下特性:
l 支持ARM串行线调试模式;
l 可直接对所有存储器、寄存器和外设进行调试;
l 调试阶段不需目标资源;
l 4 个断点。4 个指令断点,可以用来重映射修补代码的指令地址。2个数据比较器,可用来重映射修补文字的地址;
l 2 个数据观察点,可用作跟踪触发器;
下表列出了与调试和跟踪相关的JTAG与SWD不同管脚功能。有些功能与其它功能共用管脚,因此这些功能不能同时使用。
表7.4-1 JTAG与SWD功能引脚
管教名称 |
类型 |
说明 |
TCK |
输入 |
JTAG测试时钟。该管脚在 JTAG模式下是调试逻辑的时钟 |
TMS |
输入 |
JTAG测试模式选择。TMS 管脚负责选择 TAP 状态机的下一个状态 |
TDI |
输入 |
JTAG测试数据输入。这是移位寄存器的串行数据输入 |
TDO |
输出 |
JTAG 测试数据输出。这是移位寄存器的串行数据输出。在 TCK 信号 的下降沿,数据将通过移位寄存器从器件向外输出 |
TRST |
输入 |
JTAG测试复位。可用TRST 管脚来复位调试逻辑中的测试逻辑 |
SWCLK |
输入 |
串行线时钟。这个管脚在串行线调试模式下是调试逻辑的时钟 (SWDCLK)。在 JTAG 模式下该管脚为 TCK 管脚。 |
SWDIO |
输入/输出 |
串行线调试数据输入/输出。外部调试工具可通过 SWDIO 管脚来与 NuMicro M051通讯,并对其进行控制。在 JTAG 模式下该管脚为 TMS管脚 |