在过去的两天里,我一直在为上述 ARM Cortex M3 寻找一个简单的调度程序,虽然我找到了一些 RTOS 解决方案,但我没有找到一个独立的任务调度程序。
我不需要任何太花哨的东西,因为我的应用程序不一定需要一个,但它有助于将来证明产品(不要抨击这最后一句话,我很清楚它的问题)。
编辑:
正如@Clifford 所建议的那样,我不太清楚我所说的简单是什么意思。我会说它的代码很少,并且不会消耗太多 SRAM。
最简单的 RTOS 内核包括一个调度程序和许多任务同步和 IPC 机制。由于这些通常作为库提供,因此如果您只使用此类库的调度程序组件,则不会将任何其他内容链接到您的代码。此外,稍后添加同步、计时器和 IPC 的选项将更真正地“面向未来”应用程序,或者至少是其架构。
不清楚您所说的“简单调度程序”是什么意思,但大多数 RTOS 调度程序支持相同优先级的任务的循环调度(uC/OS-II 是一个明显的例外);如果您将所有任务都设置为相同的优先级,那么它不会比这更简单。
另请注意,ARM CMSIS包含一个非常低级的 RTOS API,旨在作为更高级别操作系统的基础,但它提供了为您的精确需求创建内核所需的所有构建块,包括线程控制(即调度)。
如果您真的想完全避免使用 RTOS,那么状态机架构(例如Quantum Leaps 的 QP 框架所支持的架构)是一种替代方案。
在流行的 RTOS 中,ChibiOS/RT 声称非常小并且它是“静态的”(您必须将它使用的所有数据分配为普通变量,它不会调用 malloc() 或类似的东西)。乍一看,它可能看起来“很大”,因为它包含 HAL,但您也可以删除它 (;