- 操作系统
- 嵌入式
- 物联网
- 嵌入式OS
- RTOS
【免费下载链接】rt-thread
RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/
本文以 RT-Thread 仓库中的bsp/renesas/ra8m1-ek板级支持包(BSP)为主线,介绍 EK-RA8M1 评估板的硬件资源、BSP 默认支持的外设、基于 MDK5 的编译烧录与运行验证流程,以及如何通过 ENV 工具和 FSP(Flex Software Package)进一步配置更多板级资源。读完本文后,你可以在 EK-RA8M1 开发板(Renesas RA8M1,480MHz Arm Cortex-M85 内核)上完成 RT-Thread 的完整部署,并掌握该 BSP 从最小配置到高级功能扩展的配置路径。
1. 开发板硬件资源概述
EK-RA8M1 评估板基于 Renesas RA8M1 MCU 开发,用于快速评估 RA8 系列 MCU 的功能特性。该 BSP 目录为 bsp/renesas/ra8m1-ek,从源码目录结构看,整个 BSP 按照"FSP 生成代码 + 板级代码 + 应用入口"的方式组织:ra/目录存放 FSP 框架代码与板级初始化,ra_cfg/目录存放 FSP 引脚与模块配置头文件,ra_gen/目录存放 FSP 生成的公共数据与向量表,board/目录存放 RT-Thread 侧的板级移植代码,src/hal_entry.c则是应用层入口。
开发板主要板载资源如下(引自 README_EN.md):
- MCU:R7FA8M1AH,480MHz,Arm Cortex-M85 内核,2MB Flash,1MB SRAM
- J-Link OB(板上调试器,支持 SWD 下载)
- OSPI FLASH(64Mx8 外部串行 NOR Flash,引脚
OSPI_CS、OSPI_CK、OSPI_DQ0~DQ7、OSPI_DS等已在 FSP 引脚配置中定义) - USB-Host / USB-Device(引脚
USBHS_VBUS、USBFS_P/N等) - CANFD(
CAN_RXD、CAN_TXD引脚) - 以太网(板上提供 ETH_A / ETH_B 两组 RMII 网络接口,引脚包括
ETH_A_TXD0/1、ETH_B_TXD0/1、ETH_A_MDIO、ETH_A_MDC等) - 2 组 PMOD + Arduino + micro BUS 扩展接口
- 3 个用户 LED(LED1/LED2/LED3)
- 3 个按键:2 个用户按键(
USER_S1、USER_S2)+ 1 个复位按键
板级引脚映射由 FSP 生成的 bsp_pin_cfg.h 统一描述,例如用户按键USER_S1为BSP_IO_PORT_00_PIN_09,LED1/LED2/LED3 分别为BSP_IO_PORT_06_PIN_00、BSP_IO_PORT_04_PIN_14、BSP_IO_PORT_01_PIN_07。板级 LED 抽象见 board_leds.c,其中g_bsp_prv_leds[]数组按 LED1、LED2、LED3 顺序登记了三个 IOPORT 引脚,供BSP_LED_On/Off等 FSP 板级接口调用。
BSP 当前对片上外设驱动的支持情况如下(该表直接继承自官方文档):
| 片上外设驱动 | 支持情况 | 备注 |
|---|---|---|
| UART | 支持 | UART9 为默认日志输出端口 |
| GPIO | 支持 |
从目录结构看,默认 BSP 只集成了r_ioport(GPIO)与r_sci_b_uart(UART)两个 FSP 驱动实例,分别位于 r_ioport.c 和 r_sci_b_uart.c,这与"最小 footprint"的默认配置策略一致。
2. 快速上手:MDK5 编译、下载与运行验证
官方文档说明:该 BSP 当前仅提供 MDK5 工程,以下以 MDK5 开发环境为例介绍如何运行系统。
2.1 编译与下载
- 编译:双击 BSP 根目录下的 project.uvprojx 文件,在 MDK5 中打开工程并编译。
- 下载:点击 MDK 的 Debug 按钮,通过板上 J-Link OB 下载并调试。
2.2 运行结果验证
程序下载成功后,系统自动运行并打印系统信息。将开发板对应的串口连接到 PC,用终端工具打开串口(波特率 115200-8-1-N),复位设备即可看到 RT-Thread 的输出信息。输入help命令可以查看系统支持的命令。默认输出示例:
initialize rti_board_start:0 done \ | / - RT - Thread Operating System / | \ 5.1.0 build Oct 30 2023 16:14:05 2006 - 2022 Copyright by RT-Thread team do components initialization. initialize rti_board_end:0 done initialize finsh_system_init:0 done Hello RT-Thread! msh >2.3 应用层入口函数
应用层入口函数位于 hal_entry.c 的void hal_entry(void)中,自己创建的新源文件可以直接放在 BSP 的src目录。官方文档给出的示例代码:
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); } }对照仓库中当前的实际实现(hal_entry.c#L19-L32),宏LED_PIN被定义为BSP_IO_PORT_06_PIN_00,即板上 LED1;该文件同时按RT_USING_NANO宏区分<drv_gpio.h>与<rtdevice.h>两个头文件路径,说明该 BSP 兼容 Nano 与标准两种内核裁剪形态。rt_pin_write()是 RT-Thread GPIO 统一驱动接口,其背后通过 FSP 的r_ioport驱动完成寄存器级操作,rt_thread_mdelay(500)则体现了 RT-Thread 作为 RTOS 的基本能力:任务级毫秒延时而不需要忙等待。
3. BSP 目录结构与工程生成机制
理解 BSP 的目录划分有助于后续扩展功能:
| 目录/文件 | 作用 |
|---|---|
| ra/fsp/ | FSP 框架与驱动源码,含bsp/(时钟、中断、MCU 信息)、r_ioport/、r_sci_b_uart/ |
| ra/board/ra8m1_ek/ | 板级初始化:board_init.c、board_leds.c、board_ethernet_phy.h |
| ra_cfg/fsp_cfg/ | FSP 生成配置头文件:引脚配置、IOPORT/SCI_B_UART 模块配置、MCU 器件配置 |
| ra_gen/ | FSP 生成的公共数据(common_data.c、hal_data.c、pin_data.c、vector_data.c)与main.c |
| script/ | 链接脚本:GCC/Clang 用fsp.ld/memory_regions.ld,MDK 用fsp.scat/memory_regions.scat |
| board/ | RT-Thread 板级移植层:board.h、ra8_it.c等 |
| rtconfig.py | 工具链与编译参数定义 |
从 rtconfig.py 可以看到该 BSP 支持三种工具链:
- Keil MDK(armclang):目标文件为
.axf,链接脚本为script/fsp.scat,CPU 指定为--cpu Cortex-M85,编译选项含-mcpu=Cortex-M85 -mfpu=neon-fp-armv8 -mfloat-abi=hard; - GCC:
-march=armv8.1-m.main+mve.fp+fp.dp -mthumb -mfpu=fpv5-sp-d16,链接使用-T script/fsp.ld,输出 ihex 与 size 统计; - LLVM-ARM(clang):
--target=arm-none-eabihf -march=armv8.1m.main+fp。
这些参数体现了 Cortex-M85 的关键 ISA 特性:ARMv8.1-M 基础架构、MVE FP(SIMD)、双精度浮点。堆内存区域由 board/board.h 定义:RA_SRAM_SIZE为 896KB,堆从链接段Image$$RAM_END$$ZI$$Base(MDK)开始延伸至0x22000000 + 896KB,即从内部 SRAM 末尾附近开始分配。
4. 高级配置一:使用 ENV 工具启用更多功能
本 BSP 默认仅启用 UART9(日志输出)等最小功能集。若需要启用更多组件与软件包,可使用 RT-Thread 的 env 工具进行配置,官方操作顺序如下:
- 在
bsp目录下打开 env 工具(即在 bsp/renesas/ra8m1-ek 目录下运行env); - 输入
menuconfig命令配置工程,配置完成后保存并退出; - 输入
pkgs --update命令更新软件包(拉取所选第三方软件包源码); - 输入
scons --target=mdk5命令重新生成 MDK 工程。
配置项的骨架见 Kconfig:默认选中SOC_R7FA8M1AH(自动连带选择RT_USING_COMPONENTS_INIT与RT_USING_USER_MAIN,即启用组件初始化框架和用户 main 入口),并在非 Nano 形态下引入 board/Kconfig 中的板级选项(如 LVGL、WiFi 等可选功能)。board/目录下已预置了 LVGL 显示/输入端口移植(board/lvgl/)与 RW007 WiFi 驱动(board/ports/wifi/drv_rw007.c),说明这些高级功能在 menuconfig 中按需勾选后即可获得对应源码支持。
5. 高级配置二:使用 FSP 配置外设驱动
除 ENV 菜单外,RA 系列 BSP 的另一条外设启用路径是借助 MDK 集成的 FSP 图形化配置:
- 在 BSP 目录打开
env工具,用scons --target=mdk5命令生成 MDK 工程; - 打开 BSP 目录中的
project.uvprojx,在顶部导航栏选择Software Components配置,在Flex Software下找到RA Configuration,点击其右侧的配置按钮。该操作会自动探测当前计算机上安装的 FSP 版本,选定版本后进入 FSP; - 进入 FSP 后,可以看到已预配置好的外设(即本 BSP 内置的
r_ioport、r_sci_b_uart等实例),点击Generate Project Content按钮生成所需驱动文件——FSP 会重写ra_gen/目录下的公共数据、向量表以及ra_cfg/fsp_cfg/下的引脚与模块配置头文件; - 返回
env,在 menuconfig 中打开所需的外设驱动配置项,保存并退出,再重新scons生成工程即可。
以默认已启用的 UART 为例,其模块配置位于 r_sci_b_uart_cfg.h:SCI_B_UART_CFG_FIFO_SUPPORT (1)表示使能 SCI FIFO(提升吞吐并减少中断次数),SCI_B_UART_CFG_FLOW_CONTROL_SUPPORT (0)表示未启用流控;引脚复用则统一在 bsp_pin_cfg.h 中声明(例如PMOD1_2_MOSI0_TXD0复用 UART0 TX 等)。板级初始化函数bsp_init()位于 board_init.c,在 FSP 启动流程中被调用,用于执行板级特有的初始化(当前最小实现为空)。
6. 参考资料与贡献
- 开发板与器件资料:Renesas 官网的 RA8M1(RA 系列 480MHz Cortex-M85 MCU)产品页、EK-RA8M1 用户手册与 RA MCU 通用文档(外部官网资料,本文不再附链接)。
- 本 BSP 中文文档:README.md
- 若你希望在 EK-RA8M1 上做出有意思的项目,欢迎参照 RT-Thread 官方贡献指南向社区提交代码。
总结:该 BSP 以 FSP 生成的 RA8M1 底层代码为基础,默认提供 UART9 日志串口与 GPIO 支持,配合 MDK5 + J-Link OB 即可分钟级跑通 RT-Thread;当功能需求超出默认范围时,ENV(menuconfig + pkgs + scons)负责组件与软件包层面的裁剪,FSP(RA Configuration + Generate Project Content)负责底层外设实例层面的配置,两条路径配合即可完成从"最小 footprint"到完整功能的平滑扩展。
- 操作系统
- 嵌入式
- 物联网
- 嵌入式OS
- RTOS
【免费下载链接】rt-thread
RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/
相关推荐
Zephyr 支持 Renesas EK-RA8M1 评估板:基于 Arm Cortex-M85 的 RA8M1 平台实战指南
Zephyr 支持 Renesas EK RA8M1 评估板:基于 Arm Cortex M85 的 RA8M1 平台实战指南 EK RA8M1 是瑞萨(Ren
操作系统嵌入式RTOS物联网RT-Thread EK-RA8D1 BSP 实战:在 Cortex-M85 高性能 MCU 上运行、编译与外设配置指南
RT Thread EK RA8D1 BSP 实战:在 Cortex M85 高性能 MCU 上运行、编译与外设配置指南 本文基于 RT Thread 仓库中
操作系统嵌入式物联网嵌入式OSRTOSRT-Thread EK-RA4E2 开发板 BSP 实战:在瑞萨 RA4E2(Cortex-M33)上构建、烧录并扩展外设
RT Thread EK RA4E2 开发板 BSP 实战:在瑞萨 RA4E2(Cortex M33)上构建、烧录并扩展外设 本文以 RT Thread 仓库中
操作系统嵌入式物联网嵌入式OSRTOS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考