通过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功能再写一遍记录文档。

最新文章

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

热门文章

  1. JVM OOM异常会导致JVM退出吗?
  2. 网络模式: host-only &amp; NAT &amp; 桥接
  3. 解决IIS出现“由于权限不足而无法读取配置文件”的问题
  4. hdu 1203 转换的01包问题。。。。
  5. (二十七)JSP标签之核心标签
  6. string类型常用函数
  7. powerdesign中逆向工程后name和comment的互换
  8. Django rest-framework框架-组件之路由
  9. ntp时间同步简介
  10. C语言对齐、补齐