瑞萨RA6M4开发板在RT-Thread中使用segger_rtt软件包

简介: 瑞萨RA6M4开发板在RT-Thread中使用segger_rtt软件包

瑞萨RA6M4开发板使用示例<RT-Thread的版本为v4.1.0及以上>

一、创建工程,选择SEGGER_RTT软件包

2、添加jlinkRtt初始化函数[ 路径:/rt-thread/src/kservice.c ]

rt_console_set_device前调用rt_hw_jlink_rtt_init初始化函数

3、控制台对接上jlinkRtt

rtconfg.h
// 修改RT_CONSOLE_DEVICE_NAME为空

shell.c [ 路径:D:\rt-thread\components\finsh\shell.c]
/* 1、首先添加以下头文件 */
#include "SEGGER_RTT.h"
#include "SEGGER_RTT_Conf.h"
/* 2、修改finsh_getchar */
int finsh_getchar(void)
{
#ifdef RT_USING_DEVICE
    char ch = 0;
#ifdef RT_USING_POSIX_STDIO
    if(read(STDIN_FILENO, &ch, 1) > 0)
    {
        return ch;
    }
    else
    {
        return -1; /* EOF */
    }
#else
    rt_device_t device;
    RT_ASSERT(shell != RT_NULL);
    device = shell->device;
    if (device == RT_NULL)
    {
        extern char rt_hw_console_getchar(void);
        return rt_hw_console_getchar();
    }
    while (rt_device_read(device, -1, &ch, 1) != 1)
    {
        rt_sem_take(&shell->rx_sem, RT_WAITING_FOREVER);
        if (shell->device != device)
        {
            device = shell->device;
            if (device == RT_NULL)
            {
                return -1;
            }
        }
    }
    return ch;
#endif /* RT_USING_POSIX_STDIO */
#else
    extern char rt_hw_console_getchar(void);
    return rt_hw_console_getchar();
#endif /* RT_USING_DEVICE */
}
kservice.c [ 路径:\rt-thread\src\kservice.c ]
// 另外我们还需要完成对控制台字符读取的对接,修改rt_hw_console_output 
RT_WEAK void rt_hw_console_output(const char *str)
{
    /* empty console output */
    rt_size_t i = 0, size = 0;
    size = rt_strlen(str);
    for (i = 0; i < size; i++)
    {
        if (*(str + i) == '\n')
        {
           break;
        }
    }
    SEGGER_RTT_printf(0,"%s",str);
}
RTM_EXPORT(rt_hw_console_output);

4、实验效果

首先确保已经下载好J-Link RTT Viewer,直接去官网下载最新版本即可

然后编译和下载工程,注意下载方式为J-Link

双击打开rtthread.map[ 路径: /Debug/rtthread.map ]文件,查看_SEGGER_RTT变量地址(全局搜索即可,找到.bss._SEGGER_RTT)

打开J-Link RTT Viewer

此时就可以正常使用segger_rtt了

目录
相关文章
|
6月前
|
监控 网络协议 安全
GE通用电气 IC695ETM001 PACSystem Rx31模块 以太网模块
GE通用电气 IC695ETM001 PACSystem Rx31模块 以太网模块
|
消息中间件 缓存 Shell
RT-Thread记录(十七、AT组件 — ESP8266使用 at_device 软件包联网)
AT 组件:RT-Thread 一个比较典型的组件, 解决了不同网络模块AT命令之间的差异导致的重复开发的问题,大幅度简化了MCU+无线模块方案开发。
1002 0
RT-Thread记录(十七、AT组件 — ESP8266使用 at_device 软件包联网)
|
传感器 IDE Linux
RT-Thread ADC设备学习笔记
RT-Thread ADC设备学习笔记
131 0
|
IDE 编译器 开发工具
【NXP】LPC55S69-RT-Thread Micropython移植日志
【NXP】LPC55S69-RT-Thread Micropython移植日志
191 0
|
传感器 芯片 内存技术
【玩转RT-Thread】ART-Pi 网络时钟(上)
【玩转RT-Thread】ART-Pi 网络时钟
169 0
|
开发工具 C++
【玩转RT-Thread】ART-Pi 网络时钟(下)
【玩转RT-Thread】ART-Pi 网络时钟
156 0
|
IDE 开发工具 C语言
【基于 RT-Thread Studio的CPK-RA6M4 开发板环境搭建】
【基于 RT-Thread Studio的CPK-RA6M4 开发板环境搭建】
112 0
|
传感器 数据采集 消息中间件
RT-Thread 应用篇 — 在STM32L051上使用 RT-Thread (二、无线温湿度传感器 之 CubeMX配置)
应用篇-在STM32L051上使用RT-Thread 第二篇,使用STM32CubeMX 进行对应外设配置,同时做一些简单测试。
490 0
RT-Thread 应用篇 — 在STM32L051上使用 RT-Thread (二、无线温湿度传感器 之 CubeMX配置)