JNH官网

【ARM】Debug(printf)Viewer的配置和使用

一、文档背景

在项目开发过程中,通常会使用物理串口的方式,打印log信息进行变量或者信息的查看。但是,也存在遇到某些情况下物理串口不够或者板卡上没有USB转串口模块,无法通过串口调试器打印log信息。


二、 解决的问题或者进行问题分析

在keil MDK中有一个特殊的串行窗口Debug (printf) Viewer,可以与微控制器交换数据。对于Cortex-M微控制器,该窗口显示从Instrumentation Trace Macrocell (ITM)接收的打印数据。相当于在keil mdk中通过虚拟的串口在keil mdk中直接打印log数据。


三、 如何配置使用Debug (printf) Viewer功能

1、准备软硬件环境

1)、软件:KEIL MDK Pro

2)、仿真器:Ulink Pro

3)、开发板:ATSAMV7x开发板(带SWD+ETM口)

4)、电脑环境:Windows 11


2、打开Manage Run窗口,找到Compiler->I/O组件。(如图3-2)


图3-2


3、勾选STDERR、STDIN、STDOUT三个组件,并将每个组件的Variant设置为ITM(如图3-3),然后点击OK。

图3-3


4、配置SWO trace功能。

1)、创建配置文件SAMx7_TP.ini,并写入对于SWO trace端口的配置内容,例如:ATSAMV7x芯片的trace端口的配置文件内容如下。(关于配置文件中内容,请查看Keil MDK Trace ETM功能文档)


2)、在Options窗口中的Debug-Initialization Flies处,点击...,选择上一步创建的配置文件(如图3-4-2)

图3-4-2


3)、连接好仿真器和板子后,进入Debug->settings窗口中(如图3-4-3)。

图3-4-3


4)、在打开的窗口中Debug栏将Port类型选择为SW。(如图3-4-4)

图3-4-4


5)、切换到Trace栏中,勾选Trace Enable(如图3-4-5中第1处),Trace Port类型选择"Serial Wire Output - Manchester"(如图3-4-5中第2处),将ITM Stimulus Ports的Enable的值修改为0x00000001和Privilege的值修改为0x00000000(如图3-4-5中第3处)。

图3-4-5


5、至此Debug (printf) Viewer功能就配置完成了。


四、使用Debug (printf) Viewer

1、在对应的代码处添加printf语句(如图4-1)。

图4-1


2、进入debug模式下,在view菜单栏中,找到Serial Windows->Debug(printf)Viewer窗口(如图4-2)。

图4-2


3、运行程序,就可以在Debug(printf)Viewer窗口看到printf语句输入的信息了(如图4-3)。

图4-3

五、讨论分析

1. Debug(printf)Viewer窗口最大的输出速率是多少?

2. Debug(printf)Viewer窗口最大的输出字节是否有限制?



六、结论

在物理串口不够或者板卡上没有USB转串口模块,无法通过串口调试器打印log信息的情况下,可以使用Debug(printf)Viewer窗口在Debug模式下通过printf语句输入log信息。

jnh官网 jnh官网 jnh官网 jnh官网 金年会 金年会 金年会 金年会