在传统的嵌入式实时操作系统中,内核和应用都运行在同一级,应用程序可以无的拜候整个系统地址空间。因此在某些环境下,应用的潜在危险动作会影响其他应用和内核的正常运行,甚至导致系统崩溃或者误操作。
为了满足航空电子对高可靠性、高可用性以及高服务性的要求,1997年1月ARINC公布了ARINC653(航空电子应用software标准接口),并于2003年7月公布ARINC653 Supplement 1,对区间管理、区间通信及健康监测部分进行了补充说明,用以规范航空电子设备和系统的开发。
随即,国外各大嵌入式开发商接踵推出此类支持ARINC653,具有内核和应用保护机制的操作系统。但在国内的嵌入式范畴,这样的研究还有一定差距。基于此,本文提出了一种航空电子嵌入式实时操作系统(A-RTOS,Avionics RTOS)的一种设计思路,并在具有MMU和支持高级保护模式的目标板上完成了实现。
航空电子标准ARINC653 ARINC653主要阐述了模块化综合航空电子设备IMA(Integrated Modular Avionics)使用的应用software的基线操作环境。
它定义了航空应用与下层操作环境之间的接口和数值交换的模式以及服务的行为,并描写了嵌入式航空电子software的运行时环境。
ARINC653 Supplement 1对ARINC653的补充主要包括以下几点:在系统布局上,提出了System Partition的概念,明确区间上的应用调度应该是区间级别的,这些应用共享区间资源;区间管理方面,阐述区间调度中主时间框架的定义原则,并补充了区间模式的变迁过程;对区间间通信的原则进行更为详尽的说明;增长关于健康监测的错误级别和错误处理的解释。
software构成
航空电子中的核心模块software包括两类:应用software和核心software。位于应用software和操作系统OS之间的APEX(APplication EXecutive)接口,定义了系统为应用software供给的一个功能调集。利用这个功能调集,应用software可以控制系统的调度,通信和内部状态信息。APEX接口相当于为应用供给的一种高层语言。而对OS来说,是关于参数和入口机制的定义。
图1给出了ARINC653中各部分之间的瓜葛。
图1 核心模块软件结构
分区和区间管理
分区(Partitioning)是ARINC653中一个核心概念。在IMA(Integrated Modular Avionics)系统中,一个核心模块会包含一个或多个航空电子应用,并且这些应用要能够自力运行。分区就是航空电子应用中的一个功能划分。分区的单位称为区间,区间内的每一个执行单元称为进程项。每一个区间具有自己自力的数值、上下文和运行环境,这样做的好处是能够防止一个区间的错误影响到其他区间。另外,它能使得整个系统容易验证、明确承认和认证。
区间化以及区间的管理和调度是由OS来实现的。ARINC653为区间的调度规定了一种基于时间窗的循环调度算法。这种调度算法的原理如图2所示。
图2 基于时间窗的循环调度算法原理
图2基于时间窗的循环调度算法原理
为了完成各区间的周期性调度,由OS维护一个固定时间长度的主时间框架,该时间框架在模块的运行期内周期性的重复。每个时间框架可以划分为若干个时间窗口。系统利用一个事前确定的配置表,在规定的时间窗口内激活对应区间的运行。这样就可以保证每个应用在分配给它的时间周期内拜候公共资源不被打断。
ARINC supplement 1对主时间框架的时间定义原则进行了补充。它规定主时间框架的大小应该是核心模块中所有区间周期的最小公倍数的正整数倍,并应试虑到每个区间每次执行的时间长度和执行频率。
在ARINC653 Supplement 1公布时又增长了系统区间属性和启动条件属性。区间的工作模式包括空闲,冷启动,热启动和正常四种,如图3所示。每个区间所需资源在系统构建时指定,在区间初始化完成时区间对象创建。OS在进入运行模式时启动应用区间,然后区间进入正常运行模式。监测管理功能在响应致命错误时将重启区间或者停止区间的运行。
图3区间状态转化模型
A-RTOS系统设计与实现
A-RTOS的系统布局如图4所示。在此系统中,各个应用工作在所属区间的环境中,并且应用和内核及各个应用之间都被保护墙隔离,无法彼此破坏,从而保证了核心模块的可靠性。
图4 A-RTOS的系统结构
隔离和保护机制
隔离和保护是ARINC653首要强调的特性,也是必须解决的重点之一。A-RTOS主要采用两种方式来实现应用与内核以及应用之间的隔离和保护。
第一种方式是使用内存管理单元MMU。通过MMU能够实现逻辑地址到物理地址的转化,并且对访问权限进行控制。这样可以保护操作系统内核不受应用软件有意或无意的破坏,也有效的防止了各应用软件之间的相互破坏。图5给出了MMU的页目录/页表方式的地址转换流程。
图5 页目录/页表方式的地址转换流程
第二种方式就是系统调用。A-RTOS为了实现对内核及应用之间的保护,提供了两种运行形态:用户态和系统态。其中操作系统内核是运行在系统态的。因此用户态的应用是不能够直接调用系统内核提供的功能接口的,必须通过TRAP系统调用方式来进行。
此种方式下,当用户态的应用需要调用内核提供的系统调用时,首先要执行一组特殊的指令使系统进入系统态以便执行需要的系统调用,当调用完成后,内核将执行另一组特征指令将系统返回到用户态。
每种支持保护模式的系统都提供了专门的软中断命令来完成从用户态进入系统态的功能。系统挂接一个软中断处理函数,所有的系统调用都通过这个软中断进入并以不同的参数值(即系统调用号)来加以区分。
系统调用的另一种形式是称为CALL-LIB的调用库机制。此种机制类似于windows系统的动态链接库,可以满足动态加载和更新组件的需要,也是A-RTOS的特点之一。
区间调度机制
ARINC653规定,区间调度模式的主要特征是:1)调度单元是区间;2)区间没有优先级;3)调度算法是预先确定的,按照固定的周期重复,并且只能由系统集成者进行配置。每个循环中,至少要为区间分配一个区间窗口。
在A-RTOS中,为了方便系统处理和能更好符合ARINC653规范,对以上规定进行了一定程度的修订:调度单元是区间和系统进程;区间具有优先级。但这些修订不影响操作系统区间层POS以及应用程序使用者,所以在外部特性上并不与ARINC653规定违背。
除此之外, A-RTOS还引入两个系统区间:Kernel区间和Idle区间。Kernel区间优先级最高,用于为整个系统的运行提供支持;并且一些系统级进程,也属于Kernel区间,方便调度。Idle区间具有最低的优先级,用于填充系统时间。当系统中没有其他区间可以运行,就运行Idle区间。
A-RTOS区间的调度原则是首先基于优先级调度,对同一优先级的区间可使用时间片轮转调度或者基于时间窗的循环调度策略。
A-RTOS采用两级调度机制。系统中具有区间的优先级位图和每个优先级对应的就绪链表,每个区间中也包含系统进程的优先级位图和对应的就绪链表。利用优先级位图和就绪链表,可以很容易的实现对区间和系统进程的调度。图6给出了这种调度模型。
图6 A-RTOS的区间调度模型
调度模块首先根据系统中的区间优先级位图和区间就绪链表来进行区间调度,被调度到的区间再根据区间内的进程优先级位图和进程就绪链表进行系统进程的调度。此方法相对于一级调度方式而言,能够保证调度时间的确定性,系统调度时间不会因为区间和系统进程的多少而发生变化,符合实时操作系统的定义。
在进行基于时间窗调度时,两个系统区间实际上也会参与调度。Kernel区间的运行时间会计算在区间调度配置表中当前区间的运行时间上。因此对于某应用区间而言,它的运行时间实际上会包含系统区间的运行。
进程池机制
在A-RTOS中,进程池是指一组由系统进行维护的进程,这些进程能够为应用提供一组服务。应用通过系统提供的调用接口对系统提出应用请求,系统把应用的请求交给进程池,进程池自动选择一个空闲进程对其进行服务,当服务完毕以后,系统会回收该系统进程。
进程池主要应用在时钟定时器服务、中断服务和异步IO操作。
异步信号和异步IO机制
A-RTOS支持异步信号机制,允许在某种情况下COS以异步方式发送信号到上层的POS。异步信号的一个典型使用就是异步IO。这是由于在ARINC653的应用中,POS中的进程通过系统调用产生阻塞性IO请求的时候,如果IO不是异步的,则此时该进程就会阻塞,等待系统调用的返回。但是COS并不知道POS中的应用进程的存在,当其中的一个进程阻塞的时候,整个区间都会被阻塞。采用异步IO方式可避免这种情况的发生。
图7 异步IO工作流程示意图
当应用请求了阻塞性的IO服务时,A-RTOS会启动称为一个系统进程来进行应用请求的IO操作,这就是异步IO机制。A-RTOS将这种为实现异步IO操作而创建的系统进程称为worker进程。
如图7,在ARINC653的应用中,当POS中的一个进程调用异步IO系统调用时,该系统调用检查此IO是否为阻塞工作方式,如果是,则创建一个worker进程去完成这个要求的IO工作,并返回一个AIO_PENDING值到POS。POS检查到这个返回值以后,把正在进行异步IO调用的进程从就绪队列取下放到等待队列,然后进行重调度。当worker进程完成了要求的IO操作时,即发送异步信号到POS,从而唤醒原阻塞进程。
最近,波音787梦幻班机(Dreamliner)举行了首飞仪式。这不仅是世界航空史上的一个重要事件,而且与我们每一个普通百姓的旅行生活息息相关。为什么?
首先,因为波音787梦幻班机的舒适性是空前的。其中比较显著特色的是提高了舱内气压,从而使乘客感觉更加放松,更不容易产生疲劳感。
而且,因为波音787梦幻班机在环保方面具有指标性的意义。787堪称是目前最绿色的客机,这应该归功于它所配备的 IMA(Integrated Modular Avionics,集成模块化航空电子系统),在确保高性能的同时极大地缩减了设备的重量、占用的空间和能耗。减轻了机载设备的重量,就等于减少了燃油消耗,增加了航程,并且降低了二氧化碳的排放量。缩小了机载设备的体积,就等于提供了更多的空间来运载乘客、行李和货物。
更高的舒适度,更绿色环保,所有这些,都离不开787的神经系统——电子网络!
电子技术立大功
波音787梦幻班机之所以能够在能源利用率、适用范围和乘客舒适度等诸多方面取得如此引人注目的成就,离不开大量电子与网络新技术的支持。
近年来,航空电子技术在飞机制造业扮演者越来越重要的角色,波音787梦幻班机也是当代航空电子技术应用的代表之作,其数据通信系统由核心网络(CORE NETWORK)、通用核心系统和空地数据链组成,尤其是无线网络技术得到了大量应用。波音公司积极推广的信息管理系统,如电子飞行包(EFB)、电子记录本(ELB)、飞机状态监控系统(AHM)等,都已成为波音787飞机的标准配置。
为了提高乘客的舒适度和娱乐性,波音787飞机的机上娱乐系统(IFE)采用无线技术,取消了座椅间和侧壁板内的导线,座椅上的电子盒几乎消失了,这些变化不仅可以增加乘客的座椅空间,而且也显著降低了飞机的重量。同时,基于无线技术的IFE也更便于航空公司对飞机的客舱布局进行调整,来适应运输市场的变化。
波音787飞机的CCS(COMMON CORE SYSTEM,通用核心系统)由GE公司提供,包括计算机、网络和人机电子界面,构成了整架飞机的神经系统。它的基础,也就是波音787飞机通用核心系统的基础平台,是风河公司的Wind River VxWorks 653实时操作系统。
ARINC 653(航空电子应用软件标准接口)是为了满足航空电子设备对高可靠性、高可用性以及高服务性的要求而推出的,用以规范航空电子设备和系统的开发。各大嵌入式开发商相继推出支持ARINC653且具有内核和应用保护机制的操作系统,Wind River VxWorks 653是其中最有代表性的一个。
Wind River VxWorks 653平台提供严格、完整的ARINC 653集成化模块航空电子设备(IMA)基础架构,满足了航空与国防行业公司的严格需求,帮助航空电子设备制造商们解决了关键任务级应用的安全性要求,同时还实现了非关键应用在共享计算平台上的使用。
软件平台是基础
不论是对飞机、航天器还是战场上的电子协同单兵装备,追求更小的体积、更轻的重量以及更丰富的功能,都是永无止境的。如今的电子和半导体技术已经十分发达,芯片集成度非常之高,可以制造出体积更小、重量更轻的机载电子系统来完成大量复杂的任务,但目前面临的最大挑战就是,在越来越多的功能性软件共用性能高、体积小、重量轻的硬件部件时,这些任务在同一个硬件平台上会不会相互干扰?会不会乱成一团?如果一个软件崩溃了,别的软件是不是会也随之运行不下去?而且,任何一丝一毫的差错,都意味着宝贵的生命或者巨额的财产损失。
更严峻的挑战是,航空设备几乎都是多厂商联合提供,这就进一步增加了多种任务软件共用电子平台的难度。同时,在当今竞争极为激烈的航空航天与国防军工市场,设备制造商必须在预算和时间要求都非常严苛的条件下推出功能非常丰富的产品。在达成这些商业目标的同时,这些设备的性能、安全性和可靠性还不能打任何折扣。时间紧,经费紧,但设备还必须确保安全可靠,因为这可是人命关天的事情。
例如787梦幻客机虽然是由波音制造,但其中的电子系统主体却是由GE公司提供,而GE公司又选择Intel全资子公司风河公司作为操作系统提供商。多种软件应用来自多家厂商,这就给兼容性、安全性、可靠性带来了更大的挑战。为了应付这种挑战,唯一的出路就是采用开放、灵活、标准化的架构,让这么多不同的厂商在严格遵循开放标准的前提下,灵活地发挥各自的创造性。ARINC 653的核心就是一套工业标准,用来规范在时间和空间上如何来分隔计算机资源,确保无论再多的软件运行在单一的硬件平台上,都不会相互干扰和影响。
风河公司的Wind River VxWorks 653就是这样一个久经考验、达到商业级水平的操作系统平台。
早在服务于波音787梦幻班机之前,风河公司已经在航空航天与国防领域服务超过26年,的Wind River VxWorks 653平台更是其中的核心产品。就在不久前媒体有报道,在NASA的新一轮宇航计划中,“战神1号”载人火箭和“战神5号”载货火箭也是采用Wind River VxWorks 653作为操作系统。
不论我们乘坐在舒适的波音787梦幻班机里面,还是从外面观看这个可以在万米高空飞行的金属殿堂,都不要忘记航空电子设备、特别是其中的软件。正是这个先进的神经系统,既给了我们愉悦感,又给了我们安全感。
Re:关于OPENGL与OPENGL ES的区别
早先定义OpenGL ES是OpenGL的嵌入式设备版本,但由于嵌入式设备要求的是高性能,所以一些其它纯追求高性能的设备也开始用这种API方式,比如 SONY PlayStation 3。
OpenGL ES相对OpenGL删减了一切低效能的操作方式,有高性能的决不留低效能的,即只求效能不求兼容性(和苹果的作风类似)。
典型:
1.没有double型数据类型,但加入了高性能的定点小数数据类型。
2.没有glBegin/glEnd/glVertex,只能用glDrawArrays/glDraw...............
3.没有实时将非压缩图片数据转成压缩贴图的功能,程序必须直接提供压缩好的贴图
OpenGL 4.1规范发布 全面兼容OpenGL ES 2.0
OpenGL的脚步是越来越快了:Khronos Group今天又发布了该规范两年内的第六次升级“OpenGL 4.1”,维持了这个免费开源规范的快速进化,距离上个版本OpenGL 4.0也仅仅过去了四个半月。
OpenGL 4.1规范由OpenGL ARB(架构审核委员会)工作组定义,继续保持全面向下兼容,并加入了新版OpenGL着色器语言GLSL 4.10和一系列新的扩展。
OpenGL 4.1核心规范主要新功能:
- 全面兼容OpenGL ES 2.0 API,方便移动和桌面平台之间的移植。
- 支持着色器程序对象二进制文件的查询和载入,节省重编译时间。
- 支持将程序与编程阶段单独绑定,提高编程弹性。
- 支持位浮点组件顶点着色单元输入,提高几何精度。
- 支持渲染界面多重视角,提高渲染弹性。
OpenGL 4.1新引入的ARM扩展包括:
GL_ARB_cl_event
GL_ARB_debug_output
GL_ARB_robustness
GL_ARB_shader_stencil_export
GLX_ARB_create_context_robustness
WGL_ARB_create_context_robustness
OpenGL 4.1规范文档官方下载:
http://www.opengl.org/registry/
图形处理芯片是显卡的核心,显卡的主要技术规格和性能基本上取决于图形处理芯片的技术类型和性能。衡量显示处理芯片的技术先进性主要是看其所具有的二维/三维图形处理能力、芯片图形处理引擎的数据位宽度、与显示存储器之间数据总线宽度和所支持的显存类型容量、内部RAMDAC(模/数转换器)的工作时钟频率、具备几条像素渲染处理流水线、所支持的图形应用程序接口(API)种类以及芯片生产工艺技术水平等。