keil结合st-link使用SWO的两种调试方法笔记
通过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功能再写一遍记录文档。
最新文章
- LUA 利用#遍历表的问题
- Jquery页面初始化的4种方式
- 如何在word中的第3+n页处插入页面并重新从1开始
- Python之列表、字符串、元组和字典的基本用法
- 在python中处理XML
- Java线程间通信--生产者消费者
- (原)使用mkl中函数LAPACKE_sgesv计算矩阵的逆矩阵
- 在腾讯云上把Laravel整合万向优图图片管理能力,打造高效图片处理服务
- Spring Boot整合Spring Security
- Robust PCA via Outlier Pursuit
- 【Flask】报错解决方法:AssertionError: View function mapping is overwriting an existing endpoint function: main.user
- 『战略游戏 最大利润 树形DP』
- 在datasnap 中使用unidac 访问数据(客户端)
- mysql常用命令小结
- C 语言的 GCC 扩展
- bitset里面一些函数的用法
- python-初始化函数
- ConcurrentHashMap源码解析(1)
- DedeCMS修改管理员用户名
- 爬虫开发12.selenium在scrapy中的应用