- 操作系统
- 嵌入式
- 物联网
- 嵌入式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 仓库中 瑞萨 IOT-RA6M4 开发板 BSP 说明 展开,系统讲解如何将 RT-Thread 移植运行到基于 R7FA6M4AF3CFP(Cortex-M33)的 IOT-RA6M4 评估板上:从 MDK5 编译、J-Flash Lite 烧录到串口验证的完整快速上手流程,再到使用瑞萨 FSP 3.5.0 配置工具与 RT-Thread env 工具使能更多片上外设的进阶方法。读完本文,你可以独立完成该板 BSP 的编译、下载、验证,并结合仓库源码理解其默认配置、Kconfig 外设选项与 PPP 联网方案的落地细节。
开发板与 BSP 概述
IOT-RA6M4 是一块基于瑞萨 RA6M4 MCU 群组的评估板,通过瑞萨灵活配置软件包(FSP)和 IDE,可帮助用户评估 RA6M4 的片上特性并开发嵌入式应用。该 BSP 位于仓库的 bsp/renesas/ra6m4-iot 目录下,与瑞萨 RA 系列通用驱动库 bsp/renesas/libraries 共同构成硬件抽象基础。
开发板常用板载资源如下:
- MCU:R7FA6M4AF3CFP,200MHz,Arm Cortex-M33 内核,1MB 代码闪存,256kB SRAM;
- 调试接口:板载 J-Link 接口;
- 扩展接口:两个 PMOD 连接器。
外设支持情况
该 BSP 对外设的支持情况如下(摘自 BSP 说明文档):
| 片上外设 | 支持情况 | 备注 |
|---|---|---|
| UART | 支持 | UART6 为默认日志输出端口 |
| GPIO | 支持 | |
| IIC | 支持 | 软件 |
| WDT | 支持 | |
| RTC | 支持 | |
| ADC | 支持 | |
| DAC | 支持 | |
| SPI | 支持 | |
| FLASH | 支持 | |
| PWM | 支持 | |
| CAN | 支持 | |
| SDIO | 支持 | |
| 外接 WiFi 模块 | 支持 | RW007 WiFi 网络模块 |
| 外接温湿度传感器 | 支持 | HS300x 温湿度模块 |
| 外接室内空气质量传感器 | 支持 | zmod4410 模块 |
| 移远 Cat.1 模块 | 支持 | 使用 PPP 方式上网 |
这些外设的“支持”并非全部默认编译进固件。从源码结构看,仓库当前默认的是最小体量配置:在 rtconfig.h 中只使能了BSP_USING_GPIO、BSP_USING_UART和BSP_USING_UART6,其余外设需要后续通过 env 工具(Kconfig)和 FSP 配置按需开启。片上外设的 Kconfig 选项集中定义在 board/Kconfig,覆盖 UART0~UART9(含 DMA 与收发缓冲区大小配置)、硬件 I2C、SPI0/SPI1(支持 DTC 免 CPU 搬运)、ADC0/ADC1、DAC0/DAC1、PWM0~PWM9(GPT 32/16 位输出)、SDHI0/SDHI1(SDIO,自动选中 DFS 与 POSIX 文件接口)、CAN0/CAN1,以及可工作在 SPI/I2C/UART 三种模式下的 SCI0~SCI9 控制器。
快速上手:MDK5 编译与 J-Flash Lite 烧录
硬件连接
- 使用 USB 数据线连接开发板到 PC,通过板载 J-Link 接口下载和 DEBUG 程序;
- 使用 USB 转串口工具连接 UART6:P305(TXD)、P304(RXD),用于查看系统日志。
编译与下载
BSP 说明文档指出,快速上手目前仅提供 MDK5 工程:
- 双击 project.uvprojx 打开 MDK5 工程并编译。
- 烧录需使用 SEGGER J-Flash Lite 工具,建议使用 V7.50 及以上版本。
- 在 J-Flash Lite 中选择芯片型号R7FA6M4AF进入工具,选择 MDK 编译产物
/object/ra6m4.hex,点击 Program Device 开始烧录。
从构建脚本看,该工程同时定义了 Keil(armclang)与 GCC 两套工具链参数:rtconfig.py 中 Keil 分支使用--scatter script/fsp.scat分散加载,GCC 分支使用-T script/fsp.ld链接脚本,目标架构均针对 Cortex-M33(-mcpu=cortex-m33/--cpu Cortex-M33),因此scons --target=mdk5等命令实际也是基于该脚本重新生成 MDK 工程。
查看运行结果
下载成功后系统自动运行并打印启动信息。在终端工具中打开对应串口(115200-8-1-N),复位设备后即可看到 RT-Thread 的输出。输入help命令可查看系统支持的 shell 命令:
\ | / - RT - Thread Operating System / | \ 4.0.4 build Oct 11 2021 2006 - 2021 Copyright by rt-thread team Hello RT-Thread! msh > msh >help RT-Thread shell commands: reboot - Reboot System help - RT - Thread shell help. ps - List threads in the system. free - Show the memory usage in the system. hello - say hello world clear - clear the terminal screen version - show RT - Thread version information list_thread - list thread list_sem - list semaphore in system list_event - list event in system list_mutex - list mutex in system list_mailbox - list mail box in system list_msgqueue - list message queue in system list_timer - list timer in system list_device - list device in system list - list all commands in system msh >应用入口函数
应用层入口函数位于 src/hal_entry.c 中的void hal_entry(void),用户编写的源文件可直接放在src目录下(由 SConscript 收集./src/*.c编入 Applications 分组)。默认示例通过 GPIO 设备驱动翻转 LED3(映射到端口 1 的 PIN 14,即BSP_IO_PORT_01_PIN_14):
#define LED3_PIN BSP_IO_PORT_01_PIN_14 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); } }默认内核与驱动配置解读
结合 rtconfig.h 可以看到当前 BSP 的关键默认配置,理解它们有助于定位日志、内存等行为:
- 控制台:
RT_USING_CONSOLE且RT_CONSOLE_DEVICE_NAME为"uart6"(rtconfig.h#L105-L109),与“UART6 为默认日志输出端口”的说明一致; - 串口驱动:启用
RT_USING_SERIAL_V2新串口框架并开启RT_SERIAL_USING_DMA,UART6 接收缓冲区 256 字节(BSP_UART6_RX_BUFSIZE),发送缓冲区为 0(中断/阻塞发送); - 内核参数:
RT_TICK_PER_SECOND 1000、RT_THREAD_PRIORITY_MAX 32(32 级优先级)、小堆作为系统堆(RT_USING_SMALL_MEM_AS_HEAP); - 组件层:启用 Finsh/MSH 命令行(
FINSH_THREAD_STACK_SIZE 4096、FINSH_USING_HISTORY等)与RT_USING_USER_MAIN。
FSP 侧的 UART 实例配置由 r_sci_uart_cfg.h 定义,当前关闭了 FIFO、DTC 与流控支持,属于最小化默认配置。板级内存布局(256kB SRAM 顶端作为堆结束地址)见 board/board.h。
进阶使用一:使用 FSP 配置外设
如果需要修改瑞萨 BSP 的外设配置或添加新的外设端口,必须使用瑞萨FSP 3.5.0配置工具,请严格按下述步骤操作(配置问题可到 RT-Thread 社区论坛提问):
- 下载并安装 FSP 3.5.0;
- 安装完成后,需要添加 IOT-RA6M4 开发板的官方板级支持包,即
docs目录下的Xiaoxiongpai_BSP_FSP3.5.0.rar(见 bsp/renesas/ra6m4-iot/docs 目录),并按瑞萨官方说明将其导入 FSP; - 参考仓库文档 RA系列使用FSP配置外设驱动.md:在 MDK 中通过添加自定义命名来打开当前工程的 FSP 配置;
- 仓库 bsp 默认使能最小体量配置,使能 env 外设配置的完整步骤为:
- 在 bsp 目录下打开 env 工具,执行
scons --target=mdk5生成 MDK 工程; - 打开
project.uvprojx,选择导航栏Software Components,找到Flex Software下RA Configuration旁的配置按钮,工具会自动查找本机安装的 FSP 版本,选择指定版本后进入 FSP; - 在 FSP 中可以看到已配置完成的外设,点击
Generate Project Content即可生成所需驱动文件(生成物会落回 ra_gen 与 ra_cfg 等目录); - 回到 env,使能所需的外设配置后保存退出,再次生成工程即可。
- 在 bsp 目录下打开 env 工具,执行
更完整的 RA 系列外设驱动添加方法与教程,可继续阅读 RA系列外设驱动添加指南.md、RA系列BSP外设驱动使用教程.md 与 RA系列驱动介绍.md。
进阶使用二:env 工具使能组件与软件包
BSP 默认只开启了 UART6 功能。若要使用更多高级功能(组件、软件包等),需利用 env 工具配置,步骤如下:
- 在 bsp 目录下打开 env 工具;
- 输入
menuconfig配置工程,配置完成后保存退出; - 输入
pkgs --update更新软件包; - 输入
scons --target=mdk5重新生成工程。
menuconfig中“Hardware Drivers Config”菜单即来自 board/Kconfig,例如使能BSP_USING_ADC后再勾选BSP_USING_ADC0即可打开 ADC0 驱动;而片上 GPIO/UART 等基础驱动的公共实现位于 bsp/renesas/libraries/HAL_Drivers 目录,由根 Kconfig 中的rsource "../libraries/Kconfig"与板级配置合并引入。
实战案例:Cat.1 模块 PPP 入网
板级 Kconfig 中“Board extended module Drivers”菜单提供了BSP_USING_LWIP_PPP(Enable ppp function)选项,选中后会自动使能 UART、UART2 与 PPP_Device 软件包(board/Kconfig#L768-L777)。仓库内附有完整操作文档 使用PPP方式上网.md,要点如下:
- PPP 入网是 4G Cat.1 模块除 AT 命令外的另一种入网方式:将 PCI-E 接口的 Cat.1 板卡插入板上接口并连接天线,插入 SIM 卡(注意插卡方向);
- RT-Thread 侧需要打开 lwIP 协议栈(TCPIP 线程栈大小建议增加到 2048 以上),并通过PPP_Device软件包完成 PPP 解析与拨号;
- 配置 PPP_Device 时按手机卡运营商选取 APN,并将
ppp device uart name配置为uart2; - 由于通信模块引脚由用户自行选配,可能需微调驱动代码,例如该板上 EC20 的复位引脚与系统复位引脚公用,应将复位引脚配置改为 -1;
- 在 FSP 中打开 UART2 端口并保存退出;编译、下载后手动按下开发板 RESET 按钮复位,确保芯片和模块都重启,等待片刻后自动连接;
- 连接成功后使用
ifconfig查看网络状态,用ping命令测试连通性。
FAQ
使用 MDK 的 DEBUG 时遇到 “Error: Flash Download failed Cortex-M33” 怎么办?
可按照下图操作,修改 Utilities 中的下载选项(取消使用默认的 Flash Download 算法流程,改用板载 J-Link 的 SWD 下载参数):
参考资料与延伸阅读
- BSP 说明文档:bsp/renesas/ra6m4-iot/README.md
- PPP 联网文档:bsp/renesas/ra6m4-iot/docs/使用PPP方式上网.md
- RA 系列 FSP 配置教程:bsp/renesas/docs/RA系列使用FSP配置外设驱动.md
- 关键源码:src/hal_entry.c、rtconfig.h、rtconfig.py、board/Kconfig
- 瑞萨官方资料(RA MCU 基础知识、RA6 快速设计指南、RA6M4 数据手册与用户手册)以及开发板用户手册
docs/开发板手册.docx,可在瑞萨官网与 bsp/renesas/ra6m4-iot/docs 目录中获取
如对 IOT-RA6M4 感兴趣并有希望分享的项目,欢迎按 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/
相关推荐
瑞萨 EK-RA6E2 开发板运行 RT-Thread:MDK5 快速上手与 FSP/ENV 进阶配置实践
瑞萨 EK RA6E2 开发板运行 RT Thread:MDK5 快速上手与 FSP/ENV 进阶配置实践 本篇以 RT Thread 仓库中 EK RA6E2
操作系统嵌入式物联网嵌入式OSRTOSRT-Thread RA6M4 BSP 实战指南:基于瑞萨 CPK-RA6M4 开发板的 MDK 开发、J-Flash 烧录与 FSP/ENV 进阶配置
RT Thread RA6M4 BSP 实战指南:基于瑞萨 CPK RA6M4 开发板的 MDK 开发、J Flash 烧录与 FSP/ENV 进阶配置 本文以
操作系统嵌入式物联网嵌入式OSRTOSRT-Thread 瑞萨 RA4M2(RA-Eco-RA4M2-100PIN)BSP 实战指南:从 J-Flash 快速上电运行到 FSP/ENV 进阶外设配置
RT Thread 瑞萨 RA4M2(RA Eco RA4M2 100PIN)BSP 实战指南:从 J Flash 快速上电运行到 FSP/ENV 进阶外设配置
操作系统嵌入式物联网嵌入式OSRTOS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考