[CortexM4--stm32f411]调试接口

简述

对STM32F411所支持的调试接口及其方式进行简单的学习。

调试接口

STM32F411的调试接口硬件示意如下:
[CortexM4--stm32f411]调试接口_第1张图片
在调试模式下,MCU核在某条特定指令获取(断点),或者是数据获取时(Watch Point)时可以被停住,MCU核的内部状态以及外部状态均可被测量,在测量完成后,MCU核会恢复并继续执行。
STM32F411的调试接口支持两种:

  • Serial wire(SWD)
  • JTAG debug port

另外上图中的一些术语意思如下:

术语 说明 附加说明
SWJ-DP Serial wire / JTAG debug port, DP即调试接口debug port的简写。SWJ表示是SWD和JTAG
AHB-AP AHB access port, AHB是ARM架构中常见的高速内部总线一种,即说明调试接口会通过这个AHB-AP与内部的许多调试单元通过AHB进行交互
ITM Instrumentation Trace Macrocell,即可以进行测量跟踪的,常见的是在代码中通过这个来输出调试信息
FPB Flash Patch Breadpoint,因为指令一般存在于flash中,这个可能和调试时打断点相关
DWT Data Watchpoint Trigger,数据监视窗口用,许多调试工具都会有watch point的功能的
TPUI Trace Port Unit Interface,可能也是用作输出吧,只有大尺寸封装的IC有此功能,应当需要额外的pin 上面图示中写成TPIU了
ETM Embedded Trace Macrocell,也是只有大尺寸封装的IC有此功能,应当需要额外的pin 上面图示中没有看到这个

接下来简单说明下这里面部分的详细内容以及可能的用法。

SWJ-DP

这个是ARM标准的CoreSight debug port,其中,使用JTAG DP的话有5根pin,用SW DP的话2根pin。STM32F411的这两个接口是复用的~,其硬件框图如下:
[CortexM4--stm32f411]调试接口_第2张图片
下面用表格的方式说明下这两个DP的引脚连接的区别:

引脚 JTAG-DP接口 JTAG功能 SW-DP接口 SW功能 PIN Num
JTDO TDO 数据输出 TRACESWO trace输出 PB3
JTDI TDI 数据输入 PA15
NJTRST nTRST 复位 PB4
JTMS/SWDIO TMS 测试模式选择 SWDIO 数据输入输出 PA13
JTCK/SWCLK TCK 时钟 SWCLK 时钟 PA14

上图中还有一个SWD/JTAG select的单元,其实就是用来选择是使用JTAG或SW的。另外表中的TRACESWO并不是SW-DP的接口~应当是后面要提到的ITM会用到的接口。

ITM

ITM支持printf风格的输出,可以在OS和Application中输出log,用来评估和分析系统的信息。ITM有如下三种方式产生trace信息:

方式 说明 其他
Software trace 直接写ITM相应寄存器直接发送数据
Hardware trace DWT产生数据通过ITM发送
Time stamping ITM包含了一个21bit的计数器用于产生时间戳,这个时间戳可以通过ITM发送

ITM数据会通过TPIU,TPIU会加上额外的包再发送给调试主机。
使用ITM功能之前,必须使能Debug Exception的TRCEN bit和Monitor Control寄存器。ITM相关寄存器如下图:
[CortexM4--stm32f411]调试接口_第3张图片

另外的ETM应当是用来trace执行的指令的,TPIU则是有FIFO,起到bridge的作用,将ETM或ITM的data输出出去。

你可能感兴趣的:(Arch-ARM)