当前位置: 首页 > news >正文

个人网站推广渠道 微博 贴吧网站建设细节差异化

个人网站推广渠道 微博 贴吧,网站建设细节差异化,简单建网站,网站空间怎么收费目录 RTT(Real Time Transfer)简介 使用教程 常用API介绍 RTT缓冲大小修改 使用printf重定向 官方例程 RTT(Real Time Transfer)简介 平常调试代码中使用串口打印log,往往需要接出串口引脚,比较麻烦,并且串口打印速度较慢,串…

目录

 

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,可用于“虚拟”终端,允许打印到多个窗口(例如,一个用于标准输出,一个对于错误输出,一个用于调试输出)。

463331ac801040f2beebdaf76c02fc74.jpeg

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

b7abf417c5844ed4bb6a9f16f0cde1c6.jpeg

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

5671225e95c54e03afc89bb4968e4668.jpeg

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

f320fb070fd246a5b948a46918077288.jpeg

b112e14cb301407f8d062d6b6224e9c9.jpeg

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

a5e8b03eabfb4ae1be48e2355c454c5c.jpeg

使用教程

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

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

5b1a5b3080c0472e80c1f0ef1226bfd3.jpeg

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

6a8a3bd59e894397aeebeedf855f0c77.jpeg

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

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

195f8db111a54cc29c882dee745fc5e2.jpeg

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的地址。

2db0e3ba48da4b959a55a0d7f953e0d7.jpeg

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

ca3dc55153a0401da71953cbc3959e50.jpeg

常用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()来设置字体颜色还背景颜色。

48021837c886490a8945ceb6c313b694.jpeg

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的值。

cb974a5c3d8a471fa6875e93d4f4d52a.jpeg

使用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 ****************************/

 

 

http://www.yayakq.cn/news/462183/

相关文章:

  • 建筑网站设计大全在服务器上安装wordpress
  • html5电影网站模板杭州网站优化方案
  • 网站开发的技术栈项目实施方案计划书
  • 顺德网站建设公司咨询企业信息系统公示
  • 世界各国o2o响应式网站织梦后台网站栏目空白
  • 广州微网站建设怎么样天眼查 个人查询
  • 做网站 包含详情页设计吗网页设计基础课心得体会2000字
  • 网站网页框架构架图怎么做苏州网站推广
  • 东莞高端网站建设费青岛网站设计
  • 路由下做网站映射企业网站建设方案详细方案
  • 地图定位网站开发培训课程名称大全
  • 做网站需准备些什么软件沧州网站建设多少钱
  • wordpress 图片服务器配置新乡网站优化
  • 做网站后台的叫什么wordpress如何建企业站
  • 网站建设服务器的配置长沙网站建设公司排行榜
  • 恩施哪里有做网站的2023年九月份新闻
  • 嘉兴网站建设嘉兴app开发公司杭州
  • 建网站免费吗大连网站排名优化公司
  • 彭州做网站的公司如何做网站推广的策略
  • 雄县网站建设公司免费建设网站教程
  • 网站建立后怎么做推广老板电器分销系统
  • 常州专业做网站公司广州行业网站建设
  • 建设银行咸阳交费网站wordpress 一键迁移
  • 怎么把网站排名技术支持 长沙网站建设-创研科技
  • 阜城县网站建设报价广告投放工作怎么样
  • 苏州行业网站建设报价wordpress og
  • 马来西亚网站建设电子商务网站的建设的步骤
  • 做网站网站多久会被抓推广公司产品
  • 四川高速公路建设集团网站商标免费设计
  • 茂名建设公司网站东莞企业网站建立报价