瑞萨单片机william hill官网
直播中

大菠萝Alpha

3年用户 673经验值
擅长:嵌入式技术
私信 关注
[经验]

【瑞萨FPB-RA6E1快速原型板】RT-Thread移植

本篇主要在fpb-ra6e1上移植RT-Thread 5.0。

一、思路

通过RASC工具生成关于RA系列MCU的HAL驱动程序,通过scons配置RT-Thread 相关参数。

RT-Thread 5.0的BSP目录下有RA系列BSP制作教程,同时提供template模板,可以按照教程一步一步来。
R.png

二、创建BSP目录

复制 BSP 模板 \renesas\libraries\bsp-template 文件夹到 \renesas 目录并将名称修改为fpb-ra6e1即可。

通过RASC工具,生成一个RA工程,刚好RASC有fpb-ra6e1模板,直接用了。
E1.png
最终就是这样。

E2.png

配置USART9,用于RT-Thread 控制台输出。
E8.png

同时配置LED,用于节奏闪烁。
E9.png

新增UART stack。
E10.png

最后点击按钮,生成MDK工程。

三、配置Kconfig

board目录下的kconfig,修改MCU相关信息。

menu "Hardware Drivers Config"

    config SOC_R7FA6E10F
        bool
        select SOC_SERIES_R7FA6E1
        select RT_USING_COMPONENTS_INIT
        select RT_USING_USER_MAIN
        default y

libraries下面的kconfig,增加MCU相关信息。

config SOC_SERIES_R7FA6E1
    bool
    select ARCH_ARM_CORTEX_M33
    select SOC_FAMILY_RENESAS
    default n

再看看UART9在不在,不在的话补起来。

libraries\HAL_Drivers\config下的drv_config.h文件,驱动文件跟RA6M5差不多,直接用了。

#if (defined(SOC_SERIES_R7FA6M5)) || (defined(SOC_SERIES_R7FA6E1))
#include "ra6m5/uart_config.h"

#ifdef BSP_USING_ADC
#include "ra6m5/adc_config.h"
#endif

#ifdef BSP_USING_DAC
#include "ra6m5/dac_config.h"
#endif

#ifdef BSP_USING_PWM
#include "ra6m5/pwm_config.h"
#endif

#ifdef BSP_USING_CAN
#include "ra6m5/can_config.h"
#endif
#endif /* SOC_SERIES_R7FA6M5 */

修改ra\fsp\src\bsp\cmsis\Device\RENESAS\Source\startup.c文件:

#ifdef __ARMCC_VERSION
main();
#elif defined(__GNUC__)
extern int entry(void);
entry();
#endif

board.h文件中的RA_SRAM_SIZE设置成256。

#define RA_SRAM_SIZE           256
#define RA_SRAM_END            (0x20000000 + RA_SRAM_SIZE * 1024)

四、配置scons

menuconfig命令后,配置控制台串口。
E11.png

配置串口。
E22.png
选择UART9。

E33.png

退出menuconfig,使用 env 工具输入命令 scons --target=mdk5 重新生成工程

五、添加应用代码

最后,加上APP代码。

#define LED3_PIN    BSP_IO_PORT_04_PIN_07

void hal_entry(void)
{
    rt_kprintf("\nHello RT-Thread!\n");

    while (1)
    {
        rt_pin_write(LED3_PIN, PIN_HIGH);
        rt_thread_mdelay(500);
        rt_pin_write(LED3_PIN, PIN_LOW);
        rt_thread_mdelay(500);
    }
}

六、配置MDK工程

先确认MCU是不是正确的。
E3.png

debug下面的几个配置项。
E4.png

顺便把下载器也配置好,板载J-LINK。
E6.png

下载算法,记得RAM算法起始地址和size。
E7.png

七、编译下载执行

编译还是挺快的。

compiling r_icu.c...
compiling r_ioport.c...
compiling common_data.c...
compiling hal_data.c...
compiling r_sci_uart.c...
compiling pin_data.c...
compiling main.c...
compiling vector_data.c...
linking...
Program Size: Code=34442 RO-data=6330 RW-data=188 ZI-data=4276  
FromELF: creating hex file...
".\Objects\rtthread.axf" - 0 Error(s), 2 Warning(s).
Build Time Elapsed:  00:00:06

RT-Thread 5.0启动画面如下:

\ | /
- RT -     Thread Operating System
 / | \     5.0.1 build May 24 2023 22:55:39
 2006 - 2022 Copyright by RT-Thread team

Hello RT-Thread!
msh >

再来几个msh cmd:

msh >ps
thread   pri  status      sp     stack size max used left tick  error
-------- ---  ------- ---------- ----------  ------  ---------- ---
tshell    20  running 0x00000084 0x00001000    11%   0x00000001 OK
tidle0    31  ready   0x00000054 0x00000100    32%   0x0000000e OK
timer      4  suspend 0x00000044 0x00000200    13%   0x00000009 OK
main      10  suspend 0x0000006c 0x00000800    09%   0x00000012 EINTRPT
msh >free
total    : 257912
used     : 7352
maximum  : 7352
available: 250560

256K的SRAM跑OS就是爽!

更多回帖

发帖
×
20
完善资料,
赚取积分