RT-Thread vs FreeRTOS:国产 RTOS 怎么选,3KB Flash 起步
背景:嵌入式 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 能列出 ps、list_thread、free 等命令。这一步就是它和 FreeRTOS 最直观的差别:FreeRTOS 没有内置 Shell,想看线程状态得连 JTAG 调试器或自己写串口解析;RT-Thread 一个 ps 就全列出来了。
三、三层架构:和 FreeRTOS 的本质区别
FreeRTOS 只做内核调度;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 跑一遍、敲两下 ps 和 help,再决定下一个项目换不换它——零成本,三分钟。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)