news 2026/9/25 2:46:48

RT-Thread EK-RA8M1 BSP 实战指南:在 Renesas RA8M1(Cortex-M85 480MHz)开发板上快速跑通 RT-Thread

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RT-Thread EK-RA8M1 BSP 实战指南:在 Renesas RA8M1(Cortex-M85 480MHz)开发板上快速跑通 RT-Thread
  • 操作系统
  • 嵌入式
  • 物联网
  • 嵌入式OS
  • RTOS

【免费下载链接】rt-thread

RT-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 仓库中的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 工具进行配置,官方操作顺序如下:

  1. 在bsp目录下打开 env 工具(即在 bsp/renesas/ra8m1-ek 目录下运行env);
  2. 输入menuconfig命令配置工程,配置完成后保存并退出;
  3. 输入pkgs --update命令更新软件包(拉取所选第三方软件包源码);
  4. 输入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 图形化配置:

  1. 在 BSP 目录打开env工具,用scons --target=mdk5命令生成 MDK 工程;
  2. 打开 BSP 目录中的project.uvprojx,在顶部导航栏选择Software Components配置,在Flex Software下找到RA Configuration,点击其右侧的配置按钮。该操作会自动探测当前计算机上安装的 FSP 版本,选定版本后进入 FSP;
  3. 进入 FSP 后,可以看到已预配置好的外设(即本 BSP 内置的r_ioport、r_sci_b_uart等实例),点击Generate Project Content按钮生成所需驱动文件——FSP 会重写ra_gen/目录下的公共数据、向量表以及ra_cfg/fsp_cfg/下的引脚与模块配置头文件;
  4. 返回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/

项目地址:https://gitcode.com/gh_mirrors/rt/rt-thread
点击查看免费下载

相关推荐

上一篇:V-HACD与CoACD对比:哪个凸分解工具更适合你的3D项目?
下一篇:JDBC Agent Template 实战指南:为 DBX 添加新数据库 Agent 的完整开发流程

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/25 2:46:33

WinForm+SQLServer外卖系统开发:建模、事务、并发与避坑指南

简介&#xff1a;这套基于WinForm与SQL Server的外卖系统项目&#xff0c;适合C#桌面开发学习者、课程设计或毕业设计参考。项目分为用户端、商家端、骑手端与管理端四个角色&#xff0c;覆盖商品浏览、跨店铺购物车、订单结算、钱包管理、商家接单、骑手派单及人员管理等典型业…

作者头像 李华
网站建设 2026/9/25 2:46:28

Servlet+JSP在线考试系统毕设实战指南

简介&#xff1a;本资源是一套完整的在线考试系统毕业设计项目&#xff0c;面向计算机专业本科生、教育信息化开发者及教学平台建设者&#xff0c;解决传统考试组织效率低、题库管理分散、评卷自动化程度不足等实际问题。压缩包共378个文件&#xff0c;含179个C#后端逻辑文件&a…

作者头像 李华
网站建设 2026/9/25 2:46:16

Linux+Samba 自建家庭云盘服务器实战指南

1. 整体构思与硬件选型说实在的&#xff0c;我一直觉得现在各家网盘虽然存取方便&#xff0c;但总有几道迈不过去的坎&#xff1a;容量稍微上去就要付费、上传下载速度被限死、文件放在别人服务器上总归不太安心。前段时间家里旧电脑退役&#xff0c;硬盘还好好的&#xff0c;我…

作者头像 李华
网站建设 2026/9/25 2:45:09

豆包AI生图去水印全攻略:官方渠道、ComfyUI局部重绘与API批量处理

1. 豆包AI生图的水印到底藏在哪一层先把一个基础事实说清楚&#xff1a;豆包AI生成的图片&#xff0c;水印不是像贴纸一样浮在画面最上层的独立图层。它是在出图阶段由服务端合成进像素里的&#xff0c;位置通常在右下角或左下角&#xff0c;带一个半透明的品牌标识加一行小字。…

作者头像 李华
网站建设 2026/9/25 2:45:00

拼团交易平台系统第2-12节:拼团组队结算统计——支付驱动组队进度与成团判定的实现解析

文档教程后端 【免费下载链接】CodeGuide :books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总&#xff0c;旨在为大家提供一个清晰详细的学习教程&#xff0c;侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助&#xff0c;请给予支持(关注、…

作者头像 李华