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

  • 相关阅读:
    UITabbarItem只显示图标
    [转]translatesAutoresizingMaskIntoConstraints详解
    [转载]podfile语法
    获取数组NSArray元素的className
    HTTP的FormData和Payload的传输格式
    WCDB错误"No matching constructor for initialization of 'WCTColumnBinding'"
    UIStakView的添加与移除
    为什么说Python采用的是基于值的内存管理模式?
    PostgreSQL数据库
    标准库 time
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12007396.html
Copyright © 2020-2023  润新知