RTT
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
使用条件:
- 安装jlink驱动(jlink V4.90以后的最新版本),可以看到考安装目录下有3个应用软件,都可以作为查看的方法。
- 官网下载或者安装目录下接下RTT包:安装目录:C:\Program Files (x86)\SEGGER\JLink_V612\Samples\RTT\SEGGER_RTT_V612.zip
官网:https://www.segger.com/downloads/jlink/JLink_Windows.exe
RTT介绍:
。
- 将解压后得到四个文件
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)
- 用法:
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的更多相关文章
- STM32 使用 printf 发送数据配置方法 -- 串口 UART, JTAG SWO, JLINK RTT
STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) http://home.eeworld.com.cn/my/space-uid-338727-blogid-47 ...
- Segger RTT : Real Time Terminal SRAM 调试解决方法
http://segger.com/jlink-real-time-terminal.html Real Time Terminal SEGGER's Real Time Terminal (RTT) ...
- glsl水包含倒影的实现(rtt) [转]
转自 http://blog.sina.com.cn/s/blog_78ea87380101eixi.html 此文实现一个简单地水面倒影效果,通过rtt相机 获取倒影纹理, 水的基本实现方法(参考前 ...
- 在windows下如何配置RTT开发环境?
之前一直使用MDK查看和编译RTT的源码,这几天无聊想起RTT官方提供使用scons工具编译RTT,因此想试试这种方法,做下此笔记,以供入门者参考. 注 1 下载安装Python2.7 论坛中很多人说 ...
- 三十天学不会TCP,UDP/IP网络编程 -- RTT的计算
欢迎去gitbook(https://www.gitbook.com/@rogerzhu/)看到完整版. 如果对和程序员有关的计算机网络知识,和对计算机网络方面的编程有兴趣,虽然说现在这种“看不见”的 ...
- 【安富莱专题教程第6期】SEGGER的J-Scope波形上位机软件,RTT模式波形上传速度可狂飙到500KB/S左右
说明:1.在实际项目中,很多时候,我们需要将传感器或者ADC的数值以波形的形式显示.通常的解决办法是用串口上位机,USB接口上位机或者MDK的逻辑分析仪功能,使用这三种方式都比较繁琐.本期专题为大家讲 ...
- 【安富莱专题教程第5期】工程调试利器RTT实时数据传输组件,替代串口调试,速度飞快,可以在中断和多任务中随意调用
说明:1.串口作为经典的调试方式已经存在好多年了,缺点是需要一个专门的硬件接口.现在有了SEGGER的RTT(已经发布有几年了),无需占用系统额外的硬件资源,而且速度超快,是替代串口调试的绝佳方式.2 ...
- RTT(往返时间)和RPC
RTT(Round-Trip Time)往返时间在计算机网络中它是一个重要的性能指标.表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认,不包含数据传输时间)总共经 ...
- 什么是渲染目标(render target)&& 渲染到纹理(Render To Texture, RTT)详解
渲染到纹理(Render To Texture, RTT)详解 RTT是现在很多特效里面都会用到的一项很基本的技术,实现起来很简单,也很重要.但是让人不解的是网上搜索了半天只找到很少的文章说这个事儿, ...
- learning ddr RTT
Rtt: Dynamic ODT.DDR3引入的新特性.在特定的应用环境下为了更好的在数据总线上改善信号完整性, 不需要特定的MRS命令即可以改变终结强度(或者称为终端匹配).在MR2中的A9和A10 ...
随机推荐
- UITabBar 设置选中、未选中状态下title的字体颜色
一.如果只是设置选中状态的字体颜色,使用 tintColor 就可以达到效果 self.tabBar.tintColor = [UIColor redColor]; 二.但如果要将未选中状态和选中状 ...
- codevs 1012 最大公约数和最小公倍数问题
题目描述 Description 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整 ...
- hdu-5749 Colmerauer(单调栈)
题目链接: Colmerauer Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Oth ...
- RetHad6.7离线通过.rpm安装
必须有RetHad6.7系统的.ios镜像文件,我们需要的.rpm都在镜像的Packages里面,针对不能联网的,并且也适用与CentOS系统 1. 查看版本号 参考我的博客 https://www. ...
- B - Sea and Islands
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Description A map ...
- 1-2关键字 & 2-1什么是变量
2-1什么是变量 驼峰第一个字母首字母小写后面字母首字母大写 Pascal命名规范:
- JAVA基础--JAVA API常见对象(其他API)13
一.其他API 1.System类 system类中的方法和成员变量都是静态的, 不需要创建System对象就可以直接使用. /* * 演示System的使用 */ public class Syst ...
- E20180712-hm
directive n. 指令; <美>命令,训令,指令; 方针;
- Codeforces Round #439 (Div. 2)C - The Intriguing Obsession(简单dp)
传送门 题意 给出三个集合,每个集合的元素数量为a,b,c,现在需要连边,满足集合内元素不可达或最短路为3,求可行方案数 分析 设dp[i][j]为a集合元素为i个,b集合元素为j个的可行方案,易知( ...
- 51nod1352(exgcd)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1352 题意:中文题诶- 思路:exgcd 显然题目可以描述为: ...