4

使用J-Link也能实现串口打印输出数据的功能

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzI4MDI4MDE5Ng%3D%3D&%3Bmid=2247497324&%3Bidx=1&%3Bsn=947e367ccf7179fa9c246eef5518d6ae
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

关注+ 星标公众 ,不错过精彩内容

n6ryemn.gif!mobile

作者 | strongerHuang

微信公众号 | 嵌入式专栏

嵌入式软件基本都会存在打印输出数据的情况,我们最常见就是串口打印输出。

如果我们手里没有232转USB,或者TTL转USB工具,此时,使用J-Link工具同样也可以实现串口打印输出数据的功能。

下面就来讲讲使用J-link的『RTT Viewer』功能实现打印输出的方法:

1 概述

SWO: S erial Wire Output,串行线输出

RTT: Real Time Transfer,实时传输

前面SWO文章,实现原理是通过MCU的SWO引脚输出信息(到显示终端SWV)。

而本文讲述的RTT不需要通过额外SWO引脚,即可实现printf输出,而且性能(耗时)远高于SWO。

n6jQZjf.png!mobile

2 关于RTT

SEGGER实时传输(RTT)是一种在嵌入式应用中实现交互式用户I/O的技术。

它结合了SWO和半主机( semihosting)的优点,具有很高的性能。

使用RTT,可以从目标微控制器输出信息,并以非常高的速度向应用程序发送输入,而不会影响目标的实时性。

F3iayy.jpg!mobile

Cortex - M0不支持SWO,而本文讲述的RTT则支持Cortex - M0,文末提供STM32F0工程。

3 关于J-Link RTT Viewer

J-Link RTT Viewer是在调试主机上使用RTT功能的 Windows GUI应用程序

RTT Viewer可以独立使用,打开自己与J-Link的连接,并与正在运行的调试会话目标或并行,连接到它并使用现有的J-Link连接。

RTT Viewer支持RTT的主要功能:

· 通道0上的终端输出

· 将文本输入发送到通道0

· 最多16个虚拟终端,只有一个目标通道

· 控制文本输出:彩色文本,擦除控制台

· 在通道1上记录数据

·

·

yEzUv2.jpg!mobile

本文主要结合J-Link RTT Viewer讲述 ,当然支持RTT的还有J-Link RTT Client 和J-Link RTT Logger。

更多相关介绍,可以参看:

https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer

(公号不支持外链接,请复制链接到浏览器打开)

4 获取RTT源码

我们需要在工程中添加RTT源码,同时需要J-Link RTT Viewer查看器支持。

J-Link / J-Trace下载地址(Windows版本):

https://www.segger.com/downloads/jlink/JLink_Windows.exe

安装之后,在安装目录下包含RTT源码:

C:\Program Files (x86)\SEGGER\JLink\Samples\RTT

解压SEGGER_RTT_V***.zip之后,复制整个RTT目录源码到你工程。

提示:

解压之后,只需复制RTT目录就行。

4.1 添加RTT到工程

添加源码文件到工程主要有两个步骤:1.添加源码文件到工程。2.添加文件路径。

n2qEBzM.jpg!mobile

这里不讲述具体添加过程,Keil 和 IAR之前有讲述,请参看我的文章:

Keil新建基础软件工程

IAR新建基础软件工程

当然,我下面有提供添加好的源码工程。

4.2 应用程序

调用RTT的打印,和常规的printf类似。

添加头文件:#include "SEGGER_RTT.h"

再调用SEGGER_RTT_printf函数打印输出:

BR7nIbj.jpg!mobile

这里SEGGER_RTT_printf和print不同的是:前面多了一个“终端号”参数。(我们使用终端0)

5 RTT Viewer配置、输出

和前面讲述的SWV查看器类似,配置相关信息即可输出。

安装目录:C:\Program Files (x86)\SEGGER\JLink

下载程序到MCU,连接J-Link,打开安装目录下的J-Link RTT Viewer,配置参数:

rIBjYje.jpg!mobile

输出效果:

fUz2Yfi.jpg!mobile

6 下载

为方便大家理解,提供源码工程下载,参考代码:

STM32F051(HAL)_JLink-RTT

STM32F103(HAL)_JLink-RTT

百度网盘:

https://pan.baidu.com/s/1aYBuHtOgtLqLvj6SsMYlQA

提取码:nbd3

提示:

1.公众号不支持外链接,请复制链接到浏览器打开。

2.源码仅供个人学习参考,不一定适用于实际项目。

3.若链接失效,请关注公众号,回复『printf系列教程』获取最新链接。

7

1.该文档仅供个人学习使用,版权所有,禁止商用。

2.本文由我一个人编辑并整理,难免存在一些错误。

3.本文收录于公众号『 嵌入式专栏 』,关注微信公众号回复【 printf系列教程 】即可查看全系列教程。同时获得该教程对应的PDF教程。。 

Uvy67jv.jpg!mobile

------------  END   ------------

推荐阅读:

精选汇总 | 专栏 | 目录 | 搜索

精选汇总 | ARM、Cortex-M

精选汇总 | ST工具、下载编程工具

关注 微信公众号『嵌入式专栏』,底部菜单查看更多内容,回复“ 加群 ”按规则加入技术交流群。

FveMruq.jpg!mobile

点击“ 阅读原文 ”查看更多分享,欢迎 点分享、收藏、点赞、在看。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK