Segger RTT的使用

一般arm系统中,如何通过电脑键盘和显示器同mcu进行交互最有效的有两种形式:arm7的semihost,cm时代的traceswo。现在jlink推出了颇具特色的rtt无需SWO引脚,且速度更快三者的比较如下图:

 

RTT( Real Time Terminal)是SEGGER公司在jlink V4.90之后,针对Cortex-M和RX系列推出的嵌入式应用与用户进行交互的实时终端。MCU通过J-link与电脑连接并将打印信息输出到电脑上,电脑同时可以通过键盘等向MCU发送数据。无需复杂的工程配置,没有MCU内核的限制,并且打印字符还非常的流畅。其实现原理就是J-link与MCU共享内存。

速度取决于the target buffer size。

使用方法参考:

SEGGER-RTT调试(代替串口printf输出)的使用方法

http://blog.csdn.net/yanyuzuixin/article/details/68953131

http://blog.csdn.net/Maple_Leaf_15/article/details/51020003

使用条件:

  1. 安装jlink驱动jlink V4.90以后的最新版本,可以看到考安装目录下有3个应用软件,都可以作为查看的方法。
  1. 官网下载或者安装目录下接下RTT包:安装目录:C:\Program Files (x86)\SEGGER\JLink_V612\Samples\RTT\SEGGER_RTT_V612.zip

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

RTT介绍:

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

  1. 将解压后得到四个文件

SEGGER_RTT.c、SEGGER_RTT.h、SEGGER_RTT_Conf.h”

SEGGER_RTT_printf.c:无需添加标准库<stdio.h>,当然也提供了重定向(RTT_Syscalls_KEIL.c/RTT_Syscalls_IAR.c/RTT_Syscalls_GCC.c)

  1. 用法:

2.1配置:新工程的使用:添加SEGGER_RTT.c和SEGGER_RTT_printf.c到工程文件夹下,并设定SEGGER_RTT.h、SEGGER_RTT_Conf.h的头文件路径;而若要取代SWO则是去掉Retarget.c这个重定向文件,只包含EGGER_RTT.c和RTT_Syscalls_KEIL.c/RTT_Syscalls_IAR.c。

2.2  在源代码中包含RTT头文件并初始化:

2.3在需要输出log的地方调用SEGGER_RTT_printf();函数输出打印。该函数用法和printf函数类似,只是多了一个参数用来指定RTT通道。其中通道0,就是我们在调试时使用的通道。在主函数中添加如下代码。

  • 最简单易用的两个函数是

    • SEGGER_RTT_ConfigUpBuffer(0,NULL,NULL,0,SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL):非必要的初始化(不知有什么用?)。它是官方例程RTT_Implementation_141217-Examples-Main_RTT_PrintfTest.c的第一句
    • SEGGER_RTT_WriteString(0,"字符串"):直接输出字符串
    • SEGGER_RTT_printf(0,"字符串",输出格式):相当于printf,可以输出各种数据类型
    • 查看RTT输出的工具有三个:
      • RTTViewer:不支持中文。至少要进入一次Debugger才能正常显示输出。建议进入Debugger之后再打开,否则经常不能正常显示输出
      • RTTLogger:支持中文,并且可以保存为log文件。使用具体的正确使用方法不清楚。根据手册说明,,"字符串",输出格式)。但是实测,只能输出RTT通道0的信息,并且要求代码中要有使用到通道1的语句。否则收不到数据,只要连接jlink不要进入debug也有信息输出
      • RTTClient:必须配合RTTLogger或者keil的Debugger来使用,而RTTLogger也必须配合Debugger使用。Client、Logger和Debugger三个窗口都打开的时候,Client和Logger只有其中一个能正常显示,另外一个会严重丢失数据。
      • 无论哪个查看RTT的工具,都会丢失数据。可能与输出函数的使用频率过高有关(?)。加大SEGGER_RTT_Conf.h中的#define BUFFER_SIZE_UP的值可以有效降低丢失率。
      • 从开始菜单栏找到J-Link User Manual (UM08001)文档,里面有JLink各个工具的说明

2.3查看终端:有三种方法都可以,在jlink的驱动安装目录下有三个应用软件

RTT Viewer this channel(0) can be used for multiple "virtual" terminals output  and keyboard input, allowing to print to multiple windows (e.g. one for standard output , one for error output, one for debugging output) with just one target buffer. An additional up (to host) channel can for example be used to send profiling or event tracing data.

可以向单片机传送按键值和字符串,如下图再输入框中输入,再单片机中用以下来接收

len=SEGGER_RTT_Read(0, mybuf, 10);
if(len)
{
Vol=atof(mybuf);
value =(Vol/3.30 + EPS)*65536;

J-Link RTT Client:功能简单

J-Link RTT Logger(Channel 1):opens a dedicated connection to J-Link and can be used stand-alone, without running a debugger.

RTT输入检测

首先在程序中添加SEGGER_RTT_Read(0,rtt_buf,sizeof(rtt_buf));

其次在J-Link RTT Viewer控制台的Input里面选择Sending/Send on Enter,然后End of Line选择None

这样就可以通过下方输入框输入信息,按Enter发送

这样,程序里面接收数组rtt_buf就是输入框所输入的信息

扩展阅读:Jlink RTT弱爆了,Jlink Scope来啦

http://blog.csdn.net/Airbnb/article/details/41494335

jlink示波器来啦!!
普通jlink只能同时显示10个变量,采样率为50hz
jlink pro和jlink ultra可以同时显示100个变量,采样率无限制(受限于USB带宽)

使用方法:
下载4.90e安装,
目录下找到JScope.exe启动,
配置参数,如下图,选择芯片,接口类型
添加要观察的变量
启动示波器
OK

无需仿真环境,程序下载到芯片,连接jlink就可以了,也就是不需要IAR或MDK运行。
JScope不像RTT那样需要在工程中添加C文件和H文件,JLINK在后台自动读取变量并显示

RTT的更多相关文章

  1. STM32 使用 printf 发送数据配置方法 -- 串口 UART, JTAG SWO, JLINK RTT

    STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) http://home.eeworld.com.cn/my/space-uid-338727-blogid-47 ...

  2. Segger RTT : Real Time Terminal SRAM 调试解决方法

    http://segger.com/jlink-real-time-terminal.html Real Time Terminal SEGGER's Real Time Terminal (RTT) ...

  3. glsl水包含倒影的实现(rtt) [转]

    转自 http://blog.sina.com.cn/s/blog_78ea87380101eixi.html 此文实现一个简单地水面倒影效果,通过rtt相机 获取倒影纹理, 水的基本实现方法(参考前 ...

  4. 在windows下如何配置RTT开发环境?

    之前一直使用MDK查看和编译RTT的源码,这几天无聊想起RTT官方提供使用scons工具编译RTT,因此想试试这种方法,做下此笔记,以供入门者参考. 注 1 下载安装Python2.7 论坛中很多人说 ...

  5. 三十天学不会TCP,UDP/IP网络编程 -- RTT的计算

    欢迎去gitbook(https://www.gitbook.com/@rogerzhu/)看到完整版. 如果对和程序员有关的计算机网络知识,和对计算机网络方面的编程有兴趣,虽然说现在这种“看不见”的 ...

  6. 【安富莱专题教程第6期】SEGGER的J-Scope波形上位机软件,RTT模式波形上传速度可狂飙到500KB/S左右

    说明:1.在实际项目中,很多时候,我们需要将传感器或者ADC的数值以波形的形式显示.通常的解决办法是用串口上位机,USB接口上位机或者MDK的逻辑分析仪功能,使用这三种方式都比较繁琐.本期专题为大家讲 ...

  7. 【安富莱专题教程第5期】工程调试利器RTT实时数据传输组件,替代串口调试,速度飞快,可以在中断和多任务中随意调用

    说明:1.串口作为经典的调试方式已经存在好多年了,缺点是需要一个专门的硬件接口.现在有了SEGGER的RTT(已经发布有几年了),无需占用系统额外的硬件资源,而且速度超快,是替代串口调试的绝佳方式.2 ...

  8. RTT(往返时间)和RPC

    RTT(Round-Trip Time)往返时间在计算机网络中它是一个重要的性能指标.表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认,不包含数据传输时间)总共经 ...

  9. 什么是渲染目标(render target)&& 渲染到纹理(Render To Texture, RTT)详解

    渲染到纹理(Render To Texture, RTT)详解 RTT是现在很多特效里面都会用到的一项很基本的技术,实现起来很简单,也很重要.但是让人不解的是网上搜索了半天只找到很少的文章说这个事儿, ...

  10. learning ddr RTT

    Rtt: Dynamic ODT.DDR3引入的新特性.在特定的应用环境下为了更好的在数据总线上改善信号完整性, 不需要特定的MRS命令即可以改变终结强度(或者称为终端匹配).在MR2中的A9和A10 ...

随机推荐

  1. 学习c编程的第二天

    函数又叫方法,是实现某项功能或完成某项任务的代码块 #include<stdio.h>void show(){ printf("I like c language"); ...

  2. tflearn数据预处理

    #I just added a function for custom data preprocessing, you can use it as: minmax_scaler = sklearn.p ...

  3. slim.flatten——将输入扁平化但保留batch_size,假设第一维是batch

    slim.flatten(inputs,outputs_collections=None,scope=None) (注:import tensorflow.contrib.slim as slim) ...

  4. JavaWeb----文件的上传和下载

    一.开发环境搭建 创建一个FileUploadAndDownLoad项目,加入Apache的commons-fileupload文件上传组件的相关Jar包,如下图所示: 二.实现文件上传 2.1.文件 ...

  5. bzoj4144

    最短路+最小生成树 有点忘了... 这题只要判断能不能就行了 具体做法是把所有加油站放到堆里然后跑dij,然后把边权w=d[u]+d[v]+w,跑最小生成树 对于点对(x,y)是否能到达只要判断最大瓶 ...

  6. CS231n 2016 通关 第三章-Softmax 作业

    在完成SVM作业的基础上,Softmax的作业相对比较轻松. 完成本作业需要熟悉与掌握的知识: cell 1 设置绘图默认参数 mport random import numpy as np from ...

  7. ubuntu下使用锐捷校园网

    前言           以下内容是个人学习之后的感悟,转载请注明出处~ 1.首先下载锐捷Linux版本,然后解压缩后,有个rjsupplicant.sh这个脚本文件,于是按照README做了,终端中 ...

  8. .NET Framework4网站 无法运行,提示找不到网络名,IO错误等解决办法

    .NET Framework4网站 无法运行,提示找不到网络名,IO错误等解决办法 我的这个问题解决了,原因是用的远程桌面连接的服务器, 远程桌面中部署网站的文件夹,引用的竟然是连接此服务器的用户的电 ...

  9. Visual Studio 2013 Update 1

    Visual Studio 2013 Update 1 VS2013.1.iso 共 245 MB http://download.microsoft.com/download/8/2/6/826E2 ...

  10. idea创建vue项目,Terminal安装npm的淘宝镜像:'npm' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

    原因: 安装node.js时,不是默认路径安装,环境变量找不到npm,需要改环境变量配置: 原下: 找到安装node.js的安装路径: 改后: 成功: npm i -g cnpm --registry ...