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功能再写一遍记录文档。
keil结合st-link使用SWO的两种调试方法笔记的更多相关文章
- 关于Unity的两种调试方法
Unity的两种调试方法 1.Debug.Log()输出语句调试,平时经常用这个 2.把MonoDevelop和Unity进行连接后断点调试 先把编辑器选择为MonoDevelop,Edit----& ...
- angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用
今天我们要讲的是ng2的路由系统. 例子
- git两种合并方法 比较merge和rebase
18:01 2015/11/18git两种合并方法 比较merge和rebase其实很简单,就是合并后每个commit提交的id记录的顺序而已注意:重要的是如果公司用了grrit,grrit不允许用m ...
- 两种Ajax方法
两种Ajax方法 Ajax是一种用于快速创建动态网页的技术,他通过在后台与服务器进行少量的数据交换,可以实现网页的异步更新,不需要像传统网页那样重新加载页面也可以做到对网页的某部分作出更新,现在这项技 ...
- mysql in 的两种使用方法
简述MySQL 的in 的两种使用方法: 他们各自是在 in keyword后跟一张表(记录集).以及在in后面加上字符串集. 先讲后面跟着一张表的. 首先阐述三张表的结构: s(sno,sname. ...
- C#中的两种debug方法
这篇文章主要介绍了C#中的两种debug方法介绍,本文讲解了代码用 #if DEBUG 包裹.利用宏定义两种方法,需要的朋友可以参考下 第一种:需要把调试方法改成debug代码用 #if DEBU ...
- Service的两种启动方法
刚才看到一个ppt,介绍service的两种启动方法以及两者之间的区别. startService 和 bindService startService被形容为我行我素,而bindService被形容 ...
- jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
在asp.net webForm开发中,用Jquery ajax调用aspx页面的方法常用的有两种:下面我来简单介绍一下. [WebMethod] public static string SayHe ...
- android studio gradle 两种更新方法更新
android studio gradle 两种更新方法更新 第一种.Android studio更新 第一步:在你所在项目文件夹下:你项目根目录gradlewrappergradle-wrapper ...
随机推荐
- 2个CDH的hive数据同步
算法和数仓共用一套hive数据: CM: 真实数据: 都存在共享存储: oss, s3,ufile上. CDH配置能访问的权限(key)
- poj1584(判断凸包+求点到线段的距离)
题目链接:https://vjudge.net/problem/POJ-1584 题意:首先要判断凸包,然后判断圆是否在多边形中. 思路: 判断凸包利用叉积,判断圆在多边形首先要判断圆心是否在多边形中 ...
- VS2010 MFC的按钮风格改变
改变VS2010 MFC的按钮风格 VS2010建的MFC工程按钮默认的风格类似VC6.0(直角矩形),如想美观按钮改为WIN7的按钮风格(圆角矩形),只需在代码中找到头文件"stdafx. ...
- HashSet和HashMap
HashMap 概念和特征 概念:以键值对的形式存储数据,由键映射到值,核心在于Key上. 特征:键不能重复,值可以重复:key-value允许为null. HashMap Since ...
- image analogies笔记
Image Analogies 个人学习笔记, 根基尚浅, 免不得颇多纰漏, 望批评指教. 这是一篇2001年的文章, 其核心主要讲了如何将一对图片之间的"转换模式"应用到其他图片 ...
- Python开发【杂货铺】:作用域的痛点
1.块级作用域 想想此时运行下面的程序会有输出吗?执行会成功吗? #块级作用域 if 1 == 1: name = "lzl" print(name) for i in range ...
- WINDOWS记事本的换行\r\n
今天发现,\r\n才能换行,好像记事本不能改.
- C#对象转换工具类
using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy ...
- (六)Redis之数据结构之Set
一.常用方法 和List类型不同的是,Set集合中不允许出现重复的元素 添加/删除元素 获取集合中的元素 集合中的差集运算 集合中的交集运算 集合中的并集元算 扩展命令 1和2 添加/删除元素和获取集 ...
- Unable to resolve service for type 'Microsoft.AspNetCore.Http.IHttpContextAccessor'
An unhandled exception occurred while processing the request. InvalidOperationException: Unable to r ...