RT-Thread RA4M1 板级支持包实战:在瑞萨 EK-RA4M1 开发板上构建、烧录并运行 RTOS 应用
操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址https://gitcode.com/gh_mirrors/rt/rt-thread点击查看免费下载本篇以 RT-Thread 仓库中的 RA4M1 BSP 说明文档 为主线系统讲解瑞萨 EK-RA4M1 评估板的硬件资源与外设支持情况并覆盖从env工具配置工程menuconfig、生成 MDK/GCC 工程、使用 J-Flash lite 烧录到通过 SCI0 串口观察 msh 控制台与编写hal_entry应用入口的完整流程读完本文后你能够将 RT-Thread 稳定运行在 EK-RA4M1 上并基于源码理解该 BSP 的 GPIO 中断、串口控制台与 FSP 驱动配置体系。一、开发板与 MCU 简介EK-RA4M1 是基于瑞萨 RA4M1 MCU 的评估板官方定位是通过灵活配置软件包FSP和 IDE 帮助用户评估 RA4M1 MCU 群组特性、开发嵌入式应用。该开发板的常用板载资源如下资源规格MCUR7FA4M1AB3CFP48MHzArm Cortex-M4 内核256KB 代码闪存32KB SRAM调试接口板载 J-Link 接口扩展接口Arduino Uno 兼容接口从 BSP 源码可以印证以上信息Kconfig 中定义了SOC_R7FA4M1AB宏并默认选中其select链选出了SOC_SERIES_R7FA4M1系列标识、RT_USING_COMPONENTS_INIT组件初始化框架与RT_USING_USER_MAIN用户 main 入口这三者共同决定了该 BSP 的编译形态。编译产物中生效的 rtconfig.h 则声明了ARCH_ARM_CORTEX_M4架构宏并给出了内核级关键参数RT_TICK_PER_SECOND 1000系统时钟节拍 1000HzRT_USING_SMALL_MEM_AS_HEAP使用小内存堆管理机制RT_CONSOLE_DEVICE_NAME uart0控制台绑定到uart0串口设备即下文日志输出所用的 SCI0FINSH_USING_MSH启用 msh 命令控制台对应运行章节中的msh 提示符RT_USING_PIN、RT_USING_WDT、RT_USING_ADC、RT_USING_DAC、RT_USING_PWM、RT_USING_RTC、RT_USING_SPI、RT_USING_I2C等宏与下文“外设支持”表格一一对应。二、片上外设支持情况根据 RA4M1 BSP 说明该 BSP 目前对外设的支持情况如下片上外设支持情况备注UART支持SCI0 为默认日志输出端口GPIO支持IIC支持软件WDT支持RTC支持ADC支持DAC支持SPI支持FLASH支持PWM支持结合 rtconfig.h 可看到GPIO 与 UART0 驱动宏BSP_USING_GPIO、BSP_USING_UART0默认开启并配置了BSP_UART0_RX_BUFSIZE 256的串口接收缓冲区而 ADC、DAC、PWM、RTC、SPI、IIC软件位操作RT_USING_I2C_BITOPS、WDT 等外设宏在设备驱动Device Drivers配置区块中均已定义开发者可通过menuconfig按需求裁剪以在 32KB SRAM / 256KB Flash 的资源约束下平衡功能与体积。三、BSP 目录结构速览进入 bsp/renesas/ra4m1-ek 目录后主要子目录分工如下从源码结构看src/用户应用代码目录hal_entry.c 为应用入口文件ra_gen/FSP 生成的代码标注 do not edit其中 main.c 仅做一件事——调用hal_entry()随后返回/* generated main source file - do not edit */ #include hal_data.h int main(void) { hal_entry(); return 0; }这解释了为什么用户应用入口放在hal_entry而不是mainFSP 生成的main属于“勿改”层RT-Thread 通过RT_USING_USER_MAIN机制将其桥接到用户代码。ra/FSP 运行时库源码包含 CMSIS_6、ra/board/ra4m1_ek板级初始化board_init.c、board_leds.c以及r_icu外部中断、r_ioportGPIO、r_sci_uartSCI 串口等驱动模块实现ra_cfg/FSP 生成配置头文件如 r_sci_uart_cfg.h 中标注了SCI_UART_CFG_FIFO_SUPPORT (0)等串口驱动特性开关board/RT-Thread 板级适配层ports/下有gpio_cfg.hPIN 到 IRQx 通道的映射表RA_IRQ_MAX 16、fal_cfg.h固件抽象层 FAL 分区配置等script/链接脚本fsp.ld、fsp.scat及 GCC/Keil 两套链接信息头via/RASC 编译器相关的向量/汇编支持文件。BSP 顶层 SConscript 负责组装编译目标GCC/MDKarmclang平台下自动收集src/*.c并递归加入各子目录 SConscript其中也明确提示当前工程不支持 IAR 构建与“MDK GCC”双工具链的支持范围一致。四、编译该 BSP 支持 GCC 和 MDKarmclang两种工具链。开发前请先用 USB 数据线连接开发板到 PC通过 J-Link 接口下载与 DEBUG 程序串口侧使用 USB 转串口工具连接 SCI0P410(TXD)、P411(RXD)。MDK 工程在bsp/renesas/ra4m1-ek目录下打开env工具输入menuconfig命令配置工程配置好之后保存退出会生成/更新rtconfig.h输入pkgs --update命令更新软件包输入scons --targetmdk5命令重新生成 MDK 工程随后用 Keil MDK 打开project.uvprojx打开即可。GCC 工程在bsp/renesas/ra4m1-ek目录下打开env工具输入menuconfig命令配置工程配置好之后保存退出输入pkgs --update命令更新软件包输入scons命令即可直接编译出可烧录的工程文件。两条流程的前三步完全一致区别仅在最后一步MDK 走scons --targetmdk5重新生成 Keil 工程文件GCC 走scons直接产出编译结果。五、烧录J-Flash lite 操作步骤使用 J-Flash lite 工具完成烧录打开 J-Flash lite 工具选择芯片型号R7FA4M1AB点击 OK 进入工具选择 BSP 目录下编译出的rtthread.hex文件点击Program Device按钮开始烧录。六、运行与控制台连接开发板对应串口到 PC在终端工具里打开相应串口参数为115200-8-1-N复位设备后可以看到 RT-Thread 的输出信息。输入help命令可查看系统中支持的命令\ | / - RT - Thread Operating System / | \ 5.2.2 build Sep 27 2025 17:11:21 2006 - 2024 Copyright by RT-Thread team [D/drv.adc] adc0 init success Hello RT-Thread! msh 启动日志中的[D/drv.adc] adc0 init success来自 ADC 驱动的组件初始化RT_USING_COMPONENTS_INIT机制下的init优先级注册Hello RT-Thread!则是 hal_entry.c 中rt_kprintf打印的内容。控制台设备为uart0RT_CONSOLE_DEVICE_NAME底层由r_sci_uart驱动r_sci_uart.c实现收发走 DMART_SERIAL_USING_DMA。七、应用入口 hal_entry 深度解析应用层的入口函数在 src/hal_entry.c 中的void hal_entry(void)用户编写的源文件可直接放在src目录下由顶层 SConscript 的Glob(./src/*.c)自动纳入编译。当前默认示例程序完成了两件事#define LED_PIN BSP_IO_PORT_01_PIN_06 /* Onboard LED pins */ #define USER_BUTTON_PIN P105 void on_button_clicked(void *args) { rt_kprintf(On Button Clicked\n); } void hal_entry(void) { rt_kprintf(\nHello RT-Thread!\n); rt_pin_attach_irq(rt_pin_get(USER_BUTTON_PIN), PIN_IRQ_MODE_RISING, on_button_clicked, RT_NULL); rt_pin_irq_enable(rt_pin_get(USER_BUTTON_PIN), PIN_IRQ_ENABLE); while (1) { rt_pin_write(LED_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED_PIN, PIN_LOW); rt_thread_mdelay(500); } }从源码看其运行行为可拆解为LED 闪烁板载 LED 对应引脚BSP_IO_PORT_01_PIN_06即 P106主循环以 500ms 间隔翻转电平形成 1Hz 闪烁按键中断用户按键对应引脚P105通过rt_pin_attach_irq挂接上升沿中断PIN_IRQ_MODE_RISING按键按下时回调on_button_clicked打印On Button Clicked。这里同时演示了 RT-Thread PIN 驱动的“中断模式 GPIO”用法而不仅是最基础的读写模式。值得注意的是P105并非任意引脚gpio_cfg.h 中的PIN2IRQX_TABLE定义了该系列 MCU 上 16 个外部中断通道RA_IRQ_MAX 16与各引脚的合法映射关系例如BSP_IO_PORT_01_PIN_05、BSP_IO_PORT_02_PIN_06等映射到 IRQx0。若要为其他引脚配置中断应优先从该表中选择支持外部中断的引脚否则rt_pin_attach_irq会因无法路由到物理中断通道而失效。八、BSP 维护信息作者hywing见 RA4M1 BSP 说明 维护章节邮箱hywing.sirqq.com赞分享操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址https://gitcode.com/gh_mirrors/rt/rt-thread点击查看免费下载相关推荐RT-Thread EK-RA4E2 开发板 BSP 实战在瑞萨 RA4E2Cortex-M33上构建、烧录并扩展外设RT Thread EK RA4E2 开发板 BSP 实战在瑞萨 RA4E2Cortex M33上构建、烧录并扩展外设 本文以 RT Thread 仓库中操作系统嵌入式物联网嵌入式OSRTOS在 Zephyr 中开发瑞萨 EK-RA4M1 开发板硬件特性、设备树配置与 J-Link 烧录调试实战在 Zephyr 中开发瑞萨 EK RA4M1 开发板硬件特性、设备树配置与 J Link 烧录调试实战 EK RA4M1 是瑞萨 RA4M1 系列 MCU操作系统嵌入式RTOS物联网RT-Thread EK-RA2E2 板级支持包从编译下载到 FSP/ENV 外设配置把 RT-Thread 跑上瑞萨 RA2E2 (Cortex-M23)RT Thread EK RA2E2 板级支持包从编译下载到 FSP/ENV 外设配置把 RT Thread 跑上瑞萨 RA2E2 Cortex M23 本操作系统嵌入式物联网嵌入式OSRTOS上一篇MIB STD2 Toolbox 终极指南解锁大众汽车娱乐系统隐藏潜能下一篇Ant Design Form 表单动态禁用提交按钮validateOnly 校验实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考