J-Link RTT Viewer使用教程(附代码)

这篇具有很好参考价值的文章主要介绍了J-Link RTT Viewer使用教程(附代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 文章来源地址https://www.toymoban.com/news/detail-786583.html

RTT(Real Time Transfer)简介

使用教程

常用API介绍

RTT缓冲大小修改

使用printf重定向

官方例程


RTT(Real Time Transfer)简介

平常调试代码中使用串口打印log,往往需要接出串口引脚,比较麻烦,并且串口打印速度较慢,串口的中断可能会影响代码的执行效率。

SEGGER RTT支持使用J-link调试器输出来自目标微控制器的信息,也可以接收输入,并且在高速度交互的同时不会影响目标处理器的实时性,可以省掉平常打印日志用的串口。

SEGGER RTT可用于任何J-Link型号和任何支持后台内存访问的目标处理器,即Cortex-M和RX目标。

RTT支持两个方向、多个通道,上到主机,下到目标,它可以用于不同的目的,为用户提供尽可能多的自由。默认实现每个方向使用一个通道,用于可打印终端输入和输出。

使用J-Link RTT Viewer,可用于“虚拟”终端,允许打印到多个窗口(例如,一个用于标准输出,一个对于错误输出,一个用于调试输出)。

rtt viewer,ARM CORTEX-M底层技术,单片机,stm32,嵌入式硬件,驱动开发,mcu

SEGGER RTT的性能显著高于用于向主机PC输出数据的任何其他技术。平均一行文本可以在一微秒或更短的时间内输出。基本上相当于执行单个memcopy()的时间。在运行于168 MHz的STM32F407 Cortex-M4上进行了速度比较,如下图,其中不包括printf()调用的时间。

rtt viewer,ARM CORTEX-M底层技术,单片机,stm32,嵌入式硬件,驱动开发,mcu

将输出数据发送到主机的最大速度取决于目标缓冲区大小和目标接口速度。即使使用512字节的小目标缓冲区,RTT速度也可能高达1 MB/s,而常规J-Link型号的RTT速度可能高达0.5 MB/s。

rtt viewer,ARM CORTEX-M底层技术,单片机,stm32,嵌入式硬件,驱动开发,mcu

RTT上行信道的缓冲器可以相对较小。所需的最小缓冲区大小可以通过一毫秒内写入的数据量和一次写入操作中写入的最大值来近似得到。如果数据发送频率较低,则缓冲区应该有足够的空间用于一次写入发送的数据。如果数据发送频率更高,缓冲区大小应足以满足一毫秒内写入的最大数据量。下图显示了在168 MHz的SEGGER emPower评估板(NXP K66部件)下,使用J-Link PRO V4@36 MHz JTAG速度测量出的,每100 us和每1ms发送均匀分布的不同数据量时所需的最小缓冲区大小。

rtt viewer,ARM CORTEX-M底层技术,单片机,stm32,嵌入式硬件,驱动开发,mcu

rtt viewer,ARM CORTEX-M底层技术,单片机,stm32,嵌入式硬件,驱动开发,mcu

RTT实现代码为RAM中的控制块使用约500字节的ROM和24字节ID+24字节每个通道。每个通道都需要一些缓冲区内存。根据输入/输出的负载,上行通道的建议大小为1 kByte,下行通道的建议值为16至32 Byte。

rtt viewer,ARM CORTEX-M底层技术,单片机,stm32,嵌入式硬件,驱动开发,mcu

使用教程

1.首先安装J-Link的软件驱动:SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace

2.安装完成后,打开J-Link的安装目录(开始->SEGGR->J-Link RTT Viewer->右键打开文件所在位置->然后继续右键打开文件所在位置->此时就是安装目录了),

rtt viewer,ARM CORTEX-M底层技术,单片机,stm32,嵌入式硬件,驱动开发,mcu

找到如下路径SEGGER\JLink\Samples\RTT,解压路径里面的压缩包SEGGER_RTT_V770c.zip(不同的版本,V后面的数字可能不一样)。

rtt viewer,ARM CORTEX-M底层技术,单片机,stm32,嵌入式硬件,驱动开发,mcu

3.将解压完的文件拷贝到代码工程目录中。

4. MDK工程下新建一个RTT的文件夹,把解压的文件复制到RTT目录下,将这些文件添加到MDK的工程中,不要忘了还有头文件目录。

rtt viewer,ARM CORTEX-M底层技术,单片机,stm32,嵌入式硬件,驱动开发,mcu

5.工程加入文件后,在想要用到RTT的文件中包含#include "SEGGER_RTT.h",然后直接调用SEGGER_RTT_printf()就好了,例如SEGGER_RTT_printf(0,"Hello RTT~");这个和C语言的printf的格式差不多,就是前面加了一个端口0的参数,代码编辑后编译无错误后下载。

6.然后点击开始->SEGGR->J-Link RTT Viewer,打开J-Link RTT Viewer 选择好你的芯片型号后,点击确认。在很多设备上RTT地址是可以自动是被识别到的,对于不能自动识别的设备,需要自行输入RTT地址,RTT地址即为代码中结构体_SEGGER_RTT的地址。

rtt viewer,ARM CORTEX-M底层技术,单片机,stm32,嵌入式硬件,驱动开发,mcu

7.然后就能看到我们打印的内容了。

rtt viewer,ARM CORTEX-M底层技术,单片机,stm32,嵌入式硬件,驱动开发,mcu

常用API介绍

1.void SEGGER_RTT_Init (void); RTT初始化函数,应放于程序开始阶段。

2. int SEGGER_RTT_GetKey (void);从RTT终端获取一个按键字符。

    int c;
    c = SEGGER_RTT_GetKey();
    if (c == 'q') {
        exit();
    }

3.int SEGGER_RTT_HasKey (void);检测缓存区中是否还有字符

   if (SEGGER_RTT_HasKey()) {
      int c = SEGGER_RTT_GetKey();
   }

4. int SEGGER_RTT_printf (unsigned BufferIndex, const char * sFormat, …);格式化输出字符串,同时可以使用SEGGER_RTT_printf()来设置字体颜色还背景颜色。

rtt viewer,ARM CORTEX-M底层技术,单片机,stm32,嵌入式硬件,驱动开发,mcu

SEGGER_RTT_printf(0,RTT_CTRL_BG_WHITE”RTT TEST\r\n”);
SEGGER_RTT_printf(0,RTT_CTRL_TEXT_BLUE”RTT TEST\r\n”);

5.void SEGGER_RTT_SetTerminal(char TerminalId);设置虚拟终端ID, 下面示例中,SEGGER_RTT_WriteString中的0参数,是通道号,不是终端号。

//
// Send a string to terminal 1 which is used as error out.
//
SEGGER_RTT_SetTerminal(1); // Select terminal 1
SEGGER_RTT_WriteString(0, "ERROR: Buffer overflow");
SEGGER_RTT_SetTerminal(0); // Reset to standard terminal

6. int SEGGER_RTT_WaitKey (void);检测缓存区中是否还有字符。

   int c = 0;
    do {
        c = SEGGER_RTT_WaitKey();
    } while (c != 'c');

RTT缓冲大小修改

有时候我们的信息不能完全的打印出来,可能是因为缓冲不够,默认缓冲区大小事1K字节,如果不够可以改大一点。修改SEGGER_RTT_Conf.h文件中的#define BUFFER_SIZE_UP的值。

rtt viewer,ARM CORTEX-M底层技术,单片机,stm32,嵌入式硬件,驱动开发,mcu

使用printf重定向

项目中使用printf的地方非常多,如果可以直接修改printf重定向到RTT组件,则会非常方便。使用的方法是直接使用RTT提供的API实现fputc。

#include <stdio.h>
int fputc(int ch, FILE *f)
{
    SEGGER_RTT_PutChar(0,ch);
    return ch;
}

官方例程

/*********************************************************************
* SEGGER Microcontroller GmbH *
* Solutions for real time microcontroller applications *
**********************************************************************
* *
* (c) 1995 - 2018 SEGGER Microcontroller GmbH *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
----------------------------------------------------------------------
File : RTT.c
Purpose : Simple implementation for output via RTT.
It can be used with any IDE.
---------------------------- END-OF-HEADER ---------------------------
*/
#include "SEGGER_RTT.h"
static void _Delay(int period) {
int i = 100000*period;
do { ; } while (i--);
}
int main(void) {
int Cnt = 0;
SEGGER_RTT_WriteString(0, "Hello World from SEGGER!\n");
do {
SEGGER_RTT_printf(0, "%sCounter: %s%d\n",
RTT_CTRL_TEXT_BRIGHT_WHITE,
RTT_CTRL_TEXT_BRIGHT_GREEN,
Cnt);
if (Cnt > 100) {
SEGGER_RTT_TerminalOut(1, RTT_CTRL_TEXT_BRIGHT_RED"Counter overflow!");
Cnt = 0;
}
_Delay(100);
Cnt++;
} while (1);
return 0;
}
/*************************** End of file ****************************/

 

 

 

到了这里,关于J-Link RTT Viewer使用教程(附代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • J-LINK J-FLASH 下载STM32单片机程序使用教程

    J-LINK J-FLASH 下载程序使用教程 -V1.0 2023.05.09 Introduction 本教程用于演示如何使用JLINK V9配套J-FLASH软件烧写更新MCU程序的教程 安装提供的 JLINK驱动程序。JLink_Windows_V722a.rar。全程默认安装,只能安装在C盘,不可安装于其它盘。 安装驱动完成后,将JLINK V9仿真器上USB口插上电脑,

    2024年02月11日
    浏览(38)
  • UI Automator Viewer的使用

    uiautomatorviewer是android SDK自带的工具。通过截屏并分析XML布局文件的方式,为用户提供控件信息查看服务。该工具位于SDK目录下的tools子目录下。可以看到,它是通过bat文件启动的。 (提前打开、连接手机、启动Appium) 启动界面如下 单击:第二按钮(Device Screenshoot uiautomator

    2024年02月09日
    浏览(36)
  • Odrive 学习系列三:在odrive工程中添加SEGGER RTT 日志输出功能

    一、背景:         对于嵌入式来讲,有个日志输出真真真真的太重要啦!         SEGGER JLink自带的RTT日志输出对于老嵌入式而言更是开发利器。         Odrive本身的工程是不带这个功能的,尽管使用stlink可以查阅寄存器等,但感觉还是差了点意思。因此在本系列第二节的

    2024年01月17日
    浏览(33)
  • Windows使用VNC Viewer远程桌面Ubuntu【内网穿透】

    前言 实现ubuntu 系统桌面级别的远程连接,需要在ubuntu 系统中安装vnc,既然是桌面,前提是需要ubuntu 带有图形化界面,如果没有,可以执行以下命令安装图形化界面 1. ubuntu安装VNC 在ubuntu中安装vnc 安装LightDM【LightDM从设计上就是支持本地图形界面以获得最好的兼容性】 安装过程中会

    2024年02月04日
    浏览(43)
  • 3步教会你使用VNC Viewer远程连接控制树莓派桌面(详细)

    目录 1、查询IP地址 1.1、路由器后台查询 1.2、树莓派内查询 2、开启VNC服务 3、打开VNC Viewer进行连接 打开路由器后台,我这以腾达为例,在浏览器输入“ 192.168.0.1 ”进入后台,然后找到所有用户。下图可以看见有一个地址叫“ raspberrypi ”的很明显就是树莓派,很直观就能看

    2024年02月08日
    浏览(43)
  • MATLAB的Viewer3D工具箱引入及使用方式

    目录 一、工具箱的导入 二、工具箱的使用方法 由于MATLAB没有直接给出重建后的三维图像进行展示的方式,因此需要借助工具箱Viewer3D来辅助完成展示的工作,以下是工具箱的导入和使用方法,希望对大家有帮助。 1、打开MATLAB,点击主页,找到附加功能 2、 点击附加功能,

    2024年02月05日
    浏览(43)
  • elementui ui对el-image-viewer的简单封装及使用

    在项目中,会有对图片预览查看的需求。当使用el-dialog进行图片预览实现时,会出现长图片占满整个浏览器,致使图片不能完整的显示的情况,这对使用者的体验非常不友好,使用elementui提供的el-image-viewer就能解决这个问题。            1.注册组件 2.使用组件   好了,一个

    2024年02月11日
    浏览(40)
  • uniapp中使用photo-sphere-viewer.js实现全景VR图

    最近项目中要求vr功能,可以进行图片的全景查看,在此,用到了vue里的一个实现全景预览的插件:photo-sphere-viewer.js。这些插件,在uniapp中不能直接用。不过uniapp有个组件web-view,可以引入内部或外部的HTML。 首先写一个html,在html中引入三个js文件 在body中放一个div 在js中ne

    2024年02月11日
    浏览(59)
  • vue3+elementplus点击按钮使用el-image-viewer图片预览组件

    1.首先确保你是全局引入,不是全局的需要自主引入该组件 2..vue文件中定义组件 3. showsrcListref:[\\\'\\\']格式 4.点击按钮给showsrcListref赋值即可完成,同时将showImagePreview置为true

    2024年01月18日
    浏览(57)
  • Edraw Office Viewer 8.X Edraw Office Viewer Crack

    用于托管 Office 文档(包括 Microsoft Word、Microsoft Excel、Microsoft PowerPoint、Microsoft Project 和 Microsoft Visio 文档)的 ActiveX 文档容器 使您的应用程序显示并与 MS Office 文件交互 查看器组件包含一个标准的 ActiveX 控件,将它充当 ActiveX 文档容器,用于在自定义表单或网页中托管 Offi

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包