STM32强大的调试和跟踪CoreSight技术
本文原作者为微信公众号:strongerHuang
如今调试STM32能这么方便,在于有一项基于Arm Cortex-M处理器设备的CoreSight技术,该技术引入了强大的新调试(Debug)和跟踪(Trace)功能。
下面就来重点讲讲关于CoreSight中调试和跟踪的相关内容。
一、调试和跟踪功能
CoreSight两个主要功能就是调试和跟踪功能。
1.调试功能
- 运行处理器的控制,允许启动和停止程序
- 单步调试源码和汇编代码
- 在处理器运行时设置断点
- 即时读取/写入存储器内容和外设寄存器
- 编程内部和外部FLASH存储器
2.跟踪功能
- 串行线查看器(SWV)提供程序计数器(PC)采样,数据跟踪,事件跟踪和仪器跟踪信息
- 指令(ETM)跟踪直接流式传输到您的PC,从而实现历史序列的调试,软件性能分析和代码覆盖率分析
一张图了解整体内容:
二、JTAG
JTAG是行业标准的接口,用于下载和调试目标处理器上的程序以及许多其他功能。它提供了连接设备的简便方法,并且在所有基于Arm处理器的设备上都可用。JTAG接口可与基于Cortex-M的设备一起使用,以访问CoreSight调试功能。
1.JTAG历史
JTAG是联合测试工作组(Joint Test Action Group)的简称,是在名为标准测试访问端口和边界扫描结构的IEEE的标准1149.1的常用名称。此标准用于验证设计与测试生产出的印刷电路板功能。
1990年JTAG正式由IEEE的1149.1-1990号文档标准化,在1994年,加入了补充文档对边界扫描描述语言(BSDL)进行了说明。从那时开始,这个标准被全球的电子企业广泛采用,边界扫描几乎成为了JTAG的同义词。
—引用维基百科
2.JTAG接口
JTAG的接口通常是4/5个接脚接口连到芯片上:
- TDI(测试数据输入)
- TDO(测试数据输出)
- TCK(测试时钟)
- TMS(测试模式选择)
- TRST(测试复位)可选
三、SWD串行线调试
SWD,Serial Wire Debug(串行线调试)模式是标准JTAG接口的替代方法,它仅使用两个引脚即可提供与JTAG相同的调试功能,而不会降低性能,并通过串行线查看器(SWV)引入了数据跟踪功能。
在JTAG引脚中包含SWD接口引脚,从而允许标准目标连接器中使用。引脚包含:
- TCLK-SWCLK(串行时钟)
- TMS-SWDIO(串行数据输入/输出)
- TDO-SWO(串行线输出-SWV使用)
关于SWV
SWV:Serial Wire Viewer,串行线查看器基于Cortex-M3、 M4、 M7的设备能够根据所需信息或分析的类型,以多种方式提供高速数据跟踪信息。当系统处理器继续全速运行时,它通过SWO引脚传输。
可从ITM(仪器跟踪宏单元)和DWT(数据观察点和跟踪)单元获得信息,其中包括:
- PC(程序计数器)采样
- 显示CPU周期统计信息的事件计数器
- 具有定时统计信息的异常和中断执行
- 跟踪数据-用于时序分析的数据读取和写入
- 用于简单printf样式调试的ITM跟踪信息