嵌入式实时操作系统设计及应用探讨

发布者:阳关三迭最新更新时间:2010-06-21 来源: 赛迪网关键字:实时操作系统  分区  内存管理 手机看文章 扫描二维码
随时随地手机看文章

  在传统的嵌入式实时操作系统中,内核和应用都运行在同一特权级,应用程序可以无限制的访问整个系统地址空间。因此在某些情况下,应用的潜在危险动作会影响其他应用和内核的正常运行,甚至导致系统崩溃或者误操作。

  为了满足航空电子对高可靠性、高可用性以及高服务性的要求, 1997年1月ARINC发布了ARINC653(航空电子应用软件标准接口),并于2003年7月发布ARINC653 Supplement 1,对区间管理、区间通信及健康监测部分进行了补充说明,用以规范航空电子设备和系统的开发。

  随即,国外各大嵌入式开发商相继推出此类支持ARINC653,具有内核和应用保护机制的操作系统。但在国内的嵌入式领域,这样的研究还有一定差距。基于此,本文提出了一种航空电子嵌入式实时操作系统(A-RTOS,Avionics RTOS)的一种设计思路,并在具有MMU和支持高级保护模式的目标板上完成了实现。
  
  航空电子标准ARINC653
  
  ARINC653主要阐述了模块化综合航空电子设备IMA(Integrated Modular Avionics)使用的应用软件的基线操作环境。它定义了航空应用与下层操作环境之间的接口和数据交换的模式以及服务的行为,并描述了嵌入式航空电子软件的运行时环境

  ARINC653 Supplement 1对ARINC653的补充主要包括以下几点:在系统结构上,提出了System Partition的概念,明确区间上的应用调度应该是区间级别的,这些应用共享区间资源;区间管理方面,阐述区间调度中主时间框架的定义原则,并补充了区间模式的变迁过程;对区间间通信的原则进行更为详尽的说明;增加关于健康监测的错误级别和错误处理的解释。
  
  软件构成

  航空电子中的核心模块软件包括两类:应用软件和核心软件。位于应用软件和操作系统OS之间的APEX(APplication EXecutive)接口,定义了系统为应用软件提供的一个功能集合。利用这个功能集合,应用软件可以控制系统的调度,通信和内部状态信息。APEX接口相当于为应用提供的一种高层语言。而对于OS来说,是关于参数和入口机制的定义。

  图1给出了ARINC653中各部分之间的关系。

  
图1 核心模块软件结构

  分区和区间管理

  分区(Partitioning)是ARINC653中一个核心概念。在IMA(Integrated Modular Avionics)系统中,一个核心模块会包含一个或多个航空电子应用,并且这些应用要能够独立运行。分区就是航空电子应用中的一个功能划分。分区的单位称为区间,区间内的每一个执行单元称为进程。每一个区间具有自己独立的数据、上下文和运行环境,这样做的好处是能够防止一个区间的错误影响到其他区间。另外,它能使得整个系统容易验证、确认和认证。

  区间化以及区间的管理和调度是由OS来实现的。ARINC653为区间的调度规定了一种基于时间窗的循环调度算法。这种调度算法的原理如图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,从而唤醒原阻塞进程。

关键字:实时操作系统  分区  内存管理 引用地址:嵌入式实时操作系统设计及应用探讨

上一篇:Wind River令复杂的设备测试工作如释重负
下一篇:详解在Nios Startkit上运行uCLinux的实验

推荐阅读最新更新时间:2024-05-02 21:04

AVR单片机的RTOS-AVRX应用
引 言 随着技术的发展,嵌入式系统的设计及应用对人们的生活产生了很大的影响,并将逐渐改变人们未来的生活方式。在特定的操作系统上开发应用程序,可以使开发人员忽略掉很多底层硬件细节,使得应用程序调试更方便、易于维护、开发周期缩短并且降低开发成本,因而嵌入式操作系统深得开发人员的青睐。 AVR 微处理器是Atmel公司开发的8位嵌入式RISC处理器,它具有高性能、高保密性、低功耗、非易失性等优点,而且程序存储器和数据存储器可独立编址,并具有独立访问的哈佛结构。AVR单片机内核有丰富的指令集,通过32个通用寄存器直接与逻辑运算单元相连接,允许在一个周期内一条单一指令访问两个独立的寄存器,这样的结构使代码的执行效率比传统的
[单片机]
基于RTX51实时操作系统的交通灯控制系统的设计
摘要:相对与传统的开发方式而言,用实时操作系统进行开发是一种效率更高的方式。现以道路交通灯控制系统为例。具体介绍了基于小型多任务实时操作系统RTX51开发软件系统的方法和步骤,给出了系统的硬件电路及软件设计方案。实践测量表明,基于RTX51开发的软件系统,系统在实时性、稳定性和可靠性等方面都得到了提高。 关键词:交通灯控制系统;实时操作系统;RTX51 O 引言 一个高效的单片机智能控制系统,不仅要求系统能够同时执行多个任务,对每个任务作出实时响应,而且要求系统能够及时响应随机发生的外部事件,并对其作出快速处理。对于这样的系统应用,采用实时操作系统RTOS(Real-time-Operating System)作为系统软件
[工业控制]
基于RTX51<font color='red'>实时操作系统</font>的交通灯控制系统的设计
STR71xF嵌入式系统设计和实践
0 前言 随着信息化、智能化、网络化的发展,嵌入式系统技术也将获得广阔的发展空间。以信息家电为代表的互联网时代嵌入式产品,不仅为嵌入式市场展现了美好前景,注人了新的生命,同时也对嵌入式系统技术提出了新的挑战。这主要包括:支持日趋增长的功能密度、灵活的网络联接、轻便的移动应用和多媒体的信息处理。 由于因特网技术的成熟、带宽的提高,ICP和ASP在网上提供的信息内容日趋丰富、应用项目多种多样,像电话手机、电话座机及电冰箱、微波炉等嵌入式电子设备的功能不再单一,电气结构也更为复杂。为了满足应用功能的升级,设计师们一方面采用更强大的嵌入式处理器如32位、64位RISC芯片增强处理能力;同时还采用实时多任务编程技术和交叉开发工具技术来
[单片机]
STR71xF嵌入式系统设计和实践
iTOP-4412开发板-使用PartitionManager分区之后tf卡无法识别
tf卡使用 PartitionManager 软件分区后,在Windows上可能出现无法识别的情况。 tf卡分区之后,Windows下无法识别,并不影响系统的烧写,用户可以按照手册上的方 法在 Ubuntu 上正常使用,按照正常的烧写流程即可。 说到定位和导航,大家容易有几个误区,请务必理解以下知识点。 下面介绍一下,在烧写完毕之后,如何使 tf 卡在 Windows 上可以识别。 pc 上打开磁盘管理,计算机→管理→磁盘管理,如下图所示。 如上图所示,上方两个是不显示的盘符,对应下方磁盘 1 的两个主分区。 右击第二个盘符,弹出如下图所示对话框。选择“更改驱动器号和路径”。 弹出如下对话框,点击“添加
[单片机]
iTOP-4412开发板-使用PartitionManager<font color='red'>分区</font>之后tf卡无法识别
AVR单片机的RTOS-AVRX应用
引 言   随着技术的发展,嵌入式系统的设计及应用对人们的生活产生了很大的影响,并将逐渐改变人们未来的生活方式。在特定的操作系统上开发应用程序,可以使开发人员忽略掉很多底层硬件细节,使得应用程序调试更方便、易于维护、开发周期缩短并且降低开发成本,因而嵌入式操作系统深得开发人员的青睐。   AVR微处理器是Atmel公司开发的8位嵌入式RISC处理器,它具有高性能、高保密性、低功耗、非易失性等优点,而且程序存储器和数据存储器可独立编址,并具有独立访问的哈佛结构。AVR单片机内核有丰富的指令集,通过32个通用寄存器直接与逻辑运算单元相连接,允许在一个周期内一条单一指令访问两个独立的寄存器,这样的结构使代码的执行效率比传统的复杂指令集
[单片机]
嵌入式实时操作系统μC/OS-II在GPRS终端系统中的应用
  GPRS是在目前运行的GSM网络基础上发展起来的数据业务,可以采用与GSM同样的调制技术、频率,以及同样的TDMA帧结构。利用现有的基站子系统(BSS),GPRS从一开始就可以提供全面的覆盖。   GPRS终端系统的硬件组成   GPRS终端系统主要由控制部分和GPRS无线模块组成,如图1所示。      图1 GPRS终端的硬件组成原理   为了适应嵌入式技术在GPRS通信中的应用,系统的控制部分采用了S3C44B0x芯片。   S3C44B0x是16/32位RISC微处理器, 为手持设备和通常应用提供了一种高性价比的解决方案。   S3C44B0x具有丰富的片内资源,可以通过串行接口操作GPRS模块,操作指令为AT命
[单片机]
嵌入式<font color='red'>实时操作系统</font>μC/OS-II在GPRS终端系统中的应用
嵌入式实时操作系统设计探讨
在传统的嵌入式实时操作系统中,内核和应用都运行在同一特权级,应用程序可以无限制的访问整个系统地址空间。因此在某些情况下,应用的潜在危险动作会影响其他应用和内核的正常运行,甚至导致系统崩溃或者误操作。 为了满足航空电子对高可靠性、高可用性以及高服务性的要求, 1997年1月ARINC发布了ARINC653(航空电子应用软件标准接口),并于2003年7月发布ARINC653 Supplement 1,对区间管理、区间通信及健康监测部分进行了补充说明,用以规范航空电子设备和系统的开发。 随即,国外各大嵌入式开发商相继推出此类支持ARINC653,具有内核和应用保护机制的操作系统。但在国内的嵌入式领域,这样的研究还有
[应用]
构造一个51单片机的实时操作系统
摘 要:从Keil C51的内存空间管理方式入手,着重讨论实时操作系统在任务调度时的重入问题,分析一些解决重入的基本方式与方法:分析实时操作系统任务调度的占先性,提出非占先的任务调度是能更适合于Keil C51的一种调度方式。为此,构造这一实时操作系统,并有针对性地介绍此系统的堆管理方法、任务的建立以厦任务的切换等。 关键词:51单片机 实时操作系统 任务重八调度 目前,大多数的产品开发是在基于一些小容量的单片机上进行的。51系列单片机,是我国目前使用最多的单片机系列之一,有非常广大的应用环境与前景,多年来的资源积累,使51系列单片机仍是许多开发者的首选。针对这种情况,近几年涌现出许多基于51内核的扩展芯片,功能越来越齐全,速
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved