segger_rtt使用帮助

article/2025/8/27 0:56:30

一、KEIL中添加[RTT_Syscalls_KEIL.c][SEGGER_RTT.c][SEGGER_RTT_printf.c],
并将文件夹[segger_rtt]添加到引用目录中。

二、在[SEGGER_RTT_printf.c]中顶部添加 #define NRF_LOG_USES_RTT 1

三、main()中初始化如下:
SEGGER_RTT_Init();
//初始化
SEGGER_RTT_printf(0, “csh\n\r”);//打印输出

四、引用头文件:
#include “SEGGER_RTT.h”

#include “SEGGER_RTT_Conf.h”

在这里插入图片描述

RTT:实时传输

1、添加上、下行数据缓冲区(上行到上位机、下行到目标板)

(1)SEGGER_RTT_ConfigUpBuffer()

buffer index:通道需要配置。必须比SEGGER_RTT_MAX_UP_CHANNELS。

sName:指向一个以0结尾的字符串,该字符串将作为通道的名字被展示

pBuffer: 指向一个缓冲区被通道使用。

bufferSize:缓冲区的大小,单位字节

flags:通道的标志位:阻塞或者未阻塞

(2)SEGGER_RTT_ConfigDownBuffer()

2、输出调试信息

(1)SEGGER_RTT_WriteString() 输出显示字符

(2)SEGGER_RTT_printf()普通信息输出,但不支持浮点数

在嵌入式开发过程中,经常会通过打印输出一些调试信息来调试参数、查找问题等,通常我的做法都是使用芯片的串口硬件设备配合串口助手软件来进行调试。但是这次项目的PCB硬件设计并未预留串口调试接口,所以想使用串口调试就不方便了。经过查找资料发现Segger 提供了一种非常方便的调试方式——自家的J-Link硬件配合J-Link RTT Viewer软件进行信息输入输出调试。

性能测试
RTT传输成功后,对其性能进行测试。测试代码如下所示,测试传输20k字节,耗时28.07ms。计算可知RTT通信速率为714k/s。相对于串口11.5k/s (115200bps)的速率,优势非常明显。在一些对时间敏感的场景,串口无法胜任,可考虑使用RTT。

SEGGER’s Real Time Transfer (RTT)是一种用于嵌入式应用的交互式用户I/O技术。它结合了SWO和半托管的优点,具有很高的性能。

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

SEGGER RTT可以与任何J-Link模型和任何支持的允许后台内存访问的目标处理器一起使用,它们是Cortex-M和RX targets。

RTT支持上行到主机和下行到目标的多个方向的信道,可以用于不同的目的,为用户提供了最大的自由度。

默认的实现为每个方向使用一个通道,用于可打印的终端输入和输出。在J-Link RTT Viewer中,此通道可以用于多个“虚拟”终端,允许仅使用一个目标缓冲区打印到多个窗口(例如,一个用于标准输出,一个用于错误输出,一个用于调试输出)。例如,可以使用附加的up (to host)通道发送分析或事件跟踪数据

RTT是如何工作的

实时传输使用目标内存中的SEGGER RTT控制块结构来管理数据的读写。该控制块包含一个ID,使其可以通过连接的J-Link和每个可用通道的环形缓冲区结构在内存中找到,描述了通道缓冲区及其状态。可用通道的最大数量可以在编译时配置,每个缓冲区可以在运行时由应用程序配置和添加。上下缓冲区可以分开处理。每个通道可以配置为阻塞或非阻塞(参见模式)。在阻塞模式下,当缓冲区满时,应用程序将等待,直到所有内存都可以写入,从而导致应用程序处于阻塞状态,但防止数据丢失。在非阻塞模式下,只写入缓冲区中适合的数据,或者根本不写入,其余的将被丢弃。这允许实时运行,即使没有连接调试器。开发人员不需要创建一个特殊的调试版本,代码可以保留在发布应用程序中。

定位控制块

当RTT在主机上处于活动状态时,无论是通过RTT Viewer这样的应用程序直接使用RTT,还是通过Telnet连接到使用J-Link(如调试器)的应用程序,J-Link都会自动在目标的已知RAM区域中搜索SEGGER RTT控制块。如果无法自动找到控制块,也可以通过主机应用程序设置物理内存区域或控制块的具体地址,以加快检测速度。

手动说明控制块位置

虽然自动检测RTT控制块位置对大多数目标都很好,但总是可以手动指定控制块的确切位置或指定J-Link在其中搜索控制块的具体地址范围。这是通过下面的J-Link命令字符串完成的:

SetRTTAddr

SetRTTSearchRanges

或者通过SEGGER TELNET Config String

以上翻译结果来自有道神经网络翻译(YNMT)· 计算机

在这里插入图片描述
图像显示了目标的简化结构。可以有任意数量的“Up缓冲区描述符”(目标->主机),以及任意数量的“Down缓冲区描述符”(主机->目标)。每个缓冲区的大小可以单独配置。

缓冲区中的灰色区域是包含有效数据的区域。

对于Up缓冲区,写入指针由目标写入,读取指针由调试探针(J-Link, Host)写入。

当读写指针指向同一个元素时,缓冲区为空。这确保了不会出现竞态条件。

需求

SEGGER RTT不需要任何额外的引脚或硬件,尽管有一个通过标准调试端口连接到目标的J-Link。它不需要对目标或调试环境进行任何配置,甚至可以在不同的目标速度下使用。
RTT可以与一个正在运行的调试会话并行使用,而不受干扰,也不需要任何IDE或调试器。

SEGGER RTT的性能明显高于任何其他用于向主机PC输出数据的技术。平均一行文本可以在1微秒或更短的时间内输出。基本上只有执行单个memcopy()的时间。

内存占用

RTT实现代码使用了大约500字节的ROM和24字节的ID + 24字节的每个通道用于RAM中的控制块。每个通道都需要一些内存作为缓冲区。向上通道的推荐大小为1kbyte,向下通道的推荐大小为16 ~ 32字节,具体大小取决于输入/输出的负载。

对实时行为的影响

在停止模式下,使用J-Link ULTRA+ @ 50mhz进行内存读取访问的典型停止时间:

JTAG @ 50 MHz 256 bytes, ~552us
在这里插入图片描述
JTAG @ 50 MHz 4 bytes, ~418us
在这里插入图片描述
JTAG @ 15 MHz 256 bytes, ~1.02ms
在这里插入图片描述
JTAG @ 15 MHz 4 bytes, ~718us
在这里插入图片描述


http://chatgpt.dhexx.cn/article/1d5rJyF9.shtml

相关文章

H7-TooL高速 DAPLINK仿真器,含全功能版 RTT Viewer

摘要:前几天分享了一篇使用JLink的RTT代替串口文章,没想到这两天安富莱家更新了H7-TOOL,并且包含了全功能版 RTT Viewer功能,试了一下感觉很不错。 有关于安富莱家的H7-TooL工具在前面我已经介绍过了,电子工程师必备的…

使用Jlink RTT工具打印日志

使用Jlink RTT工具打印日志 背景 平常调试代码中使用串口打印log,往往需要接出串口引脚,比较麻烦,并且串口打印速度较慢,串口的中断可能会影响代码的执行效率。 SEGGER RTT支持使用J-link调试器输出来自目标微控制器的信息&…

RTT打印log

目录 一、移植 RTT驱动 二、环境搭建 一、移植 RTT驱动 1、找到RTT驱动文件 (1) 在 J-Flash安装目录找到 RTT驱动文件并解压得到如下文件: (2) 找到 RTT配置文件: 2、在工程中添加 RTT 驱动: (1) 将以上文件复制到工程目录 (2) 将对应的头…

webrtc rtt 计算

Definitions RTT(Round-Trip Time): 往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。 一般认为单向时延…

《嵌入式 - 嵌入式大杂烩》详解J-Link RTT打印

开发环境: J-Link版本:V9.4 J-Link驱动版本:V760h_x86_64 Keil:V5.30 在嵌入式开发过程中,经常需要进行打印调试,通常使用串口进行打印输出,但通常串口资源有限,这时就可以通过J-Link工具里面自带的RTT实现打印,从而节约一个串口资源。 1 RTT简介 RTT全称是Real Ti…

RTT学习笔记8-RTT内核移植

RTT 内核移植接口 CortexM系列的内核移植 1.关闭中断 ;/* ; * rt_base_t rt_hw_interrupt_disable(void); ; */ rt_hw_interrupt_disable PROC ;PROC 伪指令定义函数EXPORT rt_hw_interrupt_disable ;EXPORT 输出定义的函数,类似于 C 语言 externMRS …

nordic 52832中添加RTT打印

JlinkRTT RTT是基于Jlink调试器的实时传输技术,可以代替串口打印一些调试信息,不需要额外接线。 nordic 52832官方例程中,会将RTT打印函数做进一步封装,下面就讲一下怎么开启52832中的RTT打印。 第一步 增加RTT代码 RTT源代码可以在segger官方网站下载,也可以在nordic 5…

计算机网络传输层——学习笔记

目录 传输层概述 多路复用和多路分解 协议 UDP协议 可靠数据传输协议(reliable data transfer protocol RDT) 经完全可靠信道的可靠数据传输:rdt 1.0 经具有比特差错信道的可靠数据传输:rdt 2.0 经具有比特差错的丢包信道的…

RTT简介及其简单应用

一、 裸机系统和多任务系统 裸机系统通常分为轮询系统和前后台系统。 轮询系统不难理解就是按照顺序从上往下反复来执行,伪代码如下: int main() {Init();while(1){/*事件1*/event1();/*事件2*/event2();/*事件3*/event3();} }前后台系统就是在轮询系统…

TCP中RTT时延的理解

最近服务器环境部署了tcprtt网络时延监控,发现不同服务器不同节点之间的RTT时延表象非常奇怪,无法准确的判断服务器的网络情况。因此需要弄清楚什么是RTT,以及能否作为服务器网络性能的检测指标。 1、RTT是什么? TCP中的RTT指的是…

FreeRTOS记录(四、FreeRTOS任务堆栈溢出问题和临界区)

本来计划是消息队列、信号量、任务通知、事件集、邮件的文章 但是因为自己调试的时候遇到了一个问题,还是把堆栈溢出问题放到前面来说 ..增加临界区的使用说明 2021/11/7 ..临界区的使用部分增加任务挂起与临界区说明 2021/11/26目录 任务…

1-FreeRTOS入门指南

本专栏是根据官方提供的文档进行FreeRTOS的各个功能函数的说明,以及函数的使用 本专栏不涉及动手操作,只是对原理进行说明,FreeRTOS基础知识篇更新完成会对如何在开发板上进行上手实战操作。 这里不会对比其他RTOS的优缺点,因为每…

freeRTOS调度

freeRTOS调度策略 背景 嵌入式的设备开发通常有两种模式:裸机开发和OS开发。像功能较为强大的SOC通常都会先一直linux或其他OS然后进行业务逻辑的开发;而单片机则有很多简单的应用场景直接使用裸机开发的模式,稍微复杂些的场景,会…

FreeRTOS 解析

目录 Task Task State Task Priority Idle Task Run Time Statistics Task Scheduling Single-core 单核处理器 AMP 非对称多核处理器 SMP 对称多核处理器 Context Switch Inter-task Communication and Synchronization Queue 队列 Binary Semaphore 二值信号量 …

FreeRTOS队列

在实际的应用中,常常会遇到一个任务或者中断服务需要和另外一个任务进行“沟通交流”,这个“沟通交流”的过程其实就是消息传递的过程。在没有操作系统的时候两个应用程序进行消息传递一般使用全局变量的方式,但是如果在使用操作系统的应用中…

FreeRTOS任务状态

1. 任务状态介绍 FreeRTOS中的任务状态,可以简单的分为运行态(running)和非运行态(not running)。 但是对于非运行态我们还可以继续细分: 阻塞状态(Blocked)暂停(挂起…

FreeRTOS延时

1、相对延时函数 将当前任务添加到阻塞列表pxDelayedTaskList,任务进入阻塞态。 vTaskDelay → prvAddCurrentTaskToDelayedList → vListInsert( pxDelayedTaskList, &( pxCurrentTCB->xStateListItem ) )。任务的阻塞时间更新到状态列表项xStateListItem x…

FreeRTOS多任务管理

文章目录 1、任务1.1 任务简介1.2 任务调度1.3 任务的状态 (就绪态 / 运行态 / 阻塞态 / 挂起态)1.4 空闲任务 2、动态创建两个任务2.1 定义动态内存空间的堆2.2 定义任务函数2.3 定义 任务控制块 指针2.4 动态创建任务 xTaskCreate()2.5 启动任务 vTaskStartScheduler() 3、常…

FreeRTOS 移植

源码 FreeRTOS源码 选择 FreeRTOS 的最新版本 V9.0.0(2016 年)比较稳定 1)解压后的文件 提取的文件, FreeRTOS—>Source->portable目录下的MemMang,RVDS MemMang 存放内存相关的源文件,heap_1.c,heap_2.c,he…

初识FreeRTos

初识FreeRTos Preface一、FreeRTos简介二、 为什么选择FreeRTos三、FreeRTos资料和源码的下载四、介绍我自己的开发环境4.1FreeRTos4.2AlienTek Summary Preface 距离我上一次写博客已经差不多有5个月了,最近想给自己挖个新坑,讲一讲关于FreeRTos 相关的…