2000年左右全球MCU市场还是以51单片机为主那个时候32位MCU刚刚兴起还没有普及而应用于MCU的RTOS大多都需要商业收费。于是2003年一位英国工程师 Richard Barry推出了免费的FreeRTOS。聪明的你肯定猜到了FreeRTOS这个名称的由来没错就是主打一个Free自由、免费。FreeRTOS问世的那个年代单片机的性能和存储资源都还是比较有限于是FreeRTOS一个特点就是轻量级、可裁剪那个时候51单片机是主流但32位MCU已经开始慢慢发展起来。同时市场的需求也在变化设备功能越来越复杂传统的裸机循环编程【while(1)中断】模式难以满足这些需求。所以FreeRTOS设计的目标就不能只是面向于51单片机还要考虑未来主流的32位单片机、更复杂的应用场景等同时为了规范代码还要严格遵循 MISRA-C 标准。于是在那样的情况下作者Richard Barry推出 FreeRTOS V1.0初始版本其内核只有 3 个 .c 文件tasks.c、list.c 和 queue.c源代码文件。┌─────────────────────────────────────────────────┐│ tasks.c ││ 任务创建/删除/调度/优先级管理/上下文切换入口 ││ │ ││ ▼ ││ ┌──────────────┐ ┌──────────────┐ ││ │ list.c │◄──►│ queue.c │ ││ │ 双向循环链表 │ │ 队列/信号量 │ ││ │ (就绪列表) │ │ (同步/通信) │ ││ │ (阻塞列表) │ │ │ ││ │ (事件列表) │ │ │ ││ └──────────────┘ └──────────────┘ │└─────────────────────────────────────────────────┘ │ ▼ portable/[compiler]/[arch]/port.c ← 移植层架构相关不算内核 portable/MemMang/heap_x.c ← 内存管理V1.0时只有heap_1/2V1.0 的设计哲学够用就好绝不多写一行代码。 这也是 FreeRTOS 能跑在几KB Flash 上的根本原因。作者Richard Barry 的原话Small, simple, easy to understand小、简单、易理解。现在大家看到的timers.c、heap_1~5.c、port.c等这些源代码文件都是后面逐渐增添的。FreeRTOS发展时间线2003年 Richard Barry 发布 FreeRTOS v1.0GPLv2 ↓2008年 Amazon 开始在内部使用 FreeRTOS ↓2017年 Amazon 正式收购 FreeRTOS ↓2018年 许可证改为 MIT发布 V10.0 ↓2020年 首个 LTS 版本发布202012.00 LTS ↓2023年 全球RTOS市场份额 ~38%Cortex-M采用率 60% ↓2026年 已成为 ARM Cortex-M 生态的事实标准为什么能如此火爆① 极致轻量——小到不可思议指标数据内核代码仅3个C文件ROM占用最小4~9 KBRAM占用不到1 KB最小配置几KB Flash的单片机都能跑对比μC/OS-II 内核约6~10KB ROMVxWorks 更是动辄几百KB。FreeRTOS 做到了能省则省。② MIT许可证——真正的自由这是FreeRTOS最具杀伤力的武器之一许可证商业使用可闭源衍生版权费GPLv22018年前✅❌ 必须开源免费MIT2018年后✅✅可以闭源免费2017年亚马逊收购后将许可证从 GPLv2 改为MIT这意味着公司做商业项目完全没有法律压力修改源码后可以闭源销售。这直接打掉了商业RTOS最大的竞争壁垒。③ 超强可移植性——一套代码通吃天下a、纯ANSI C编写兼容 GCC、Keil、IAR、MPLAB 等所有主流编译器b、已移植到40 处理器架构ARM Cortex-M/R、RISC-V、XtensaESP32、8051、AVR、PIC32、MIPS……c、从8位到32位MCU全覆盖‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧关注我的微信公众号回复“星球”加入知识星球有问必答。点击“阅读原文”查看知识星球详情欢迎点分享、收藏、点赞、在看。