在资源有限的微控制器上引入实时操作系统,往往意味着一个现实矛盾:RTOS能够降低软件复杂度、提升任务管理能力,但内核本身也会占用代码空间、RAM以及CPU时间。
因此,RTOS裁剪并不是简单地“把不用的功能关掉”,而应该围绕应用需求,对任务、调度、内核对象、内存管理、中断以及移植层进行系统性分析。
尤其是在Flash只有几十到几百KB、RAM只有几十KB的MCU上,合理裁剪RTOS,可能比单纯优化业务代码更有效。
一、RTOS裁剪首先要回答一个问题:到底需要什么?
很多项目一开始就把RTOS的全部功能打开,等到系统资源不足时才开始裁剪。
这种方式效率很低。
更合理的方法是先建立一张系统资源与功能需求表:
| 项目 | 需要确认的问题 |
|---|---|
| 任务 | 系统实际需要多少任务? |
| 优先级 | 是否真的需要很多优先级? |
| 调度 | 是否必须抢占?是否需要时间片? |
| 通信 | 是否使用队列、信号量、事件组? |
| 同步 | 是否使用互斥锁、递归锁? |