1.printfԴ?源码?????
2.printf系列教程00_概述printf各种打印输出方法和相关内容
3.printf系列教程04_SWO打印输出配置,基于IAR『Terminal IO』
printfԴ?下载?????
SWO(Serial Wire Output)串行线输出是单引脚、异步串行通信,源码适用于Cortex-M3/M4/M7内核,下载主要通过ITM(Instrumentation Trace Macrocell)模块实现。源码ITM模块包含个刺激端口,下载4 16的源码允许不同的源码软件输出数据到不同端口,便于调试主机将消息分开。下载其中,源码SWO输出与串行线查看器(SWV)配合使用,下载需要一根SWO引脚进行连接。源码
本文主要介绍基于Keil『Debug(printf)Viewer』的下载SWO打印输出配置,结合STM、源码ST-link和J-link工具进行配置。下载为了理解ITM模块的源码输出,需要了解TPIU(Trace Port Interface Unit)跟踪端口接口单元,它是SWO引脚配置的关键部分。在STMCubeMX工具中,plp 源码通过Debug选项进行SWO引脚配置。
在Keil MDK-ARM中,通过配置跟踪Trace、设置CPU时钟和选择ITM端口实现SWO输出。若使用ST-Link或J-Link,需进行特定的配置步骤。ITM发送源码需要从核心源代码中获取,使用ITM_SendChar函数进行字符输出。修改ITM端口需调整源代码中对应的值,并确保已启用相应的ITM刺激端口。
为辅助学习,提供源码工程下载,包含STMF(HAL)_SWO和STMF(HAL)_SWO两个实例。下载链接在百度网盘,提取码为nbd3。请关注公众号以获取最新链接,源码仅供参考,redox源码可能不适用于所有实际项目。
本文旨在提供个人学习用的教程,内容由单人整理,可能存在错误。关注微信公众号『嵌入式专栏』可获取全系列教程。博客网址为strongerhuang.com,GitHub为github.com/EmbeddedDeve...,欢迎访问查看更多信息。
printf系列教程_概述printf各种打印输出方法和相关内容
说明: 本文为『strongerHuang』原创,首发于微信公众号『嵌入式专栏』,同时在个人网站EmbeddedDevelop上更新。 标签:printf、SWD、SWO、SWV、ITM、JLink-RTT、源码iosST-Link、J-Link、仿真、重定义、串口映射 一、写在前面 在MCU项目中,printf主要用于调试信息输出,如程序执行异常时显示错误提示。 前文在公众号『strongerHuang』发布文章《基于STM的多种printf用法》后,得到良好反馈,故整理成此详细教程系列。 目前整理的文章涵盖:UART打印输出
仿真打印输出
SWO打印输出
JLink-RTT打印输出
除了仿真,其他三种方式均基于MCU硬件实现打印输出,UART效率最低,SWO与JLink-RTT效率更高。 二、printf输出方式 本教程聚焦MCU的CubeExplore源码printf打印输出方法,常见方式包括:使用UART串口输出
仿真环境内的输出
SWO打印输出
JLink-RTT打印输出
除仿真外,其他三种为基于MCU硬件的打印输出,从效率看,UART < SWO < JLink-RTT。 每种printf输出方式各有应用场景,具备独特特点。 三、实验现象 通过实验现象了解printf内容,后续文章将详细配置。3.1 UART打印输出
UART是常见的打印输出方式,需占用硬件UART串口。3.2 仿真打印输出
在集成开发环境内模拟printf输出,无需连接物理开发板即可实现。3.3 SWO打印输出
SWO(Serial Wire Output)提供串行线输出,SWD(Serial Wire Debug)用于调试,SWV(Serial Wire Viewer)用于查看。 SWO输出需额外SWO引脚线,配合SWV查看器使用。 基于Keil的『Debug(printf)Viewer』 基于IAR的『Terminal IO』 基于ST-LINK Utility的『Serial Wire Viewer』 基于J-Link的『SWO Viewer』 说明:前两种工具可分别在ST-Link和J-link下查看,第三种专用于ST-Link,第四种专用于J-link。3.4 JLink-RTT打印输出
无需使用UART串口或额外SWO引脚,需在代码中添加相关配置。 四、软、硬件工具及其它说明 教程使用的软件和工具包含:STMCubeMX
Keil MDK-ARM
IAR EWARM
STM ST-LINK Utility
J-Link / J-Trace
硬件要求:MCU开发板(Cortex-M3、M4均可,本教程以STMF0、F1、F4系列为例)
下载调试器(ST-Link或J-Link)
PC(推荐Windows系统,兼容MDK-ARM)
额外说明:提供源代码工程下载
不推荐使用软件仿真,因开发板成本较低且仿真与实际可能存在差异
五、说明 文档仅供个人学习使用,禁止商用。由个人编辑整理,可能存在错误。教程同步更新于微信公众号『嵌入式专栏』,关注公众号回复printf系列教程查看。 博客:strongerhuang.com GitHub:github.com/EmbeddedDeve... 关注微信公众号『strongerHuang』,在底部菜单中查看更多内容!printf系列教程_SWO打印输出配置,基于IAR『Terminal IO』
SWO打印输出配置教程基于IAR『Terminal IO』 本文将深入讲解SWO(Serial Wire Output)的配置与应用,主要针对STM、ST-link和J-link工具进行解析。SWO为单引脚异步串行通信,可在Cortex-M3/M4/M7上使用。ITM(Instrumentation Trace Macrocell)模块为其实现基础,需连接SWO引脚以实现与SWV(Serial Wire Viewer)终端的通信。 一、SWO引脚与配置 SWO引脚可视为UART的Tx引脚,无连接则SWV终端无法接收打印信息。对于Cortex-M3/M4/M7内核的STM系列,其具备SWO功能。而Cortex-M0系列则无此功能,包含STMF0、STML0、STMG0等。STMCubeMX工具中进行Debug选项配置即可实现SWO功能。 二、IAR SWO输出配置 在IAR EWARM的『Terminal IO』中输出信息,需进行如下配置:在Project -> Options选项下,选择SWO功能与调试工具(ST-Link或J-Link),并完成相应配置。
进入调试模式,通过JLink菜单(ST-Link类似)配置SWO参数,包括时钟、ITM端口使能及PC采样。
修改ITM端口,如使用ITM端口1,调整相关代码实现。注意,若修改ITM端口,需使能对应ITM刺激端口。
三、输出效果与下载源码 完成配置后,输出效果可通过IAR EWARM的『Terminal IO』查看。为便于学习,已提供相应源码工程下载,包含STMF(HAL)_SWO、STMF(HAL)_SWO等。链接与提取码已提供。 四、注意点与说明该文档仅供个人学习,禁止商用。
教程内容可能存在错误,欢迎指正。
关注微信公众号『嵌入式专栏』,获取全系列教程。
五、相关链接与资源博客:strongerhuang.com
GitHub:github.com/EmbeddedDeve...
关注微信公众号『strongerHuang』,了解更多精彩内容!