0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RA2L1移植SEGGER RTT日志打印功能

冬至子 来源:dreamcmi 作者:dreamcmi 2023-10-12 11:30 次阅读

0.前言

因为RA2L1开发板板载了JLINK-OB,那么我们完全可以通过SWD调试口去打印日志,从而不去用物理串口,这样不仅省了硬件串口资源占用,而且可以很快速的打印log,对系统整体运行效率也得到了一定程度的提高。接下来就来移植一下SEGGER的RTT日志打印功能。

1.准备

一个由RTT Studio新建好的BSP工程

SEGGER RTT源码(在jlink上位机按照目录里,例如C:Program FilesSEGGERJLinkSamplesRTT)

2.移植

首先把四个基础文件加到工程目录(推荐单独建一个文件夹放源码实现模块化,这里仅做演示没有新建)

SEGGER_RTT.c SEGGER_RTT.h SEGGER_RTT_printf.c SEGGER_RTT_Conf.h

然后新建一个注册文件,这里命名为segger_rtt_register.c

刷新ide,正常来说应该和下图文件一样

1.jpg

接下来修改文件

segger_rtt_register.c加入以下代码

/*

  • Copyright (c) 2006-2021, RT-Thread Development Team
  • SPDX-License-Identifier: Apache-2.0
  • Change Logs:
  • Date Author Notes
  • 2023-02-24 dreamcmi the first version
    */
    #include "SEGGER_RTT.h"
    #include "rtthread.h"
    void rt_hw_console_output(const char *str)
    {
    SEGGER_RTT_Write(0, str, rt_strlen(str));
    }
    SEGGER_RTT.h

将开头的include改为#include "SEGGER_RTT_Conf.h"

SEGGER_RTT_Conf.h

(此文件可以暂时不修改)

主要看以下两个地方

#ifndef BUFFER_SIZE_UP
#define BUFFER_SIZE_UP (512) // Size of the buffer for terminal output of target, up to host (Default: 1k)
#endif
#ifndef BUFFER_SIZE_DOWN
#define BUFFER_SIZE_DOWN (16) // Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16)
#endif

这里的大小根据log频率和长度进行修改,默认是1024和16

drv_common.c

这个文件开头加入#include "SEGGER_RTT.h"

在最下面rt_hw_board_init函数增加rtt初始化函数,并注释掉rt_hw_usart_init();(原因后面说)

RT_WEAK void rt_hw_board_init()
{
rt_hw_systick_init();
SEGGER_RTT_Init();
/* Heap initialization */
#if defined(RT_USING_HEAP)
rt_system_heap_init((void *)HEAP_BEGIN, (void )HEAP_END);
#endif
/
Pin driver initialization is open by default /
#ifdef RT_USING_PIN
rt_hw_pin_init();
#endif
/
USART driver initialization is open by default /
#ifdef RT_USING_SERIAL
// rt_hw_usart_init();
#endif
/
Set the shell console output device /
#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
#endif
/
Board underlying hardware initialization */
#ifdef RT_USING_COMPONENTS_INIT
rt_components_board_init();
#endif
}
rtconfig.h

这里面只需要改一个地方, 将原来的uart9改成空即可

#define RT_CONSOLE_DEVICE_NAME ""
hal_entry.c

这里只是编写演示代码!!

void hal_entry(void)
{
while (1)
{
rt_kprintf("hal_entry 1n");
rt_thread_mdelay(1000);
rt_kprintf("hal_entry 2n");
rt_thread_mdelay(1000);
}
}

修改完成后直接编译下载,同时打开J-LINK RTT Viewer,通过下图配置好直接点击ok,软件会自动连接。

1.jpg

正常来说会在黑框中打印LOG

1.jpg

3.答疑

上面的文件修改可能有一些人会问为什么不去注册一个rt_device,因为那样属实麻烦了(其实是懒)。

我们在修改rtconfig.h里的RT_CONSOLE_DEVICE_NAME为空字符串时,已经把打印的函数对接到了void rt_hw_console_output(const char *str), 所以我们只需要对接这一个函数就可以完成printf重定向,至于为什么改一个空字串就可以不用device,看一下rt_kprintf的实现原理大概你就懂了,就是把_console_device的值识别成了NULL。

4.总结

使用segger rtt打印速度快还不占用io,快去试试吧。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • UART接口
    +关注

    关注

    0

    文章

    123

    浏览量

    15068
  • J-Link
    +关注

    关注

    0

    文章

    77

    浏览量

    21951
  • SEGGER
    +关注

    关注

    0

    文章

    31

    浏览量

    14007
  • RTThread
    +关注

    关注

    7

    文章

    129

    浏览量

    40523
  • swd接口
    +关注

    关注

    0

    文章

    10

    浏览量

    2594
收藏 人收藏

    评论

    相关推荐

    【瑞萨RA2系列开发板体验】初识RA2L1开发板

    RA2L1开发板是一款基于R7FA2L1AB2DFL为主控芯片的开发板,它具有优越的性能和低功耗的特点,并配有一定的外设资源以供测试。RA2L1的CPU 时钟频率最高可达48MHz,并支持 1.6V
    发表于 11-29 10:06

    怎样去调试RT-Thread的segger RTT中断功能

    用大量的时间。中断功能最忌讳的就是占用时间太长。最近调试发现,对于常用的STM32来说,有一个不占用时间的打印,那就是:segger RTTSeg
    发表于 03-14 11:45

    Renesas RA2L1开发板之UART模块测评

    1、Renesas RA2L1开发板之UART  评测任务  首先非常感谢RT-Thread和Renesas给予测评CPK-RA2L1开发板的机会,本人所测评的模块是UART。这款
    发表于 10-18 10:38

    Renesas RA2L1开发板之PWM呼吸灯功能设计实现

    1、Renesas RA2L1开发板之PWM呼吸灯功能实现  CPK-RA2L1评估板  MCU:R7FA2L1AB2DFM,48MHz,A
    发表于 10-25 14:48

    Renesas RA2L1开发板之PWM评测相关资料介绍

    1、Renesas RA2L1开发板之PWM  硬件对PWM支持状况  板载LED中,支持PWM功能,同时该脚也直接引出至金针上,因此可使用该脚做PWM功能测试原作者:oxlm
    发表于 10-25 14:55

    Renesas RA2L1开发板之CAN介绍

    1、Renesas RA2L1开发板之CAN介绍  功能模块的硬件介绍  CPK-RA2L1评估板是一款专门针对中国本地的开发板,主MCU是一款主频为48MHz,内核为Arm® Cor
    发表于 11-01 11:46

    Renesas RA2L1开发板之PWM方波配置相关资料推荐

    1、Renesas RA2L1开发板之PWM方波配置  工程的配置  时钟的配置  本次直接基于官方的例程进行开发,使用瑞萨的 RA Configuration 进行工程的配置。RA
    发表于 11-02 15:31

    RA6M4使用segger_rtt作为console接口的步骤

    RA6M4开发板的时候,其使用的也是serial_v2标准,但是正常使用segger_rtt软件包时,发现根据作者的说明文档并不能正常使用,经过学习了解后发现,串口V1和V
    发表于 02-10 16:35

    移植一下SEGGERRTT日志打印功能

      0. 前言  因为RA2L1开发板板载了JLINK-OB,那么我们完全可以通过SWD调试口去打印日志,从而不去用物理串口,这样不仅省了硬件串口资源占用,而且可以很快速的打印log,
    发表于 03-06 10:38

    RT-Thread与Renesas RA2L1实现1.8寸TFT屏幕显示的步骤

    使用过,本次借着RTT和本次参与RT-Thread与Renesas RA2L1的学习大挑战更深入的去学习RTT和Renesas。  计划使用RA2L1实现
    发表于 04-03 16:45

    基于RA2L1开发板的初识点灯

    。  3.开发板框图  4.学习记录(点灯+串口打印)  4.1 硬件连线  4.2 原理图  4.3 环境安装  这里是根据《瑞萨RA2L1开发实践指南》-零、实践指南操作,没有遇到任何障碍,只是下载
    发表于 04-03 16:55

    瑞萨RA2L1 ANE加解密协处理系统简介

    芯片的模式,可以更好的增加安全性并且可以使用随机秘钥加强防破解能力。  1、简介  以下介绍的是采用瑞萨RA2L1作为专用加解密协处理器的方案,称它为ANE系统。  本系统的主要作用就是对主控发来
    发表于 04-03 17:28

    华大移植SEGGER_RTT 打印

    华大移植SEGGER_RTT 打印一、目的1.在单片机开发中,串口是我们最好的‘伙伴’,没有什么BUG是串口打印无法解决的。如果有就debug吧。哈哈!!2.但是如果在某些时候,串口都
    发表于 11-23 18:07 14次下载
    华大<b class='flag-5'>移植</b><b class='flag-5'>SEGGER_RTT</b> <b class='flag-5'>打印</b>

    基于IAR搭建RA MCU串口与RTT Viewer打印(上)

    基于IAR搭建RA MCU串口与RTT Viewer打印
    的头像 发表于 08-14 09:49 196次阅读
    基于IAR搭建<b class='flag-5'>RA</b> MCU串口与<b class='flag-5'>RTT</b> Viewer<b class='flag-5'>打印</b>(上)

    基于IAR搭建RA MCU串口与RTT Viewer打印(下)

    基于IAR搭建RA MCU串口与RTT Viewer打印
    的头像 发表于 08-14 09:50 178次阅读
    基于IAR搭建<b class='flag-5'>RA</b> MCU串口与<b class='flag-5'>RTT</b> Viewer<b class='flag-5'>打印</b>(下)