三系统基本功能对比
| RT-thread | ucosii | freertos |
任务调度 | 抢占式、时间片式(多级队列位图调度) | 抢占式(纯位图调度) | 抢占式、时间片式(遍历列表调度) |
任务管理 | 256级,可自定义 每级可多个任务 | 64级, 每级一个任务 | 无限级或32,可自定义每级可多个任务 |
时间管理 | 定时器中断,软件定时器 | 定时器中断产生,软件定时器 | 定时器中断产生,软件定时器 |
任务间通信与同步 | 信号量、邮箱、队列、事件 | 信号量、邮箱、队列、事件 | 信号量、队列、事件、通知 |
内存管理 | 静态和动态; 动态又分两种: 小内存管理算法, 大内存管理(SLAB管理算法); | 提供内存控制块(函数和结构体) | Heap_1:分配不释放 Heap_2:最佳匹配算法,每次相同 Heap_3:标准c库函数动态分配,线程保护 Heap_4:匹配算法+合并算法,每次不同 Heap_5: 4的升级版,多个不连续区域 |
异常与中断机制 | 提供临界区、 允许嵌套 | 一样 | 一样 |
IO设备管理 | 提供类似unix的IO设备管理框架 | 提供USB、CAN、Modbus驱动 | 无 |
应用模块 | 可动态加载 | 无 | 无 |
调试技术 | Finsh shell | 堆栈检验 | 可视化追踪(堆栈) 运行时间统计(cpu) |
文件系统 | 提供FatFs、NFS、UFFS | 提供uc/os-fs | 提供freertos+FAT |
网络协议接口 | 提供lwIP移植版 | 提供TCP/IP移植版 | 提供freertos+TCP/IP |
POSIX接口 | 支持 | 无 | 部分 |
UI组件 | 提供RT-GUI | 提供uc/os GUI | 无 |
三系统性能对比
| Rt-thread | Ucos-ii | freertos |
内核大小 | ROM 2.5-?K RAM 1K | ROM 6-24K RAM 1K | ROM 4~9K RAM 1K |
任务调度 | 1、多级位图搜索算法 2、搜索出最高就绪优先级后,还要判断具体是哪个线程运行, 效率上会比ucosii差一点。 3、使用了常量数组,时间得到确定。 |
- 单位图搜索算法;
- 搜索出就绪优先级与当前运行的不同就触发中断切换任务。效率比freertos硬件方法差,比通用方法好。
- 由于使用常量数组,时间得到确定
|
- 支持CLZ硬件命令调度,效率高(任务限制32个)
- 通过列表和列表项构成任务就绪表
- 通用方法使用循环,有时间不确定的风险
|
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)