STM32再认识 - (?) 调试与跟踪
调试与跟踪
本篇笔记主要是给自己看的,会省略掉我认为是常识的东西。
调试与跟踪功能概述
首先纠正长久以来的一个错误,微控制器的调试(debug)与跟踪(trace)是两个独立的功能。
对于常用调试接口:
-
Serial Wire Debug, SWD
-
Joint Test Action Group, JTAG
对于常用追踪接口:
-
Serial Wire Viewer, SWV
SWV 是一种连接物理接口,其传输的信号被称为 SWO 。
当使用 SWD 协议时,SWO 输出信号能够与 Test Data Out, TDO 共享。这允许使用同一调试器在进行调试操作的同时收集跟踪数据。
SWO 的波特率受硬件限制一般是低于 2M/s 的。 -
Trace Port interface

嵌入式跟踪宏单元:
嵌入式跟踪宏单元(Embedded Trace Macrocell, ETM)是一个可选的片上硬件组件,它能提供有关程序执行的信息,以便调试主机可以重建整个程序执行历史。
此功能对于调试复杂的软件错误、代码覆盖率测量和性能分析非常有用。 ETM 指令跟踪还支持时间戳信息。微型跟踪缓冲区:
微型跟踪缓冲区(The Micro Trace Buffer, MTB)使用一小块 SRAM 作为跟踪缓冲区,通常以循环缓冲区模式运行,以存储有关程序流变化的信息。
程序停止后,调试器可以使用调试连接从 SRAM 中提取跟踪数据。(适用于 Cortex-M0+ )
Debug 一般是侵入式调试行为(需要停止处理器或显着改变程序执行流程)而 Trace 是一种非侵入式的调试行为(对程序流程没有影响或影响很小)。
侵入式调试往往具有更直观和明显的特点,但是在某些应用(我的老本行电机拖动)阻止程序运行是极其危险的,
调试架构
CoreSight™ 调试架构
Cortex-M 是的调试技术基于 CoreSight™ 架构的。关于 CoreSight™ 的详细信息可以查阅:
- CoreSight Architecture Specification (ARM IHI 0029)
- ARM Debug Interface v5.0/5.1 (e.g., ARM IHI 0031A)
- Embedded Trace Macrocell Architecture Specification (ARM IHI 0014Q)
- ARMv7-M Architecture Reference Manual (reference 1)
Cortex-M 处理器中的调试支持的一个重要特性是对多处理器的支持,CoreSight 架构允许共享调试连接和跟踪连接。
默认情况下,Cortex-M3 和 Cortex-M4 处理器具有针对单核环境的预配置处理器系统,并且可以通过添加来自 ARM 的附加 CoreSight 调试和跟踪组件来修改该系统以支持多处理器设计。
调试接口
为了允许调试器能够访问调试组件的功能,需要一个物理接口。相当多的微控制器支持一种名叫联合测试行动组(Joint Test Action Group, JTAG)的串行协议。
JTAG 协议是一种行业标准协议,可用于各种功能,例如芯片级或 PCB 级测试,以及访问微控制器内部的调试功能。
JTAG 是 1985 年全球主要电子器件制造商联合成立的行动小组,该小组于 1990 年公布了 IEEE 标准(IEEE 1149.1-1990: IEEE 标准测试访问端口和边界扫描架构)。这是一种用于在 PCB 上进行测试的 IC 级别实现标准接口。
该小组于 1994 年,加入补充文档对边界扫描描述语言(BSDL)进行了说明。自此,该标准被全球的电子行业广泛采用。而后, JTAG 几乎成为了边界扫描的同义词。
JTAG 使用至少四根引脚: TDI (Test Data In), TDO (Test Data Out), TCK (Test Clock), TMS (Test Mode Select) 以及可选的复位信号 TRST (Test Reset) 。
这可以满足绝大多数 Debug 场景,但是对于某些微型器件 JTAG 所使用的引脚数依然是不可承受的。
在这种背景下,ARM 公司开发出 Serial Wire Debug, SWD 协议。SWD 协议只使用 SWCLK 与 SWDIO 两个引脚即可提供相同的调试访问功能,并且还支持奇偶校验,这对较高电噪声的系统具有更高的可靠性。
因此,串行线调试协议对于许多微控制器供应商和用户来说非常有吸引力。
许多 Cortex-M3 和 Cortex-M4 微控制器同时支持 JTAG 和 SWD 调试协议。
当使用串行线调试协议时,TDO 引脚可用于通过 SWO 协议进行跟踪。
Debug Port (DP), Access Port (AP), and Debug Access Port (DAP)
跟踪接口
MMP, 跟踪器 1.3W 学个屁。跟不了一点。
转向 Event Recorder, RTT 技术栈。性能又好。
CoreSight™ 特征
Debug modes
Debug events
Breakpoint feature
Debug components in troduction
Processor debug support
Flash patch and breakpoint(FPB) unit
Purpose of the FPB
FPB comparators
Data watch point and trace(DWT) unit
Debug event generation
Datatrace
PC sampling
Profiling
Exceptiontrace
Instrumentation trace macrocell(ITM)
Overview
SoftwaretracewiththeITM
HardwaretracewithITMandDWT
ITMtimestamp
Embedded trace macrocell(ETM)
Trace port interface unit(TPIU)
ROM table
AHB access port(AHB-AP)



