实时操作系统(RTOS)已经存在了几十年了,但只是在近十年RTOS才在微控制器(MCU)中变得常见起来。这一变化的原因之一是,MCU为了处理高效多线程应用而一直在增强其计算能力。多线程是RTOS的主要功能之一,互相分开的多个线程让同时处理多个任务变得简单,如响应网络请求或者向闪存中写入数据。多线程还简化了第三方软件的整合,如通信协议和文件系统,整合过程中RTOS的通信功能(如消息队列)可以作为整合接口。简单来讲,RTOS提供了新的便于复杂嵌入式系统开发的一个抽象层。 虽然使用RTOS并不总是最佳的解决方法,但越来越多的系统开发者还是舍弃了传统的“超级循环”设计。过去几年中,多个处理器供应商开始在软件开发工具包(SDK)中包括RTOS,至少两个业界领先的云计算供应商各自收购了有名的RTOS用于简化物联网(IoT)上针对自家云产品的开发过程。IoT设备通过RTOS可以很容易地运行通信栈。 不过,RTOS并不是没有复杂性,更高的抽象程度总是意味着更少的控制权。尽管RTOS支持确定性多线程,但大多数RTOS只允许间接控制线程的执行。基本上所有流行的RTOS都使用基于优先级的抢占调度,内核调度算法只接受几个调度用的“参数”(如优先级),而不允许针对单个任务的执行进行控制,本书作者在Real-Time Operating Systems Book 1-The Theory一书对于这一部分有更详细的解释。正确设置RTOS参数对于正确、高效和可靠的软件行为而言至关重要,RTOS将这一重任完全交给了应用开发者。 RTOS带来的复杂度让源代码和运行时行为的关联变得不那么明显,只是阅读代码,你很难理解一个多线程RTOS应用的运行时行为。在RTOS上进行开发时,需要额外的工具和方法验证你的软件行为,还需要遵循RTOS应用设计的“最佳方法”验证你的软件,否则你的软件可能会变得不可靠、低效和难以调试。本书关注RTOS应用开发的“最佳方法”,指导你规避常见的误区,教会你理解和控制软件的运行时行为,从而帮助你将新的创意用高效和可靠的方式转化为优秀的产品。