《嵌入式实时操纵系统设计讨论.docx》由会员分享,可在线阅读,更多相关《嵌入式实时操纵系统设计讨论.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式实时操纵系统设计讨论dujing导语:本文提出了一种航空电子嵌入式实时操纵系统A-RTOS,AvionicsRTOS的一种设计思路,并在具有MMU和支持高级保护形式的目的板上完成了实现在传统的嵌入式实时操纵系统中,内核和应用都运行在同一特权级,应用程序可以无限制的访问整个系统地址空间。因此在某些情况下,应用的潜伏危险动作会影响其他应用和内核的正常运行,甚至导致系统崩溃或误操纵。为了知足航空电子对高可靠性、高可用性以及高效劳性的要求,1997年1月ARINC发布了ARINC653航空电子应用软件标准接口,并于2003年7月发布ARINC653Supplement1,对区间治理、区间通讯及安
2、康监测局部进展了补充讲明,用以标准航空电子设备和系统的开发。随即,国外各大嵌入式开发商相继推出此类支持ARINC653,具有内核和应用保护机制的操纵系统。但在国内的嵌入式领域,这样的研究还有一定差距。基于此,本文提出了一种航空电子嵌入式实时操纵系统A-RTOS,AvionicsRTOS的一种设计思路,并在具有MMU和支持高级保护形式的目的板上完成了实现。航空电子标准ARINC653ARINC653主要阐述了模块化综合航空电子设备IMAIntegratedModularAvionics使用的应用软件的基线操纵环境。它定义了航空应用与下层操纵环境之间的接口和数据交换的形式以及效劳的行为,并描绘了嵌
3、入式航空电子软件的运行时环境。ARINC653Supplement1对ARINC653的补充主要包括以下几点:在系统构造上,提出了SystemPartition的概念,明确区间上的应用调度应该是区间级别的,这些应用分享区间资源;区间治理方面,阐述区间调度中主时间框架的定义原那么,并补充了区间形式的变迁经过;对区间间通讯的原那么进展更为详尽的讲明;增加关于安康监测的错误级别和错误处理的解释。软件构成航空电子中的核心模块软件包括两类:应用软件和核心软件。位于应用软件和操纵系统OS之间的APEXAPplicationEXecutive接口,定义了系统为应用软件提供的一个功能集合。利用这个功能集合,应
4、用软件可以控制系统的调度,通讯和内部状态信息。APEX接口相当于为应用提供的一种高层语言。而对于OS来讲,是关于参数和入口机制的定义。align=center图1给出了ARINC653中各局部之间的关系/align分区和区间治理分区Partitioning是ARINC653中一个核心概念。在IMAIntegratedModularAvionics系统中,一个核心模块会包含一个或者多个航空电子应用,并且这些应用要可以独立运行。分区就是航空电子应用中的一个功能划分。分区的单位称为区间,区间内的每一个执行单元称为进程。每一个区间具有自己独立的数据、上下文和运行环境,这样做的好处是可以防止一个区间的错
5、误影响到其他区间。另外,它能使得整个系统轻易验证、确认和认证。区间化以及区间的治理和调度是由OS来实现的。ARINC653为区间的调度规定了一种基于时间窗的循环调度算法。这种调度算法的原理如图2所示。align=center图2基于时间窗的循环调度算法原理/align为了完成各区间的周期性调度,由OS维护一个固定时间长度的主时间框架,该时间框架在模块的运行期内周期性的重复。每个时间框架可以划分为假设干个时间窗口。系统利用一个事先确定的配置表,在规定的时间窗口内激活对应区间的运行。这样就可以保证每个应用在分配给它的时间周期内访问公共资源不被打断。ARINCsupplement1对主时间框架的时间
6、定义原那么进展了补充。它规定主时间框架的大小应该是核心模块中所有区间周期的最小公倍数的正整数倍,并应考虑到每个区间每次执行的时间长度和执行频率。在ARINC653Supplement1发布时又增加了系统区间属性和启动条件属性。区间的工作形式包括空闲,冷启动,热启动和正常四种,如图3所示。每个区间所需资源在系统构建时指定,在区间初始化完成时区间对象创立。OS在进入运行形式时启动应用区间,然后区间进入正常运行形式。监测治理功能在响应致命错误时将重启区间或停顿区间的运行。align=center图3区间状态转化模型/alignA-RTOS系统设计与实现A-RTOS的系统构造如图4所示。在此系统中,各
7、个应用工作在所属区间的环境中,并且应用和内核及各个应用之间都被保护墙隔离,无法互相破坏,进而保证了核心模块的可靠性。align=center图4A-RTOS的系统构造/align隔离和保护机制隔离和保护是ARINC653首要强调的特性,也是必须解决的重点之一。A-RTOS主要采用两种方式来实现应用与内核以及应用之间的隔离和保护。第一种方式是使用内存治理单元MMU。通过MMU可以实现逻辑地址到物理地址的转化,并且对访问权限进展控制。这样可以保护操纵系统内核不受应用软件有意或者无意的破坏,也有效的防止了各应用软件之间的互相破坏。图5给出了MMU的页目录页表方式的地址转换流程。align=cente
8、r图5页目录页表方式的地址转换流程/align第二种方式就是系统调用。A-RTOS为了实现对内核及应用之间的保护,提供了两种运行形态:用户态和系统态。其中操纵系统内核是运行在系统态的。因此用户态的应用是不可以直接调用系统内核提供的功能接口的,必须通过TRAP系统调用方式来进展。此种方式下,当用户态的应用需要调用内核提供的系统调用时,首先要执行一组特殊的指令使系统进入系统态以便执行需要的系统调用,当调用完成后,内核将执行另一组特征指令将系统返回到用户态。每种支持保护形式的系统都提供了专门的软中断命令来完成从用户态进入系统态的功能。系统挂接一个软中断处理函数,所有的系统调用都通过这个软中断进入并以
9、不同的参数值即系统调用号来加以区分。系统调用的另一种形式是称为CALL-LIB的调用库机制。此种机制类似于windows系统的动态链接库,可以知足动态加载和更新组件的需要,也是A-RTOS的特点之一。区间调度机制ARINC653规定,区间调度形式的主要特征是:1调度单元是区间;2区间没有优先级;3调度算法是预先确定的,按照固定的周期重复,并且只能由系统集成者进展配置。每个循环中,至少要为区间分配一个区间窗口。在A-RTOS中,为了方便系统处理和能更好符合ARINC653标准,对以上规定进展了一定程度的修订:调度单元是区间和系统进程;区间具有优先级。但这些修订不影响操纵系统区间层POS以及应用程
10、序使用者,所以在外部特性上并不与ARINC653规定违犯。除此之外,A-RTOS还引入两个系统区间:Kernel区间和Idle区间。Kernel区间优先级最高,用于为整个系统的运行提供支持;并且一些系统级进程,也属于Kernel区间,方便调度。Idle区间具有最低的优先级,用于填充系统时间。当系统中没有其他区间可以运行,就运行Idle区间。A-RTOS区间的调度原那么是首先基于优先级调度,对同一优先级的区间可使用时间片轮转调度或基于时间窗的循环调度策略。A-RTOS采用两级调度机制。系统中具有区间的优先级位图和每个优先级对应的停当链表,每个区间中也包含系统进程的优先级位图和对应的停当链表。利用
11、优先级位图和停当链表,可以很轻易的实现对区间和系统进程的调度。图6给出了这种调度模型。align=center图6A-RTOS的区间调度模型/align调度模块首先根据系统中的区间优先级位图和区间停当链表来进展区间调度,被调度到的区间再根据区间内的进程优先级位图和进程停当链表进展系统进程的调度。此方法相对于一级调度方式而言,可以保证调度时间确实定性,系统调度时间不会由于区间和系统进程的多少而发生变化,符合实时操纵系统的定义。在进展基于时间窗调度时,两个系统区间实际上也会介入调度。Kernel区间的运行时间会计算在区间调度配置表中当前区间的运行时间上。因此对于某应用区间而言,它的运行时间实际上会
12、包含系统区间的运行。进程池机制在A-RTOS中,进程池是指一组由系统进展维护的进程,这些进程可以为应用提供一组效劳。应用通过系统提供的调用接口对系统提出应用恳求,系统把应用的恳求交给进程池,进程池自动选择一个空闲进程对其进展效劳,当效劳完毕以后,系统会回收该系统进程。进程池主要应用在时钟定时器效劳、中断效劳和异步IO操纵。异步信号和异步IO机制A-RTOS支持异步信号机制,允许在某种情况下COS以异步方式发送信号到上层的POS。异步信号的一个典型使用就是异步IO。这是由于在ARINC653的应用中,POS中的进程通过系统调用产生阻塞性IO恳求的时候,假如IO不是异步的,那么此时该进程就会阻塞,
13、等待系统调用的返回。但是COS并不知道POS中的应用进程的存在,当其中的一个进程阻塞的时候,整个区间都会被阻塞。采用异步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,进而唤醒原阻塞进程。align=center图7异步IO工作流程示意图/align