RT-Thread环境与工程入口
文档版本:V1.0 | 适用系统:RT-Thread 3.1/4.1 (AMP) | 适用硬件:C-3576BQ V10 核心板 + M4-R2(ShimetaPi)底板 | 更新日期:2026-10-23
1. 概述
1.1 功能简介
M4-R2(RK3576)RT-Thread 开发环境是基于 Rockchip AMP(Asymmetric Multi-Processing)架构的 RTOS 开发框架。RT-Thread 作为实时操作系统,运行在 RK3576 的 Cortex-A53 核心上(32 位模式),与运行在 Cortex-A72 上的 Linux 形成异构多核协同方案。
本篇作为 RT-Thread 开发的入口文档,涵盖:
- M4-R2(RK3576)AMP 平台的核心架构与核心分配
- RT-Thread 支持的版本与 BSP 路径
- AMP SDK 目录结构与构建流程
- 工程编译与镜像生成方法
注意:RK3576 没有 Cortex-M0 核心,AMP/RTOS 全部运行在 Cortex-A53 核心(32 位模式)上,与 RK3588(含 M0 核)的方案不同。
1.2 应用场景
| 场景 | 说明 |
|---|---|
| AMP 多核异构 | RT-Thread 运行在 A53 核心(32 位模式),Linux 运行在 A72 核心,通过 RPMsg 通信 |
| RTOS 独立运行 | RT-Thread 独占指定核心,无需 Linux 协同 |
| LVGL GUI 应用 | 通过 rkdemo 示例在 RT-Thread 上运行 LVGL 图形界面 |
| 工业实时控制 | RT-Thread 处理实时性要求高的任务(CAN、UART、工业 IO) |
1.3 工作原理
RK3576 SoC 包含两类处理核心,各自可运行不同操作系统:
| 核心类型 | 数量 | 频率 | 支持的操作系统 |
|---|---|---|---|
| Cortex-A72 | 4 | 2.2 GHz | Linux Kernel(仅限 Linux) |
| Cortex-A53 | 4 | 1.8 GHz | Linux / RT-Thread 3.1-32 / RT-Thread 4.1-32 / HAL-32 |
来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0(通用 AMP 方案,适配 RK3576) 参考说明:RK3576 的 RT-Thread 支持以实际发布的 RK3576 AMP SDK 为准(待板上确认)。
在 AMP 模式下,A72 核心运行 Linux,A53 核心运行 RT-Thread(32 位模式),两个系统通过 RPMsg(Remote Processor Messaging)框架进行核间通信。RPMsg 基于共享内存 + 中断触发(Mailbox、软件中断、SGI)实现。
2. 硬件准备
2.1 开发板
| 设备 | 型号规格 | 数量 | 说明 | 验证状态 |
|---|---|---|---|---|
| 核心板 | C-3576BQ V10 | 1 | RK3576 SoC,含 4×A72 + 4×A53 | 已验证 |
| 底板 | M4-R2(ShimetaPi) | 1 | 提供调试串口、供电、外设接口 | 已验证 |
| 电源 | 5V(典型 5V,最大 5.5V,电流 4A) | 1 | 核心板供电要求;总功耗电流 0.92A/1.0A/2A | 已验证 |
2.2 调试与连接工具
| 设备 | 型号规格 | 数量 | 说明 | 验证状态 |
|---|---|---|---|---|
| USB 转 TTL 模块 | 通用(3.3V 电平) | 1 | 连接调试串口(1500000 波特率) | 已验证 |
| Type-C 数据线 | USB 2.0/3.0 | 1 | 供电及数据传输 | 已验证 |
| 串口终端软件 | PuTTY / minicom / MobaXterm | 1 | 串口调试终端 | 已验证 |
| TF 卡 / 烧录线 | 32GB+ 或 USB OTG 线 | 1 | 用于烧录和加载固件 | 待板上验证 |
调试串口说明:M4-R2 调试串口为底板 DEBUG 串口(4pin/1.0mm,3.3V 电平,波特率 1500000)。底板原理图(S-04)中调试串口网络标注为
UART0_TX_M0_DEBUG(GPIO0_D4_D)和UART0_RX_M0_DEBUG(GPIO0_D5_D),PMUIO1 域,3.3V 电平。 来源:S-04 底板原理图 / S-06 IO Domains(已验证) 注意:规格书(S-01)将调试串口标为 UART2(RX2/TX2),与原理图网络命名不一致,具体以实际物料与 SDK 配置为准(待板上验证)。
3. 软件准备
3.1 SDK 与工具链
| 软件 | 版本要求 | 用途 | 验证状态 |
|---|---|---|---|
| RT-Thread 源码 | lts-v3.1.x/master 或 lts-v4.1.x/master | RTOS 内核与 BSP | 参考说明 |
| Rockchip AMP SDK | 官方发布版(RK3576 适配以实际发布为准) | 包含 RT-Thread、HAL、构建工具 | 参考说明 |
| ARM 交叉编译工具链 | aarch64-linux-gnu(Linux 侧)/ arm-none-eabi(RT-Thread 侧,32 位模式) | 编译 RT-Thread 固件 | 参考说明 |
| SCons | 3.0+ | RT-Thread 工程构建工具 | 参考说明 |
| Python | 2.7+ 或 3.x | SCons 依赖、构建脚本 | 参考说明 |
3.2 RT-Thread BSP 路径
RT-Thread 官方 BSP 中 Rockchip 系列位于:
bsp/rockchip/
└── common/
└── hal/ # Rockchip HAL 硬件抽象层注:RK3576 具体板级 BSP 子目录名称待 RK3576 AMP SDK 实际目录确认(待板上验证)。
来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0,BSP 路径bsp/rockchip/,HAL 路径bsp/rockchip/common/hal/
4. 操作步骤
4.1 获取 AMP SDK
Rockchip AMP SDK 包含 RT-Thread 源码、HAL 层和构建工具。SDK 目录结构如下:
amp_sdk/
├── app/ # 应用代码(含 rkdemo 示例)
├── device/ # 设备配置文件
├── docs/ # 官方文档
├── hal/ # 硬件抽象层(HAL)
├── kernel-*/ # 内核源码(Linux / RT-Thread)
├── rkbin/ # 二进制工具(ddrbin、miniloader 等)
├── rtos/ # RTOS 源码(RT-Thread)
├── tools/ # 构建工具脚本
├── u-boot/ # Bootloader
├── uefi/ # UEFI 固件
└── yocto/ # Yocto 构建系统来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0(通用 AMP SDK 结构)
4.2 配置 RT-Thread 工程
进入 RT-Thread 源码目录,使用 menuconfig 进行配置:
# 进入 RT-Thread BSP 目录
cd rtos/rt-thread/
# 打开 menuconfig 配置界面
scons --menuconfig在 menuconfig 中选择目标平台和需要启用的组件,参考 BSP与启动 中的配置说明。
4.3 编译 RT-Thread
RT-Thread 使用 SCons 构建系统:
# 编译 RT-Thread(8 线程并行)
scons -j8HAL 层使用 Make 构建:
# 编译 HAL 层
make -j84.4 完整构建(AMP 镜像)
使用 SDK 提供的 build.sh 脚本进行完整构建:
# 选择芯片型号(RK3576)
./build.sh chip
# 选择 lunch 配置
./build.sh lunch
# 选择 AMP 配置
./build.sh amp
# 编译 U-Boot
./build.sh uboot
# 编译 Kernel
./build.sh kernel
# 全量清理重建
./build.sh cleanall来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0,build.sh 选项说明 待板上验证:RK3576 的具体 chip/lunch 选项名以实际 RK3576 AMP SDK 为准(待板上确认)。
4.5 生成 AMP 镜像
构建完成后,系统会生成 ITS(Image Tree Source)文件用于打包 AMP 镜像:
| ITS 文件 | 用途 |
|---|---|
amp_linux.its | Linux 侧 AMP 镜像打包配置 |
amp.its | AMP 联合镜像打包配置 |
说明:RK3576 无 M0 核,AMP 仅包含 Linux 侧与 A53 侧两部分,不需要
amp_mcu.its(MCU 侧打包)。
最终输出镜像为 amp.img,可通过 U-Boot 或烧录工具写入存储介质。
待板上验证:ITS 文件的具体打包流程和 amp.img 的烧录方法需在目标板上验证。
5. 代码详解
5.1 RT-Thread AMP 板级文件
RT-Thread 在 AMP 模式下的板级文件结构:
board/
├── common/
│ ├── board_base.c # 通用板级初始化
│ └── iomux_base.c # 通用引脚复用配置
├── rk3576_xxx/ # RK3576 具体板级子目录(名称以实际 SDK 为准)
│ ├── board.c # 板级初始化入口
│ └── iomux.c # 引脚复用定义
└── SConscript # SCons 构建脚本来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0,RT-Thread Board Files (AMP) 章节 待板上验证:RK3576 具体的 board.c 和 iomux.c 实现需以实际 BSP 代码为准。
板级文件中使用 RT_WEAK 关键字定义弱符号函数,允许用户在自定义板级文件中覆盖默认实现:
/* board/common/board_base.c 中的弱符号示例 */
RT_WEAK int rt_hw_board_init(void)
{
/* 默认板级初始化实现 */
/* 用户可在自定义 board.c 中重新定义此函数以覆盖 */
return 0;
}5.2 内存布局(gcc_arm.ld.S)
AMP 模式下的内存布局通过链接脚本 gcc_arm.ld.S 定义:
/* 链接脚本中的内存区域定义 */
MEMORY
{
SRAM : ORIGIN = 0x..., LENGTH = 0x... /* 片上 SRAM */
DRAM : ORIGIN = 0x..., LENGTH = 0x... /* DDR 内存 */
SHMEM : ORIGIN = 0x..., LENGTH = 0x... /* 共享内存区域 */
LINUX_RPMSG : ORIGIN = 0x..., LENGTH = 0x... /* Linux RPMsg 通信区域 */
}
/* RPMsg 共享内存符号 —— 由链接器导出,供 RPMsg 驱动使用 */
__linux_share_rpmsg_start__ = ORIGIN(LINUX_RPMSG);
__linux_share_rpmsg_end__ = ORIGIN(LINUX_RPMSG) + LENGTH(LINUX_RPMSG);来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0,Memory Layout (gcc_arm.ld.S) 章节待板上验证:各内存区域的具体起始地址和长度以 RK3576 实际链接脚本为准(以实际发布的 RK3576 SDK 为准,待板上确认)。RPMsg 共享内存地址需与 Linux 侧设备树配置匹配。
5.3 RPMsg 核间通信框架
RPMsg(Remote Processor Messaging)是 RT-Thread 与 Linux 之间的标准核间通信框架。
工作原理:
Linux (A72) RT-Thread (A53)
│ │
├── rpmsg_virtio 驱动 ├── rpmsg_virtio 驱动
│ │
├── 共享内存(LINUX_RPMSG) ├── 共享内存(LINUX_RPMSG)
│ │
└──── 中断触发(Mailbox/SGI)────┘触发方式:
- Mailbox 中断:硬件 Mailbox 控制器触发核间中断
- 软件中断:通过 GIC 软件中断触发
- SGI(Software Generated Interrupt):GIC SGI 中断
来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0,RPMsg Communication 章节参考说明:RPMsg 框架为标准 AMP 通信方案,具体 RK3576 平台的中断号和共享内存地址需以设备树和实际配置为准(待板上确认)。
5.4 rkdemo 应用示例
rkdemo 是 RT-Thread 在 Rockchip 平台上的 LVGL 图形界面演示应用,位于 SDK 的 app/ 目录下。
主要功能:
- 演示 RT-Thread 上的 LVGL GUI 能力
- 展示 RTOS + AMP 架构下的图形渲染流程
- 提供 RT-Thread 应用开发的参考模板
来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0,rkdemo Application 章节待板上验证:rkdemo 的具体编译配置、LVGL 版本和运行效果需在目标板上验证。
6. 常见问题
Q1: RT-Thread 支持哪些 RK3576 核心?
A:RT-Thread 支持运行在 RK3576 的 Cortex-A53 核心(32 位模式,版本 3.1-32/4.1-32)。Cortex-A72 核心仅支持 Linux 内核,不支持 RT-Thread。RK3576 没有 Cortex-M0 核心。
来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0(适配 RK3576)
Q2: RT-Thread 支持的版本有哪些?
A:Rockchip 官方支持的 RT-Thread 版本为 lts-v3.1.x/master 和 lts-v4.1.x/master。建议使用官方 LTS 版本以获得稳定支持。
来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0
Q3: RT-Thread BSP 在源码中的什么位置?
A:RT-Thread 官方 BSP 中 Rockchip 系列位于 bsp/rockchip/ 目录下,HAL 层位于 bsp/rockchip/common/hal/。具体 RK3576 BSP 目录名以实际 RT-Thread 版本为准。
来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0
Q4: 如何编译 RT-Thread 和 HAL?
A:RT-Thread 使用 SCons 构建:scons -j8;HAL 层使用 Make 构建:make -j8。完整 AMP 镜像通过 ./build.sh 脚本构建,支持 chip、lunch、amp、uboot、kernel、cleanall 等选项。
来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0
Q5: AMP 模式下 RT-Thread 和 Linux 如何通信?
A:通过 RPMsg(Remote Processor Messaging)框架通信,基于共享内存 + 中断触发(Mailbox、软件中断、SGI)。共享内存区域在链接脚本 gcc_arm.ld.S 中定义,通过 __linux_share_rpmsg_start__ 和 __linux_share_rpmsg_end__ 符号导出。
来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0
Q6: RT-Thread 与 HAL 的关系是什么?
A:HAL(Hardware Abstraction Layer)位于 bsp/rockchip/common/hal/,提供统一的硬件操作接口(时钟、GPIO、IOMUX 等)。RT-Thread BSP 调用 HAL 接口完成硬件初始化,开发者也可通过 RT_WEAK 弱符号覆盖默认的板级配置。
来源:
Rockchip_Developer_Guide_RT-Thread_rkdemo_CN.pdfV1.0.0
7. 相关文档
| 文档 | 说明 |
|---|---|
| BSP与启动 | RT-Thread BSP 配置与启动流程详解 |
| CAN-FD与UART | RT-Thread 外设驱动(CAN-FD、UART) |
| 显示与存储 | RT-Thread 显示驱动与 SPI Flash 存储方案 |
| Linux与RTOS_AMP | Linux + RTOS AMP 多核异构方案 |
| 调试与日志 | RTOS 调试与日志方法 |
| 核心板参数 | 硬件事实基线(核心板、底板规格) |
| SDK下载与编译环境搭建 | SDK 下载与编译环境搭建 |
| RTOS与Linux协同 | Linux 侧 RTOS 协同开发 |
