背景:嵌入式 RTOS 选型绕不开 FreeRTOS

做嵌入式的人选 RTOS,第一个想到的几乎都是 FreeRTOS——它轻、通用、资料多,用起来像一把瑞士军刀。但问题也很直接:FreeRTOS 只给你内核调度,任务、信号量、消息队列、软件定时器,就这些。文件系统、网络协议栈、命令行 Shell,通通要你自己去移植、适配、写串口解析。

RT-Thread 走的是另一条路:内核只当底座,上面直接搭好文件系统、网络协议栈、Shell、统一的设备框架,开箱即用。这篇文章把两者掰开对比,讲清楚什么时候该选谁。

一、RT-Thread 是什么

RT-Thread 是 2006 年诞生的国产开源实时操作系统,截至本文版本 12.1k Star,Apache 2.0 协议,18000+ 次提交,官方支持 200+ 款开发板。最小内核 Nano 版只需要 3KB Flash + 1.2KB RAM,标准版内核之上叠加 450+ 个软件包,从 TLS 到 WebSocket 到 MQTT,按需勾选。

二、5 分钟上手,不用买开发板

最快路径是 QEMU 模拟器,零硬件成本:

git clone https://github.com/RT-Thread/rt-thread.git
cd rt-thread/bsp/qemu-vexpress-a9
scons
qemu-system-arm -M vexpress-a9 -kernel rtthread.bin -nographic

终端里出现:

 \ | /
- RT -     Thread Operating System
 / | \     5.1.0 build Aug  4 2026
 2006 - 2024 Copyright by RT-Thread team
msh >

msh 是 RT-Thread 内置的命令行 Shell,敲 help 能列出 pslist_threadfree 等命令。这一步就是它和 FreeRTOS 最直观的差别:FreeRTOS 没有内置 Shell,想看线程状态得连 JTAG 调试器或自己写串口解析;RT-Thread 一个 ps 就全列出来了。

三、三层架构:和 FreeRTOS 的本质区别

FreeRTOS 只做内核调度;RT-Thread 把高频组件全部标准化,架构分三层:

RT-Thread 三层架构

内核层和 FreeRTOS 做同一件事:线程调度、信号量、互斥量、事件集、消息队列、内存池,抢占式,支持 256 级优先级。真正拉开差距的是组件层

  • 设备框架:I2C、SPI、UART、GPIO、PWM、ADC 全部抽象成统一的 rt_device_open/read/write/close 接口。换芯片时应用层代码不变,只换 BSP 层。
  • 文件系统:内置 DFS,支持 FatFS、LittleFS、ROMFS、DevFS,文件操作走 POSIX 接口,不用手写 diskio.c
  • 网络协议栈:集成 lwIP,SAL 层让 BSD socket 无缝运行,Linux 网络程序交叉编译过来几乎不改。

组件层之上还有 FinSH Shell(串口上的人机交互界面,支持补全、历史、变量读写)和 450+ 软件包。

四、选型对比

维度 FreeRTOS RT-Thread
内核调度 抢占式,任务/信号量/队列/定时器 同,256 级优先级
设备框架 无,需自建 BSP 抽象 统一 rt_device 接口
文件系统 自移植 FatFS(手写 diskio) 内置 DFS,POSIX 接口
网络协议栈 自移植 lwIP 集成 lwIP + SAL
命令行 Shell FinSH
软件包生态 无官方包管理 450+ 官方软件包
最小资源 极简内核 Nano 3KB Flash + 1.2KB RAM
功能安全 SafeRTOS(ASIL D / SIL 3) 无独立认证版本

结论不复杂:只要内核调度选 FreeRTOS;要"开箱即用的完整系统"选 RT-Thread。团队里"你的驱动我调通了但 API 是我自己命名的"这种交接成本,RT-Thread 的统一设备框架能直接消掉——rt_device_write(dev, 0, buf, len),全团队同一个 API。

五、什么时候别用 RT-Thread

1. 产品只需要极简调度器。 固件就 3 个任务、用不到文件系统网络 Shell,那 FreeRTOS 更合适。RT-Thread 标准版的设备框架和 DFS 至少要额外 10-20KB Flash(Nano 版能裁到 3KB,但那就没有组件层了)。

2. 团队已深度绑定 FreeRTOS 生态。 现有产品线的驱动库、中间件、CI 流程全围绕 FreeRTOS 建的,切换 RT-Thread 意味着整个 BSP 层重写,迁移成本要算清楚。

3. 需要功能安全认证。 FreeRTOS 有 SafeRTOS 版本通过 ISO 26262 ASIL D 和 IEC 61508 SIL 3;RT-Thread 目前没有独立的功能安全认证版本。汽车电子、医疗设备这类场景是硬门槛。

六、总结

RT-Thread 最值得写进选型清单的理由,不是多了一个调度器,而是它把「外设怎么访问、文件怎么读写、网络怎么收发」这些每个团队都在重复造轮子的东西做成了标准。先用 QEMU 跑一遍、敲两下 pshelp,再决定下一个项目换不换它——零成本,三分钟。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐