1、对于Cortex-M内核主要是支持两种调试接口:
JTAG : Joint Test Action Group
SWD : Serial Wire Debug
QQ截图20220212180928.png (306.09 KB, 下载次数: 1)
下载附件
2022-2-12 18:09 上传
QQ截图20220212182113.png (90.33 KB, 下载次数: 0)
下载附件
2022-2-12 18:21 上传
2、SWD调节接口下有个SWV(Serial Wire Viewer)
SWV 是由仪器化跟踪宏单元 ITM(Instrumentation Trace Macrocell)和 SWO 构成的。 SWV 实现了一种从 MCU 内部获取信息的低成本方案, SWO 接口支持输出两种格式的跟踪数据, 但是任意时刻只能使用一种。两种格式的数据编码分别是 UART(串行) 和 Manchester(曼彻斯特)。当前 JLINK 仅支持 UART编码, SWO 引脚可以根据不同的信息发送不同的数据包。 当前 M3/M4 可以通过 SWO 引脚输出以下三种信息:
(1) ITM 支持 printf 函数的 debug 调用(工程需要做一下接口重定向即可)。 ITM 有 32 个通道, 如果使用 MDK 的话,通道 0 用于输出调试字符或者实现 printf 函数, 通道 31 用于 Event Viewer,这就是为什么实现 Event Viewer 需要配置 SWV 的原因。
(2) 数据观察点和跟踪 DWT(Data Watchpoint and Trace)可用于变量的实时监测和 PC 程序计数器采样。
(3)时间戳, ITM 还附带了一个时间戳的功能:当一个新的跟踪数据包进入了 ITM 的 FIFO 时, ITM就会把一个差分的时间戳数据包插入到跟踪数据流中。跟踪捕获设备在得到了这些时间戳后,就可以找出各跟踪数据之间的时间相关信息。另外,在时间戳计数器溢出时也会发生时间戳数据包。
3、新一代调试技术
RTT是SEGGER开发板的,基于SWD调试接口的数据通信方式,仅需SWDIO和SWCLK。而Event Recorder是MDK开发的,和RTT类似的通信机制。相比基于SWO引脚的ITM数据传输,速度要快很多。