RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RA2L1移植SEGGER RTT日志打印功能

冬至子 ? 來(lái)源:dreamcmi ? 作者:dreamcmi ? 2023-10-12 11:30 ? 次閱讀

0.前言

因?yàn)镽A2L1開(kāi)發(fā)板板載了JLINK-OB,那么我們完全可以通過(guò)SWD調(diào)試口去打印日志,從而不去用物理串口,這樣不僅省了硬件串口資源占用,而且可以很快速的打印log,對(duì)系統(tǒng)整體運(yùn)行效率也得到了一定程度的提高。接下來(lái)就來(lái)移植一下SEGGER的RTT日志打印功能。

1.準(zhǔn)備

一個(gè)由RTT Studio新建好的BSP工程

SEGGER RTT源碼(在jlink上位機(jī)按照目錄里,例如C:Program FilesSEGGERJLinkSamplesRTT)

2.移植

首先把四個(gè)基礎(chǔ)文件加到工程目錄(推薦單獨(dú)建一個(gè)文件夾放源碼實(shí)現(xiàn)模塊化,這里僅做演示沒(méi)有新建)

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

然后新建一個(gè)注冊(cè)文件,這里命名為segger_rtt_register.c

刷新ide,正常來(lái)說(shuō)應(yīng)該和下圖文件一樣

1.jpg

接下來(lái)修改文件

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

將開(kāi)頭的include改為#include "SEGGER_RTT_Conf.h"

SEGGER_RTT_Conf.h

(此文件可以暫時(shí)不修改)

主要看以下兩個(gè)地方

#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

這里的大小根據(jù)log頻率和長(zhǎng)度進(jìn)行修改,默認(rèn)是1024和16

drv_common.c

這個(gè)文件開(kāi)頭加入#include "SEGGER_RTT.h"

在最下面rt_hw_board_init函數(shù)增加rtt初始化函數(shù),并注釋掉rt_hw_usart_init();(原因后面說(shuō))

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

這里面只需要改一個(gè)地方, 將原來(lái)的uart9改成空即可

#define RT_CONSOLE_DEVICE_NAME ""
hal_entry.c

這里只是編寫(xiě)演示代碼?。?/p>

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

修改完成后直接編譯下載,同時(shí)打開(kāi)J-LINK RTT Viewer,通過(guò)下圖配置好直接點(diǎn)擊ok,軟件會(huì)自動(dòng)連接。

1.jpg

正常來(lái)說(shuō)會(huì)在黑框中打印LOG

1.jpg

3.答疑

上面的文件修改可能有一些人會(huì)問(wèn)為什么不去注冊(cè)一個(gè)rt_device,因?yàn)槟菢訉賹?shí)麻煩了(其實(shí)是懶)。

我們?cè)谛薷膔tconfig.h里的RT_CONSOLE_DEVICE_NAME為空字符串時(shí),已經(jīng)把打印的函數(shù)對(duì)接到了void rt_hw_console_output(const char *str), 所以我們只需要對(duì)接這一個(gè)函數(shù)就可以完成printf重定向,至于為什么改一個(gè)空字串就可以不用device,看一下rt_kprintf的實(shí)現(xiàn)原理大概你就懂了,就是把_console_device的值識(shí)別成了NULL。

4.總結(jié)

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • UART接口
    +關(guān)注

    關(guān)注

    0

    文章

    124

    瀏覽量

    15288
  • J-Link
    +關(guān)注

    關(guān)注

    0

    文章

    84

    瀏覽量

    22137
  • SEGGER
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    14124
  • RTThread
    +關(guān)注

    關(guān)注

    8

    文章

    132

    瀏覽量

    40859
  • swd接口
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    2833
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RA-Eco-RA2E1-48PIN-V1.0開(kāi)發(fā)板試用】使用Jlink RTT完成printf打印功能

    很榮幸收到瑞薩的RA2E1超低功耗開(kāi)發(fā)板,現(xiàn)在開(kāi)始寫(xiě)第一篇相關(guān)的試用報(bào)告,看到別人已經(jīng)用RA2E1的串口實(shí)現(xiàn)了printf打印功能,我就不重復(fù)了,下面我就使用Jlink自帶的
    發(fā)表于 10-31 21:00

    移植一下SEGGERRTT日志打印功能

      0. 前言  因?yàn)?b class='flag-5'>RA2L1開(kāi)發(fā)板板載了JLINK-OB,那么我們完全可以通過(guò)SWD調(diào)試口去打印日志,從而不去用物理串口,這樣不僅省了硬件串口資源占用,而且可以很快速的打印log,
    發(fā)表于 03-06 10:38

    RT-Thread與Renesas RA2L1實(shí)現(xiàn)1.8寸TFT屏幕顯示的步驟

    使用過(guò),本次借著RTT和本次參與RT-Thread與Renesas RA2L1的學(xué)習(xí)大挑戰(zhàn)更深入的去學(xué)習(xí)RTT和Renesas?! ∮?jì)劃使用RA2L1實(shí)現(xiàn)
    發(fā)表于 04-03 16:45

    華大移植SEGGER_RTT 打印

    華大移植SEGGER_RTT 打印一、目的1.在單片機(jī)開(kāi)發(fā)中,串口是我們最好的‘伙伴’,沒(méi)有什么BUG是串口打印無(wú)法解決的。如果有就debu
    發(fā)表于 11-23 18:07 ?14次下載
    華大<b class='flag-5'>移植</b><b class='flag-5'>SEGGER_RTT</b> <b class='flag-5'>打印</b>

    RA2L1硬件用戶手冊(cè)(中英)

    RA2L1硬件用戶手冊(cè)(中英)
    發(fā)表于 11-07 19:49 ?6次下載
    <b class='flag-5'>RA2L1</b>硬件用戶手冊(cè)(中英)

    RA2L1開(kāi)發(fā)板資料

    RA2L1開(kāi)發(fā)板資料
    發(fā)表于 11-07 19:50 ?18次下載
    <b class='flag-5'>RA2L1</b>開(kāi)發(fā)板資料

    基于RA2L1的串口及J-Link的燒寫(xiě)說(shuō)明

    本節(jié)介紹使用串口工具對(duì)RA2L1進(jìn)行程序的燒寫(xiě)。采用CPK-RA2L1開(kāi)發(fā)板,硬件如下圖所示。
    的頭像 發(fā)表于 11-25 13:55 ?1740次閱讀

    RA2L1 組用戶手冊(cè):硬件

    RA2L1 組用戶手冊(cè):硬件
    發(fā)表于 01-09 19:06 ?5次下載
    <b class='flag-5'>RA2L1</b> 組用戶手冊(cè):硬件

    RA2L1 組數(shù)據(jù)表

    RA2L1 組數(shù)據(jù)表
    發(fā)表于 01-09 19:06 ?0次下載
    <b class='flag-5'>RA2L1</b> 組數(shù)據(jù)表

    RA2L1 組用戶手冊(cè):硬件

    RA2L1 組用戶手冊(cè):硬件
    發(fā)表于 06-30 18:50 ?1次下載
    <b class='flag-5'>RA2L1</b> 組用戶手冊(cè):硬件

    RA2L1 組數(shù)據(jù)表

    RA2L1 組數(shù)據(jù)表
    發(fā)表于 06-30 18:50 ?0次下載
    <b class='flag-5'>RA2L1</b> 組數(shù)據(jù)表

    RA2L1 組 Capacitive Touch Evaluation System 用戶手冊(cè)

    RA2L1 組 Capacitive Touch Evaluation System 用戶手冊(cè)
    發(fā)表于 07-04 20:38 ?0次下載
    <b class='flag-5'>RA2L1</b> 組 Capacitive Touch Evaluation System 用戶手冊(cè)

    RA2L1上手優(yōu)化BSP占用

    在上手RA2L1開(kāi)發(fā)板的時(shí)候,使用RTT Studio給的BSP進(jìn)行開(kāi)發(fā)時(shí)發(fā)現(xiàn)默認(rèn)占用太大了,所以今天就來(lái)說(shuō)一下如何優(yōu)化掉不是很必要的部分(當(dāng)然芯片資源很大且不在乎的可以不做)。
    的頭像 發(fā)表于 10-12 11:18 ?637次閱讀
    <b class='flag-5'>RA2L1</b>上手優(yōu)化BSP占用

    基于RA2L1實(shí)現(xiàn)串口DTC數(shù)據(jù)接收

    基于RA2L1實(shí)現(xiàn)串口DTC數(shù)據(jù)接收
    的頭像 發(fā)表于 10-10 09:34 ?538次閱讀
    基于<b class='flag-5'>RA2L1</b>實(shí)現(xiàn)串口DTC數(shù)據(jù)接收

    瑞薩RA2L1系列CAN通信應(yīng)用

    瑞薩RA2L1系列CAN通信應(yīng)用
    的頭像 發(fā)表于 06-26 08:06 ?603次閱讀
    瑞薩<b class='flag-5'>RA2L1</b>系列CAN通信應(yīng)用
    RM新时代网站-首页