技术交流 - 漫谈嵌入式实时操作系统
01
概述
嵌入式实时操作系统(Real-Time Operating System,RTOS)是指工作在资源(空间、时间)受限场景,能在确定的时间内对外部事件做出响应,并执行功能的一类轻量级操作系统。
从1981年Ready System公司发布首个嵌入式实时内核VRTX32以来,RTOS业已经历了40年的历史。美国NASA自20世纪80年代末以来,就一直在航天器中采用实时操作系统,例如,从1997年火星探路者,到2021年毅力号火星探测器,都采用了VxWorks实时操作系统。1999年,pSOS实时操作系统在我国实践五号卫星中也获得了成功运用。
软件产品作为航天型号的重要组成部分,直接影响航天任务成败,需要利用RTOS作为基础平台在机制上予以保障,完成任务实时调度、资源优化分配、设备有效管理、故障快速捕获与处理,从而降低上层应用软件复杂性,使之能专注于核心功能,提高软件产品质量,缩短研制周期,并提高系统的确定性、可靠性和灵巧性。
02
RTOS特点分析
与通用操作系统(如Windows、Android、iOS)相比,RTOS在“准”、“稳”、“省”这三个维度上有着显著的差异性。
1. 准:
“准”是指RTOS能够在任何场景下,在确定的响应时间内提供服务的能力。其中,确定的响应时间,是指RTOS需要在给定的截止时间前对内部或者外部事件做出正确的响应,一旦超时,将导致严重后果;任何场景是指,上述具有时序可预测性的准时服务,必须能够免受当前系统运行状态、负载状况、资源分配等因素影响,而持续保持一致的服务质量。
准时性是RTOS最基础的技术特征,以满足实时解算、精确同步等时间敏感应用需求,对于保障航天任务尤为关键。因为航天型号任务必须同时满足逻辑正确性和时间约束两个条件,也就是需要在一定时间完成相应的处理,不仅确保结果逻辑正确性,而且要求时序正确可靠。
例如,2020年ESA和NASA联合研发的太阳轨道器,在直面太阳时温度可达450°C。为了能够承受高温,太阳轨道器设计了一个隔热板,但需要严格控制航天器的位置和倾斜,才能将航天器和仪器遮蔽在隔热板的阴影中。从轨道器检测发现航迹偏离,到完成姿态调整的时限为50秒,不然就会被烤焦。为了完成这项时限紧迫的任务,ESA使用了RTEMS实时操作系统,确保飞行器可以在比到达地球强13倍的阳光下正常工作。
与RTOS相比,通用操作系统行为则充满了不确定性。例如,在一项智能手机的性能评测中,对iPhone XS Max (搭载iOS)和三星S10 Plus (搭载Android),分别在系统冷启动和应用预加载两个场景下,统计启动17个APP应用的总耗时。系统冷启动后,iPhone打开APP所用时间为2分54秒,三星手机用时为2分30秒;应用预加载后,iPhone用时为42秒,而三星用时为46秒。前后两次测试的用时相差3-4倍,足以说明应用场景变化对系统性能带来冲击,通用操作系统行为的不可预见性,也由此可见一斑。
多源性因素将导致操作系统响应时间的不确定性,如:非抢占式内核、中断不可嵌套重入、资源竞争引起优先级反转、连续缓存未命中、网络传输抖动等。对此需要精准分析、精心设计、精细实现和全面测试,才能杜绝RTOS出现各种不可预测的随机性。
值得一提的是,RTOS的“准”强调的是在限定时间内提供准时服务,而刻画限定时间快慢,则需采用实时性指标进行评估。随着星弹箭船航天产品应用场景不同,对系统实时性需求千差万别,难以一概而论,既有微秒级的强实时应用、毫秒级的一般实时应用,也涵盖秒级的弱实时应用。
2. 稳:
稳定性是RTOS最核心的技术特征,是确保航天系统可靠运行的重要基础设施。事实证明,采用稳定可靠的RTOS,将会显著降低系统中并发与竞争类错误、中断使用错误、接口不匹配等问题,分散技术风险,提高软件质量。
空间飞行器长期工作在恶劣的空间环境,承受着宇宙射线、太空极端温度变化等严峻考验,硬件将出现瞬时或永久故障,这对软件产品,尤其是RTOS的稳定鲁棒性与容错能力提出了挑战,需要根据系统工作模式和工况,提前采取预防措施并预制应对策略。对于事先不可预见的外部条件变化,操作系统级的容错价值在于能尽早检测出非正常状况,激活故障保护机制,采取措施有效止损,从而有助于最大限度地保障业务连续和航天器安全。
例如,阿波罗11号在即将登月前,由于航天员实施了一项新的操作配置,使得制导计算机内存耗尽引发系统过载错误,导致计算机多次重启。虽然该错误未曾在地面测试中发现,但机载操作系统仍有效保障了系统关键任务以及导航数据不受影响,使得登月任务如期完成。
同样的,1997年的火星探路者在着陆第10天起,出现了始料未及的、由于低优先级任务抢占互斥资源,导致高优先级任务调度超时的优先级反转错误,从而引起硬件复位、数据丢失。为了修复错误,最终启用了VxWorks实时操作系统提供的优先级继承协议予以解决。
航天装备是最具挑战性的安全关键系统,而RTOS 的“稳”直接影响了空间飞行器的寿命。对此,需要在软硬件深度协同基础上,综合运用防错、检错、容错、纠错等多种技术手段设计加固型的RTOS,并采取符合安全关键系统编程规范(如MISRA C)的技术手段予以实现,进而,对核心功能模块开展严格的形式化验证,以此构成航天软件产品的可靠基座。
3. 省:
通用操作系统的可使用资源充足,可以广泛适用于不限定场景的各种应用领域。而RTOS则是一类面向特定应用领域、可用资源受限的专用型操作系统。其中,面向特定应用领域是指RTOS需要与应用系统的软硬件条件、任务负载特性适配;可用资源受限是指RTOS需要满足应用系统在功能、性能、成本、体积、功耗等方面的约束。因此,RTOS讲究精准适配、量体裁衣和消除冗余,强调为应用而定制优化。
具体而言,RTOS通过运用各种优化技术来“省”资源,主要体现在:省时间(如:系统启动时间、中断响应时间、任务切换时间等)、省存储(如:代码存储空间、系统运行内存、数据缓存等)、省交互(如:任务同步、任务通信、网络通信等)和省能耗。例如,ThreadX是一个深度嵌入的实时操作系统,其最小内核仅需要2 KB的指令存储区域和1 KB RAM的运行空间,可在120个周期内完成启动,在200M主频下,任务上下文切换仅需0.4微秒。又如,搭载Android或iOS的智能手表续航时间为2-3天,而搭载经过能耗优化的RTOS,轻智能手表的续航能力可达两周以上。
为了最大程度挖掘资源潜力,实现提质增效,RTOS纷纷采取了别具一格的独特技术途径。仅以RTOS内核性能优化技术为例,ThreadX提出了基于抢占阈值优先级调度策略,可以提高任务上下文切换效率;μC/OS设计了优先级位图算法,确保了任务调度时间的确定性;RTEMS和VxWorks分别采用了内核抢占点模型,以及延迟工作队列内核可重入模型,缩短了中断响应时间;而INTEGRITY则对内核系统调用服务进行了深度性能优化。
为了精确匹配硬件特性和应用需求,软件开发者可以采用功能配置和裁剪工具按需定制RTOS,以提供最少硬件资源占用和最佳运行性能。配置过程可分为三个步骤,首先构建一个支持时钟中断的最小内核,随后,选配满足应用需求的功能组件(如调度器、信号量、消息队列等),进而,对功能组件内部选项进行细粒度配置,如调度器组件的配置选项包括任务优先级数量、是否使用时间片轮转等。通过对这些选项配置,最后生成的映像文件中仅包含与应用相关的代码,裁剪了无关冗余代码,实现了“量体裁衣”式精准适配。
弹箭星船器等航天产品硬件平台跨度大、功能需求多样化,如何进行快速的个性化适配和功能重构,对RTOS的自适应能力提出了三方面的要求。其一是系统需要具有最小化依赖、可装配的松耦合架构,以支持功能组件灵活加入、移除或更新;其次,需要克勤克俭优化系统资源使用,最大程度提升资源利用率;再者,需要有锋利的“奥卡姆剃刀”,能精准分析并剔除冗杂功能代码,从而保持系统简洁紧凑,运行稳定流畅。
03
观察与思考
虽然RTOS是一个面向特定应用领域的专用型操作系统,但是研制一个适用于航天安全关键系统应用的操作系统,所牵涉的技术并不仅局限于操作系统本身,至少还需要实时系统理论与方法、容错技术原理与方法、性能优化技术、软件体系结构设计、编译依赖分析等技术,并需要研制一系列支撑工具(包括:运行时库、开发环境、工具链、调试器、模拟器、仿真器、分析器等),同时需要掌握操作系统的测试理论与方法。
由此可见,RTOS的研发和演进是一个平台化的系统工程,其成熟性的表现在于构筑起一套可靠完整、自主可控的软件技术栈。纵观目前领先的RTOS产品,如VxWorks、INTEGRITY,均自主维护了由操作系统、编译器、调试器等一系列基础软件在内的完整技术平台,使得技术发展与服务能力基础坚实,发展游刃有余,而全球第三大实时操作系统ThreadX被微软公司收购后,也进一步完善和丰富了技术平台。
04
回顾与展望
纵观RTOS发展40年历史,大致经历了4个阶段:
1)上个世纪80年代,以VRTX、OS-9、pSOS为代表的实时内核。
2)90年代,以VxWorks、INTEGRITY、RTEMS为代表,形成了功能较为完整的RTOS产品形态。
3)进入21世纪,以VxWorks 653、INTEGRITY-178为代表,采用虚拟化、时空分区两级调度等技术,实现了强容错和隔离保护的RTOS,进而升级为VxWorks 653多核版本和INTEGRITY-178 tuMP,支持同构、异构多核处理器,增强了实时性能。
4)近年来,支持各类AI内置智能设备,赋能智能边缘,实现AI驱动的端侧实时智能,又成为RTOS领域发展的新热点。
目前,世界航天已进入以互联网星座建设、空间资源开发、载人月球探测和深空探测为代表的新阶段,而高可靠、智能化是未来智能航天器的主要特点,RTOS将有力支撑航天智能产品的开发、部署、运行和服务,必将助力我国航天器飞得更可靠、更灵巧、更精准和更精彩!
天目全数字实时仿真软件SkyEye是基于可视化建模的硬件行为级仿真平台,能够为嵌入式系统开发、测试和验证提供虚拟运行环境。通过对真实硬件系统的单元模块进行软件化建模仿真,SkyEye可为各式各样的嵌入式软件提供虚拟运行环境,使嵌入式软件的开发和测试不再依赖于真实硬件。
SkyEye采用统一的时钟调度机制实现整个目标系统的时间控制并保证其实时性,即不论宿主机处理器运行性能如何,SkyEye都能保证其每秒执行的指令数是确定的,从而使RTOS可在虚拟环境中良好运行,便于开发人员对上层应用程序进行开发、测试和验证。
原文链接:https://mp.weixin.qq.com/s/AHBpZQ_LMIu4DhjKhhtyfA