zoukankan      html  css  js  c++  java
  • 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功能再写一遍记录文档。

  • 相关阅读:
    HTML 基础 元素 标签
    HTML5 元素介绍
    网站程序 模板下载 下载 ftp
    域名解析和空间绑定
    如何选择云虚拟主机操作系统?
    网站备案查询
    响应式网站01
    项目中使用百度统计和友盟统计
    项目中使用http referer,为了盗取图片资源
    vue-awesome-swiper中的数据异步加载
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12007396.html
Copyright © 2011-2022 走看看