前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >keil结合st-link使用SWO的两种调试方法笔记

keil结合st-link使用SWO的两种调试方法笔记

作者头像
用户4645519
发布2020-09-07 11:30:37
2.6K0
发布2020-09-07 11:30:37
举报
文章被收录于专栏:嵌入式学习嵌入式学习

通过strongerHuang的教程,实现了SWO的两种调试方法, 1、在keil调试的过程中,使用debug printf viewer打印信息, 2、在STM32 ST-LINK Utility中烧写程序并打印信息。

几点信息:摘录自https://www.strongerhuang.com SWD:Serial Wire Debug,串行线调试 SWO:Serial Wire Output,串行线输出 SWV:Serial Wire Viewer,串行线查看器 ITM:Instrumentation Trace Macrocell,指令跟踪宏单元

SWO串行线输出是单引脚、异步串行通信,可在Cortex-M3/M4/M7上使用,并由主调试器探测支持。

它是利用Cortex内核中ITM模块来实现此功能。

由于手头上没有串口,因此只能通过st-link进行信息输出,增加调试方法。jlink也可以通过RTT和SWO的方法输出信息。 手上有一个stlink,因此选择swo方式。

具体的方法参见https://www.strongerhuang.com网页或公众号。 几点注意事项: 1、如果要在STM32 ST-LINK Utility的Serial Wire Viewer打印信息,应该是stlink下在hex才能运行,keil里面下载程序是无法在Serial Wire Viewer中显示的。

2、如果直接在keil中调试全速运行的话,直接调试,运行,打开debug printf viewer即可看到打印的信息。

另外,keil工程中需要开启功能,添加printf的重定义,时钟频率要一致。端口号默认0就可以。

这个swo的方法比串口打印要更加有效率,而且不会干扰cpu运行。以后如果有jlink和stlink,都可以不用串口打印了,从打印效率来说:UART < SWO < JLink-RTT。记得nrf52系列是默认使用JLink的RTT功能的。

原文提到:与基于 UART 的文字输出不同,使用 ITM 输出不会对应用程序造成很大的延迟,在 ITM 内部有一个 FIFO,它使写入的输出消息得到缓冲。

3、SWO需要stm额外的引脚,stmcubemx中的debug选项需要配置为TraceAsynchronous Sw模式 4、RTT不需要额外的引脚,而且效率更加高。可见segger公司的实力还是很强大的。后续有用到RTT功能再写一遍记录文档。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档