开发测试调试时使用log日志功可以方便地监测程序的运行状态。
当前市面的大部分MCU单片机,都是基于Cortex-M内核的,其集成仪器化跟踪单元(ITM),可以支持调试消息的输出,只需要连接SWO引脚即可实现。
如果没有足够的硬件资源,日志输出将存在困难。使用这个方式就是一个好方法。
实现方法:
1 JLink调试器采用SW方式与MCU连接,并在keil中对debug相关选项卡进行重新配置。

2 勾选启用Trace功能,按照实际情况配置内核时钟;keil中的Debug(printf)Viewer窗口可以显示ITM stimulus端口0的传输数据,启用端口0。

3 编写printf函数。
Keil自带的重连文件(Retarget.c)位于安装\ARM\Startup目录下,将此文件复制拷贝,并添加到工程中,同时重写此文件中的int fputc(int ch, FILE *f)函数即可实现printf功能。
将fputc函数实现为通过ITM的端口0发送一个字节。ITM的端口0发送数据的功能CMSIS框架已提供相关接口, unsigned int ITM_SendChar (unsigned int ch)函数位于core_cm3.h文件中。

4 Keil软件开启Debug(printf)Viewer窗口,具体如图所示。

利用ITM在Cortex-M单片机上实现调试日志输出
本文介绍了如何在基于Cortex-M内核的MCU单片机上利用集成的仪器化跟踪单元(ITM)进行调试日志输出。通过连接SWO引脚,借助JLink调试器和keil软件配置,可以实现通过ITM端口0发送调试消息。具体步骤包括启用Trace功能、配置Debug(printf)Viewer窗口、重写Retarget.c文件中的intfputc函数以及调用ITM_SendChar函数。这种方法在硬件资源有限的情况下提供了便利的日志监测方案。
1752

被折叠的 条评论
为什么被折叠?



