嵌入式操作系统
嵌入式操作系统(英语:Embedded Operating System,简称EOS)是一种支持嵌入式应用程序的操作系统,它用于控制和管理嵌入式系统中的软硬件资源,提供系统服务的软件结合。嵌入式操作系统主要包括嵌入式内核、嵌入式TCP/IP网络系统、嵌入式文件系统三部分,其中内核功能包括内存管理、任务管理、进程管理、中断管理、时间管理等;网络系统提供符合TCP/IP协议标准的协议栈;文件系统具有文件的存储、检索、更新等功能。
嵌入式系统最早起源于20世纪60年代,早期的嵌入式系统功能单一、控制简单,因此对嵌入式操作系统需求不大。进入20世纪80年代,开始出现简单的操作系统,这一时期的操作系统虽然较为简单,但具有了一定的兼容性和扩展性,内核精巧且效率高。20世纪90年代出现的嵌入式操作系统,其实时性大为提高,具有高度的模块化和扩展性。到21世纪,嵌入式操作系统开始应用到各类网络之中,其与云计算、大数据以及人工智慧进行了深度结合。按照实时性分类,嵌入式操作系统可分为硬实时操作系统和软实时操作系统;按商业模式分类,嵌入式操作系统可分为商用型嵌入式操作系统和免费型嵌入式操作系统。
嵌入式操作系统的应用遍及人们的日常生活,例如应用于工控、网络设备等领域的VxWorks,应用于通信、航空领域的Delta Os以及应用于WSN的Tiny Os等。随着技术的发展,嵌入式操作系统逐渐向着定制化、网络化、节能化、人性化的方向发展。
概念定义
嵌入式操作系统(Embedded Operating System,EOS)是一种支持嵌入式应用程序的实时操作系统,它用于控制和管理嵌入式系统中的软硬件资源,提供系统服务的软件结合。嵌入式操作系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
发展历程
无操作系统时期
嵌入式系统软件和嵌入式硬件共同构成了嵌入式系统,而嵌入式操作系统便属于嵌入式软件得一部分,早期的嵌入式系统功能单一、控制简单,因此并不需要嵌入式操作系统。嵌入式系统的出现最早可以追溯至20世纪60年代,当时在通信系统中针对电子机械电话交换的控制,被称为“存储是程序控制系统”(Stored Program ctrl),为了灵活兼容考虑,20世纪70年代开始出现了系统化、模块化的单板机,包括Inter公司的iSBC系列、Zilog公司的MCB等。之后为了兼容不同厂家的OEM产品,促进了工业控制微型计算机系统总线的诞生。
20世纪70年底,微处理器得出现使得嵌入式系统才获得了飞速发展。1971年11月,Inter公司推出了全球首款微处理器Inter 4004,在这款微处理器上,Inter公司第一次将算术运算器和控制器电路集成在一起。在此之后不同的厂家相继推出了包括Inter 8080/8085/8086、Motorola 6800/68000以及Zilog的Z80、Z8000等在内的8位、16位的微处理器,以这些微处理器为核心的系统被广泛应用于武器装备、仪器仪表、医疗装备等领域。
随着微处理器的广泛应用,计算机厂家开始以插件方式向用户提供OEM产品,再由用户根据自己的需求选择一套适合的CPU板、存储器板以及各式I/O插件板,从而构成专用的嵌入式计算机系统,并将其嵌入自己的系统设备中。
这一阶段嵌入式系统的主要特点是系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于使用简便、价格低廉,因此曾经在工业控制领域中得到了非常广泛的应用。
简单操作系统时期
现代意义上的通用嵌入式操作系统是起源于20世纪80年代,在当时随着微电子学工艺水平的提高,集成电路(Very large Scale Integration Circuit,VLSI)制造商开始把嵌入式应用中所需要的微处理器、I/O接口、A/D和D/A转换、串口调试软件以及RAM、ROM等部件集成在一个VLSI中,从而制造出面向I/O设计的微控制器,即单片机,其随后发展的DSP(Digital Signal Processor)产品进一步提升了嵌入式计算机系统的技术水平,并迅速渗入国防军事、消费电子、医用电子、通信电子等领域。这一时期出现了控制系统负载和监视应用程序运行的简单嵌入式操作系统。1981年,ReadySystem公司发布了第一款商用嵌入式操作系统(VRTX),并先后被应用于早期的军事和民用产品中。
这一阶段嵌入式系统的主要特点是出现了大量高可靠、低功耗的嵌人式CPU(如PowerPC等),也出现了各种简单的嵌入式操作系统。此时的嵌入式操作系统已经初步具有了一定的兼容性和扩展性,内核精巧且效率高,主要用来控制系统负载以及监控应用程序的运行。
实时操作系统时期
20世纪90年代,面向实时信号处理算法的DSP产品向着高速度、高精度、低功耗方向发展,同时由于硬件的实时性要求提高,嵌入式系统软件的规模也逐渐扩大,嵌入式操作系统也发展为实时多任务操作系统(Real 时间 multi-taskingOperation System,RTOS)。其实时性得到了很大改善,已经能够运行在各种不同类型的微处理器上,具有高度的模块化和扩展性。
在这一时期,嵌入式操作系统已经具备了文件和目录管理、设备管理、多任务、网络、图形用户界面(GUI)等功能,并提供了大量的应用程序接口(API),从而使应用软件的开发变得更加简单。
面向网络时期
进入21世纪,随着网络化的普及,嵌入式操作系统也将应用到各类网络之中,它的功能、接口以及可拓展性也随之增强,用于适配网络化的运行场景。同时随着云计算、大数据以及人工智能的发展,嵌入式操作系统也会与之结合,发挥更大的作用。
由于不同领域间的需求差异,因此在不同领域的嵌入式操作系统的相关标准随之出台,典型的有面向综合模块化航电系统(Integrated Modular Avionics,简称IMA)领域的ARINC 653标准、面向汽车领域的OSEK(AUTOSAR)标准等。围绕这些标准要求各个软件公司推出了相应的嵌入式操作系统,如WindRiver公司的vxworks 653和OSEK产品,BAE公司的CsLE OS产品等。各类linux嵌入式应用操作系统迅速发展,由于具有源代码开放、系统内核小、执行效率高、网络结构完整等特点,很适合3C产品等嵌入式系统的需要,目前已经形成了能与Windows CE、Palm OS等嵌入式操作系统进行有力竞争的局面。
分类
典型的嵌入式操作系统可以按实时性分类分为硬实时操作系统和软实时操作系统,按商业模式分为商用型嵌入式操作系统和免费型嵌入式操作系统。
按实时性分类
硬实时操作系统
硬实时操作系统又称嵌入式实时操作系统,其主要功能是对多个外部事件,尤其是异步事件进行实时处理。虽然事件可能在无法预知的时刻到达,但是在软件上,必须在事件发生时能够及时地进行响应(系统响应时间),并在时间耗尽之前提交响应结果,即使在尖峰负荷下也应如此。因此,对嵌入式实时操作系统的实时性要求除快速性外,另一个重要特点就是系统的确定性,即系统能对运行在最好和最坏的情况下做出精确的估计。其主要用于通信、军事、航天、控制等领域,在这些领域中,人机交互要求相对较弱,可靠性和实时性要求高,运行环境复杂多变,其典型代表有VxWork、RTEMS、QNX、μC/OS-Ⅱ、Nucleus等。
软实时操作系统
软实时操作系统仅要求事件响应是实时的,并不要求限定某一任务必须在多长时间内完成。主要用于类PC、手持设备、家用电器、个人通信终端等消费电子产品,这类系统的典型代表是嵌入式分时操作系统。嵌入式分时操作系统也是一种多任务操作系统,但任务之间的耦合关系比较松散,任务间的调度一般采用时间片轮转方式。对于嵌入式分时操作系统,软件的执行在时间上并不严格,时间上的错误一般不会造成灾难性的后果。这类系统的设计目标是实现大的任务吞吐量,因此算法的核心是分时思想。典型的嵌入式软实时操作系统如Window CE、Palm、EPOC、Embedded Linux等。
按商用模式分类
免费嵌入式操作系统
免费嵌入式操作系统是完全开源的,允许开发者免费获得源代码,其典型代表有Rtems、eCOS、FreeRTOS等。
商用嵌入式操作系统
商用嵌入式操作系统的开发是以营利为目的的,这类操作系统的稳定性好,可靠性高,有完善的技术支持和售后服务,类如μC/OS-Ⅱ、VxWork、Window CE等。
系统特点
嵌入式操作系统具有专业性强、实时性好、可裁剪性好、可靠性高等特点。
组成与功能
嵌入式操作系统的组成主要包括嵌入式内核、嵌入式TCP/IP网络系统、嵌入式文件系统。
内核
嵌入式内核是嵌入式操作系统的基础,主要完成内存管理、任务管理、进程管理、中断管理、时间管理等。
进程管理
操作系统的基本任务之一就是进程管理,其需要为进程分配资源,实现进程间共享和减缓信息,保护进程资源,以及实现进程间同步。在嵌入式操作系统中,其进程状态分为三种:运行状态(Running)、就绪状态(Ready)、等待状态(Waitting)。在嵌入式应用中,多采用多任务的设计策略来实现任务调度,其大致可以分为3种,即优先级调度、轮转调度和时间片调度。
优先级调度按照高优先级任务被激活后,是否抢占CPU运行,分为优先级抢占和优先级不抢占。轮转调度是任务管理者让就绪任务按照一个固定的时间轮流运行。时间片运行就是任务管理者根据各任务不同的情况在不同数量的单位时间的时间片内运行。在嵌入式操作系统种一般配备有上述3种调度函数的库函数,来满足不同用户的差异化需求。
内存管理
在嵌入式操作系统中,通常不采用虚拟存储管理,而是采用静态内存分配(固定大小内存分配)和动态内存分配(可变大小内存分配),进程的数量和可能用到的内存容量可以在开发时预测,同时其存储管理也没有垃圾收集的功能。在内存分配的策略上,嵌入式操作系统具有一定的可裁剪性,即可以提供几种分配策略,以供用户在开发嵌入式系统时使用。
内存管理的另一特性为内存保护,在不同的嵌入式系统中也存在差异,例如在智能手机等领域,其代码很小,在内存保护方面较为薄弱,但在航空武器系统等领域中则要求其具有很强的内存保护功能。
中断管理
在多任务操作系统中,由于采用查询方式需要消耗大量的CPU时间。因此在嵌入式操作系统中基本上都采用中断方式来处理事件或I/O请求。在嵌入式操作系统中,中断管理负责中断的初始化安装、现场的保存和恢复、中断栈的嵌套管理等。在中断处理上,嵌入式操作系统由于受到代码量的限制,中断现场的保护往往由中断处理程序来完成。中断处理程序引发的任务切换过程是:任务A运行→响应中断并执行中断处理程序,切换到任务B→任务B运行退出后,切换到任务A→任务A继续运行。
时间管理
嵌入式操作系统可以提供高精度、应用可设置的系统时钟,其可以设置为10 ms以下,其提供日历时间,负责与时间相关的任务管理工作。其与中断管理息息相关,特别是在中断发生和退出时,为提高实时性,须提供快速的时间管理机制。此外,嵌入式操作系统还提供一定数量的时间管理服务例程供用户使用,例如任务自己等待一段时间以让出CPU、获取系统时间等。
用户接口
操作系统一般为用户提供两类接口,一是人机交互,包括视窗形式和命令行形式;二是操作系统提供给用户开发应用程序的接口,即系统调用。在嵌入式操作系统中,由于应用领域非常广泛,因此在不同的应用中,其提供的系统调用数量和功能也是不同的,其会根据实际被嵌入系统的具体需求来确定系统调用,以便达到在提供最有效的系统调用的同时具有最小的代码量。
网络系统
在嵌入式计算机系统中广泛使用了TCP/IP协议,嵌入式TCP/IP网络系统可以提供符合TCP/IP协议标准的协议栈,提供Socket编程接口。其主要特点为:
文件系统
嵌入式文件系统主要具有文件的存储、检索、更新等功能,一般不提供保护和加密等安全机制。它以系统调用和命令方式提供对文件的各种操作,其中包括设置和修改对文件和目录的存取权限;提供建立、修改、改变、删除目录等服务;提供创建、打开、读、写、关闭、撤销文件等服务。
体系结构
根据内核的设计(在内核包含哪些功能组件)以及系统中集成了哪些其他系统软件(如设备驱动程序和中间件),嵌入式操作系统可分为三类:宏内核结构、分层结构、微内核结构。
宏内核结构
宏内核结构又称整体结构、单体结构,适用于低端嵌入式应用开发,也是早期嵌入式软件开发的唯一体系结构。其特点是系统中每个函数有唯一定义好的接口参数和返回值,函数间调用不受限制;软件开发是设计、函数编码/调试、链接成系统的反复过程,所有函数相互可见,不存在任何的信息隐藏;函数调用可以有简单的分类,如核心调用、系统调用、用户调用等,用以简化编程;系统有唯一的主程序入口(如C程序的main函数)。
在宏内核内部,可以划分为不同个模块(或是层次或其他),但在其运行时,其模块间的通信并非消息传递,而是通过直接调用其他模块中的函数实现的,这也大大提高了代码的执行效率,降低了额外开销。但由于系统内众多的函数,相互之间复杂的调用关系使得操作系统维护困难,可移植性和扩展性非常差。
分层结构
分层结构是最常用的嵌入式软件体系之一,许多嵌入式操作系统、嵌入式数据库均为层次结构。其特点是每一层对其上层而言好像是一个虚拟的计算机(virtualmachine);下层为上层提供服务,上层利用下层提供的服务;层与层之间定义良好的接口,上下层之间通过接口进行交互与通信;每层划分为一个或多个模块(又称组件),在实际应用中可根据需要配置个性化的RTOS。
分层结构的优缺点也十分明显,它有利于将复杂的功能简化,便于设计实现;每层的接口都是抽象的,支持标准化,因此很容易支持软件的重用;可移植性、可替换性好;开发和维护简单,当要替换系统中的某一层时,只要接口不变,不会影响到其他层。其缺点是:系统效率低,由于每个层次都要提供一组API接口函数,从而影响系统的性能;底层修改时会产生连锁反应。
微内核结构
微内核结构又称客户机/服务器结构,为现代软件常用结构之一。其特点是仅保留操作系统中最核心的功能单元,将其他大部分功能剥离出去,在微内核中,只提供例如任务调度、任务间通信、底层的网络通信、实时时钟等基本服务,其他服务则以内核上的协作任务形式出现(功能服务器),需要时向服务器任务发出申请。
基于微内核的操作系统一般包含基本内核、扩展内核、设备驱动接口、应用编程接口。其优点为内核小,扩展性好;客户单元和服务单元的内存地址空间是相互独立的,因此系统的安全更高;各个服务器模块具有相对独立性,便于移植和维护。其缺点为内核与各个服务器之间通过通信机制进行交互,使微内核结构的效率降低;由于它们的内存地址空间是相互独立的,所以切换时,会增加额外的开销。
应用
领域
嵌入式操作系统的应用遍及人们的日常生活,例如无线通信和网络设备、智能家电、航空航天和军事装备、汽车电子以及物联网设备领域等。
工业控制领域
在工业控制领域,工业自动化设备发展的基础便是嵌入式芯片,特别是8位、16位、32位嵌入式微控制器的使用,使得网络化在工业过程控制、数字机床、电力系统、电网安全等方面得到普及,这一方面提高了生产效率和产品质量,另一方面也减少了人力成本。
同时在大量医疗仪器,如嵌入式心脏起搏器、嵌入式放射设备、分析监护设备,各种化验设备等采用嵌入式操作系统进行控制,其功能与性能都将得到大幅度的提高。
消费电子领域
3C产品、智能家居、机顶盒、掌上计算机、游戏机等设备都可以采用嵌入式操作系统。它可以通过电话线以及网络进行远程控制,此外还可以实现水、电、煤气的远程自动抄表,安全防火、防盗系统的使用使得智能生活更为安全便捷。
通信监测领域
在各种网络设备、手机、寻呼机、各类控制设备等领域,这些无线通信设备都会大量使用到嵌入式操作系统,不仅是通信,在水文监测、防洪、堤坝安全以及地震监测中均可实现智能化监管,特别是在一些环境恶劣的地区,嵌入式系统还可以实现无人监测。
智能汽车及交通领域
随着无线通信与全球定位技术的日益成熟和广泛应用,智能化车机系统将会集通信、信息、导航、娱乐和各类汽车安全电子系统于一体。智能交通系统(ITS)、车流量控制也会获得相应的发展。特定应用的嵌入式操作系统将是发展智能综合路口控制机、路车交互系统、新型停车系统、高速公路的信息监控与收费综合管理系统的关键技术,其应用将确保智能交通系统的低成本与高性能,大大提高系统的可靠性和智能化程度。
典型代表
不同操作系统可应用于不同领域,其典型应用有:
参考资料:
发展趋势
随着技术的发展,嵌入式操作系统逐渐向着定制化、网络化、节能化、人性化的方向发展。