美文网首页STM32
STM32的ITM跟踪调试功能介绍及实现(二)IAR篇

STM32的ITM跟踪调试功能介绍及实现(二)IAR篇

作者: 海东青电子 | 来源:发表于2019-01-22 23:11 被阅读0次

    在上一篇文章中,介绍了STM32的ITM跟踪调试功能在KEIL中的应用,本文介绍IAR中如何使用ITM。

    与在KEIL中类似,在main.c文件中,增加一行测试ITM的输出语句:

    ITM_SendChar('A');

    编译、链接,下载到目标板。在IAR中启动debug,进入debug状态,先调出ITM输出数据的观察窗口(只能在IAR的debug状态下操作,代码编辑状态下是不行的,下同):

    图一

    弹出 Terminal I/O 窗口,ITM的输出将在这个窗口中显示。

    工具栏中,点击SWO图标,选 SWO Configuration... :

    图二 图三

    在上图中的两个0的位置打勾,使能ITM的port0端口。然后全速运行程序,但 Terminal I/O 窗口中并没有我们希望的字符‘A’出现,注意,此时IAR工具栏上 SWO 图标是这样的:

    图四

    说明SWO没有真正跑起来,这是因为还有一项最重要的配置步骤没有完成 -- 在IAR中“激活”TIM。暂停debug,然后点击菜单条中的 ST-Link :

    图五

    如下图、打勾:

    图六

    工具栏中的 SWO 由灰色变成绿色(表示有效!)了:

    图七

    此时继续debug,可以看到ITM的跟踪输出数据了(字符‘A’):

    图八

    补充说明:上面的实验是基于 IAR 8.20.1 的,网上很多资料把ITM不能输出的原因归于下图中未对SWO做正确配置:

    图九

    但经过测试,上图中 Via SWO 是可以不用打勾的,甚至都不必打勾Semihosted, 即如下图所示的配置也是没问题的(ITM跟半主机模式Semihosted是不同的概念,使用ITM不必配置半主机是合逻辑的):

    图十

    这样配置ITM照样可以正确输出。但是,要特别注意一点:在IAR中每次启动debug时,都必须检查一下上面图三中,两个0的地方是否是打勾的状态!这两个地方必须打勾!本人在测试时就遇到了某次启动debug后,上面两个地方之前打的勾不见了,自然导致在观察窗口中看不到输出。难道IAR没有记录ITM端口的配置状态?目前仍不知是何原因。

    小结:

    IAR中ITM的应用,需特别注意 ST-Link 菜单中对SWO的配置;并且,每次debug时,都需要先检查ITM的端口0是否打勾了(激活、并输出到观察窗口)。

    本文结束,请见下一篇:ITM在ST-LINK V2客户端上的实现

    相关文章

      网友评论

        本文标题:STM32的ITM跟踪调试功能介绍及实现(二)IAR篇

        本文链接:https://www.haomeiwen.com/subject/irxdjqtx.html