1.3.4 典型嵌入式操作系统
使用嵌入式操作系统主要是为了有效地对嵌入式系统的软硬件资源进行分配、任务调度切换、中断处理,以及控制和协调资源与任务的并发活动。由于C语言可以更好地对硬件资源进行控制,嵌入式操作系统通常采用C语言来编写。当然,为了获得更快的响应速度,有时也需要采用汇编语言来编写一部分代码或模块,以达到优化的目的。嵌入式操作系统与通用操作系统相比在两个方面有很大的区别:一方面,通用操作系统为用户创建了一个操作环境,在这个环境中,用户可以和计算机交互,执行各种各样的任务;而嵌入式系统一般只是执行有限类型的特定任务,并且一般不需要用户干预。另一方面,在大多数嵌入式操作系统中,应用程序通常作为操作系统的一部分内置于操作系统中,随同操作系统启动时自动在ROM或Flash中运行;而在通用操作系统中,应用程序一般是由用户来选择加载到RAM中运行的。
随着嵌入式技术的快速发展,国内外先后问世了多种嵌入式操作系统,较为常见的国外嵌入式操作系统有μC/OS、FreeRTOS、嵌入式Linux、VxWorks、QNX、RTX、Windows CE和Android等。虽然国产嵌入式操作系统发展相对滞后,但在物联网技术与应用的强劲推动下,国内厂商也纷纷推出了多种嵌入式操作系统,并得到了日益广泛的应用。目前较为常见的国产嵌入式操作系统有华为Lite OS、华为Harmony OS(鸿蒙OS)、阿里AliOS Things、翼辉SylixOS、睿赛德RT-Thread等。
1.华为Lite OS
Lite OS是华为技术有限公司(简称华为)于2015年5月发布的轻量级物联网操作系统,遵循BSD-3开源许可协议,最新版本是1.1.0。其内核包括任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理、定时器和异常管理等操作系统的基础组件,组件均可以单独运行,另外还提供了软件开发工具包Lite OS SDK。目前Lite OS支持ARM Cortex-M0/M3/M4/M7等芯片架构,适配了包括ST、NXP、GD、MindMotion、Silicon、Atmel等主流开发商的开发板,具备“零配置”“自发现”“自组网”的能力。
Lite OS的特点主要包括:
1)高实时性、高稳定性。
2)超小内核,基础内核体积可以裁剪至不到10KB。
3)低功耗,最低功耗可在μW级。
4)支持动态加载和分散加载。
5)支持功能静态裁剪。
6)开发门槛低,设备布置以及维护成本低,开发周期短,可广泛应用于智能家居、个人穿戴设备、车联网、城市公共服务和制造业等领域。
2.华为Harmony OS
Harmony OS是华为推出的基于微内核的全场景分布式操作系统,2019年推出Harmony OS 1.0版本,2020年9月升级到2.0版本。Harmony OS采用了微内核设计,通过简化内核功能,使内核只提供多进程调度和多进程通信等最基础的服务,而让内核之外的用户态尽可能多地实现系统服务,同时添加了相互之间的安全保护,拥有更强的安全特性和更低的时延。Harmony OS使用确定时延引擎和高性能的进程间通信(IPC)两大技术来解决现有系统性能不足的问题。其确定时延引擎可在任务执行前分配任务执行优先级及时限,优先级高的任务资源将优先保障调度,同时微内核结构小巧的特性使IPC性能大大提高。Harmony OS的“分布式OS架构”和“分布式软总线技术”具备公共通信平台、分布式数据管理、分布式能力调度和虚拟外设四大能力,能够将分布式应用底层技术的实现难度对应用开发者进行屏蔽,使开发者能够聚焦于自身业务逻辑,像开发同一终端应用那样开发跨终端分布式应用,实现跨终端的无缝协同。Harmony OS 2.0已在智慧屏、PC、手表/智能手环和手机上获得应用,并将覆盖到音箱、耳机以及VR眼镜等应用产品中。
3.阿里AliOS Things
AliOS Things是阿里巴巴集团控股有限公司(简称阿里巴巴)面向物联网领域推出的轻量级物联网嵌入式操作系统,2017年11月发布1.1.0版本,2020年4月迭代到3.1.0版本。除操作系统内核外,AliOS Things包含了硬件抽象层、板级支持包、协议栈、中间件、AOS API以及应用示例等组件,支持各种主流的CPU架构,包括ARM Cortex-M0+/M3/M4/M7/A7/A53/A72、RISC-V、C-SKY、MIPS-I和Renesas等。AliOS Things采用了阿里巴巴自主研发的高效实时嵌入式操作系统内核,该内核与应用在内存及硬件的使用上进行严格隔离,在保证系统安全性的同时,具备极致性能,如极简开发、云端一体、丰富组件和安全防护等关键能力。AliOS Things支持终端设备到阿里云Link的连接,可广泛应用在智能家居、智慧城市、智能出行等领域,正在成长为国产自主可控、云端一体化的新型物联网嵌入式操作系统。目前,AliOS Things已应用于互联网汽车、智能电视、手机和手表等不同终端,正在逐步形成强大的阿里云IoT生态。
4.翼辉SylixOS
SylixOS是由北京翼辉信息技术有限公司推出的开源嵌入式实时操作系统。从2006年开始研发,经过多年的持续开发与改进,已成为一个功能全面、稳定可靠、易于开发的大型嵌入式实时操作系统平台。SylixOS采用小巧的硬实时内核,支持256个优先级抢占式调度和优先级继承,支持虚拟进程和无限多任务数,调度算法先进、高效、性能强劲。目前已支持ARM、MIPS、PowerPC、x86、SPARC、DSP、RISC-V和C-SKY等架构的处理器,包括国产主流的飞腾全系列、龙芯全系列、中天微CK810和兆芯全系列等处理器,同时支持对称多处理器(SMP)平台,并针对不同的处理器提供优化的驱动程序,提高了系统的整体性能。SylixOS支持TPSFS(掉电安全)、FAT、YAFFS、ROOTFS、PROCFS、NFS和ROMFS等多种常用文件系统,以及Qt、MicroWindows、μC/GUI等第三方图形库,SylixOS还提供了完善的网络功能以及丰富的网络工具。此外,SylixOS的应用编程接口符合GJB 7714—2012《军用嵌入式实时操作系统应用编程接口》和IEEE、ISO、IEC相关操作系统的编程接口规范,用户现有应用程序可以很方便地进行迁移。目前,SylixOS的应用已覆盖网络设备、国防安全、工业自动化、轨道交通、电力、医疗、航空航天及汽车电子等诸多领域。
5.睿赛德RT-Thread
RT-Thread的全称是Real Time-Thread,是由上海睿赛德电子科技有限公司推出的一个开源嵌入式实时多线程操作系统,目前最新版本是4.0。3.1.0及以前的版本遵循GPL V2+开源许可协议,从3.1.0以后的版本遵循Apache License 2.0开源许可协议。RT-Thread主要由内核层、组件与服务层、软件包三个部分组成。其中,内核层包括RT-Thread内核和Libcpu/BSP(芯片移植相关文件/板级支持包)。RT-Thread内核是整个操作系统的核心部分,包括多线程及其调度、信号量、邮箱、消息队列、内存管理和定时器等内核系统对象,而Libcpu/BSP与硬件密切相关,由外设驱动和CPU移植构成。组件与服务层是RT-Thread内核之上的上层软件,包括虚拟文件系统、FinSH命令行界面、网络框架和设备框架等,采用模块化设计,做到组件内部高内聚、组件之间低耦合。软件包是运行在操作系统平台上且面向不同应用领域的通用软件组件,包括与物联网相关软件包、脚本语言相关软件包、多媒体相关软件包、工具类软件包、系统相关软件包以及外设库与驱动类软件包等。RT-Thread支持所有主流的MCU架构,如ARM Cortex-M/R/A、MIPS、x86、Xtensa、C-SKY和RISC-Ⅴ,即支持市场上几乎所有主流的MCU和WiFi芯片。相较于Linux操作系统,RT-Thread具有实时性高、占用资源少、体积小、功耗低、启动快速等特点,非常适用于各种资源受限的场合。经过多年的发展,RT-Thread已经拥有一个国内较大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业。
6.μC/OS-Ⅱ
μC/OS-Ⅱ(Micro Controller Operating System Ⅱ)是一种基于优先级的抢占式多任务实时系统。它属于一个完整、可移植、可固化及可裁剪的抢占式多任务内核,包含了任务调度、任务管理、时间管理、内存管理、任务间的通信和同步等基本功能。μC/OS-Ⅱ嵌入式系统可用于各类8位单片机,16位和32位微控制器,和数字信号处理器。
嵌入式系统μC/OS-Ⅱ源于Jean J. Labrosse在1992年编写的一个嵌入式多任务实时操作系统(RTOS),1999年改写后命名为μC/OS-Ⅱ,并在2000年被美国航空航天局认证。μC/OS-Ⅱ系统具有足够的安全性和稳定性,可以运行在诸如航天器等对安全要求极为苛刻的系统之上。
μC/OS-Ⅱ系统是专门为计算机的嵌入式应用而设计的。μC/OS-Ⅱ系统中90%的代码是用C语言编写的,CPU硬件相关部分是用汇编语言编写的,总量约200行的汇编语言部分被压缩到最低限度,便于移植到各种不同的CPU上。用户只要有标准的美国国家标准学会(American National Standards Institute, ANSI)的C交叉编译器,有汇编器、链接器等软件工具,就可以将 μC/OS-Ⅱ系统嵌入所要开发的产品中。μC/OS-Ⅱ系统具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,目前已经移植到了几乎所有知名的CPU上。
μC/OS-Ⅱ系统的主要特点如下:
(1)开源性 μC/OS-Ⅱ系统的源代码全部公开,用户可直接登录 μC/OS-Ⅱ的官方网站下载,网站上公布了针对不同微处理器的移植代码。用户也可以从有关出版物上找到详尽的源代码讲解和注释。这样使系统变得透明,极大地方便了 μC/OS-Ⅱ系统的开发,提高了开发效率。
(2)可移植性 绝大部分 μC/OS-Ⅱ系统的源代码是用移植性很强的ANSI C语言编写的,和微处理器硬件相关的部分是用汇编语言编写的。
μC/OS-Ⅱ系统能够移植到多种微处理器上的条件是,该微处理器有堆栈指针,有CPU内部寄存器入栈、出栈指令。另外,使用的C编译器必须支持内嵌汇编(in-line assembly)或者该C语言可扩展、可链接汇编模块,使得关中断、开中断能在C语言程序中实现。
(3)可固化 μC/OS-Ⅱ系统是为嵌入式应用而设计的,只要具备合适的软硬件工具,μC/OS-Ⅱ系统就可以固化到用户的产品中,成为产品的一部分。
(4)可裁剪 用户可以根据自身需求只使用 μC/OS-Ⅱ系统中应用程序需要的系统服务。这种可裁剪性是靠条件编译实现的。只要在用户的应用程序中(用#define constants语句)定义哪些μC/OS-Ⅱ系统中的功能是应用程序需要的就可以了。
(5)抢占式 μC/OS-Ⅱ系统是完全抢占式的实时内核。μC/OS-Ⅱ系统总是运行就绪条件下优先级最高的任务。
(6)多任务 μC/OS-Ⅱ系统2.8.6版本可以管理256个任务,目前预留8个给系统,因此应用程序最多可以有248个任务。系统赋予每个任务的优先级是不相同的,μC/OS-Ⅱ系统不支持时间片轮转调度法。
(7)可确定性 μC/OS-Ⅱ系统全部的函数调用与服务的执行时间都具有可确定性。也就是说,μC/OS-Ⅱ系统的所有函数调用与服务的执行时间是可知的。即 μC/OS-Ⅱ系统服务的执行时间不依赖于应用程序任务的多少。
(8)任务栈 μC/OS-Ⅱ系统的每一个任务有自己单独的栈,μC/OS-Ⅱ系统允许每个任务有不同的栈空间,以便压低应用程序对随机存取存储器(RAM)的需求。使用 μC/OS-Ⅱ系统的栈空间校验函数,可以确定每个任务所需要的栈空间。
(9)系统服务 μC/OS-Ⅱ系统提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存的申请与释放、时间相关函数等。
(10)可中断、支持嵌套 中断可以使正在执行的任务暂时挂起。如果优先级更高的任务被该中断唤醒,则高优先级的任务将在中断嵌套全部退出后被立即执行,中断嵌套层数可达255层。
嵌入式操作系统 μC/OS-Ⅱ移植与应用随着嵌入式系统的开发成为行业热点。在嵌入式应用中移植 μC/OS-Ⅱ系统,大大减轻了应用程序设计人员的负担,不必每次从头开始设计软件,代码可重用率高。
7.嵌入式Linux
嵌入式Linux系统就是利用Linux自身的特点,把它应用到嵌入式系统中。Linux诞生于1991年10月5日(这是第一次正式对外公布的时间),是一套开源、免费使用和自由传播的类UNIX操作系统。Linux是一个基于POSIX和UNIX的支持多用户、多任务、多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议,支持32位和64位硬件。Linux继承了UNIX以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux存在许多不同的版本,但它们都使用了Linux内核。Linux可安装在各类计算机中,如小型移动系统、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
Linux遵守通用公共许可证(General Public License, GPL)协议,无须为每例应用交纳许可证费,并且拥有大量免费且优秀的开发工具和庞大的开发人员群体。Linux有大量应用软件,源代码是开放且免费的,可以在稍加修改后应用于用户自己的系统,因此软件的开发和维护成本很低。Linux完全使用C语言编写,应用入门简单,只要懂操作系统原理和C语言即可。Linux运行所需资源少、稳定,并具备优秀的网络功能,十分适合嵌入式操作系统应用。
8.VxWorks
VxWorks是美国WindRiver公司于1983年设计研发的一种嵌入式实时操作系统,有良好的持续发展能力、可裁剪微内核结构、高效的任务管理、灵活的任务间通信、微秒级的中断处理及友好的开发环境等优点。由于其良好的可靠性和卓越的实时性,VxWorks被广泛地应用在通信军事、航空、航天等高精尖技术及实时性要求极高的领域,如卫星通信、军事演习、导弹制导、飞机导航等。VxWorks不提供源代码,只提供二进制代码和应用接口。
9.Android
Android是一种基于Linux的自由及开放源代码的操作系统,主要应用于移动设备,如智能手机和平板计算机,由Google公司和开放手机联盟领导及开发。
Android逐渐扩展到其他领域中,如电视、数码相机、游戏机和手表等。
10.Windows CE
Windows CE是微软公司嵌入式、移动计算平台的基础,它是一个抢占式、多任务、多线程并具有强大通信能力的32位嵌入式操作系统,是微软公司为移动应用、信息设备、消费电子和各种嵌入式应用设计的实时系统,目标是实现移动办公、便携娱乐和智能通信。
Windows CE是模块化的操作系统,主要包括4个模块,即内核、文件子系统、图形窗口事件子系统(GWES)和通信模块。内核负责进程与线程调度、中断处理、虚拟内存管理等。文件子系统管理文件操作、注册表和数据库等。图形窗口事件子系统包括图形界面、图形设备驱动和图形显示API函数等。通信模块负责设备与PC间的互联和网络通信等。目前,Windows CE的最高版本为7.0,作为Windows 10操作系统的移动版。Windows CE支持4种处理器架构,即x86、MIPS、ARM和SH4,同时支持多媒体设备、图形设备、存储设备、打印设备和网络设备等多种外设。除了在智能手机方面得到广泛应用之外,Windows CE也被应用于机器人、工业控制、导航仪、PDA和示波器等设备上。