RTOS嵌入式系统

2024-07-24

RTOS嵌入式系统(精选4篇)

RTOS嵌入式系统 第1篇

1 嵌入式系统有无操作系统性能对比

按照嵌入式操作系统的系统构成, 它具有标准化的任务管理机制, 可以提高开发单位的管理水平和开发人员的业务素质。每个操作系统都提供一套较为完整的应用编程接口API, 可以大大简化应用编程, 提高系统的可靠性。操作系统的引入可使应用软件与下层硬件环境无关, 便于嵌入式软件系统的移植。基于嵌入式实时操作系统可以直接使用许多的应用编程中间件, 即增加了嵌入式软件的复用能力, 又降低了开发成本, 缩短了开发周期。如表1所示在引入操作系统后嵌入式系统在很多方面都提高了系统的性能。

2 嵌入式系统应用RTOS是必然趋势

随着嵌入式系统的复杂性提高, 所需要完成的功能不断增加, 同样市场的推动留给嵌入式系统设计人员完成设计的时间越来越少, time-to-market的需求要求嵌入式系统设计人员快速地高质量地完成复杂的嵌入式系统。这就要求在设计中能够高效的重复利用己有的代码。而嵌入式操作系统正能够从以下几点满足以上的要求:

1) 能够充分利用操作系统自带的功能:一般的操作系统往往带有进程的管理, 中断的管理, 存储器的管理, 驱动程序的管理和标准的函数库的支持。有了这些, 设计人员就可不必白手起家, 充分利用系统提供的功能。并且由于这些功能都是系统自带的, 其可靠性和质量是可以信任的, 可以省去很多测试的时间和成本。

2) 提高应用程序和组件的可重用性:操作系统的一个任务是向上层应用程序提供一个公共的, 与硬件无关的接口平台。这样基于操作系统的应用程序在不同硬件平台可以方便地移植, 这一点对于嵌入式系统特别重要。因为不像通用计算机系统主要由X86处理器平台占据, 嵌入式系统的处理器类型层出不穷, 如果能使上层应用程序于硬件无关, 对于设计人员是十分有利的。同时由于一般操作系统都对于外围设备驱动程序进行独立封装, 与应用层隔离开来, 这样同样外围设备的驱动程序可以和不同的上层应用程序组合, 得到不同的嵌入式系统。

3) 提高系统的可调试性和可测试性:由于嵌入式操作系统都内嵌一定的调试功能, 如ECOS包含了GDB的支持, 设计人员即使没有昂贵的CIE工具也能进行指令级的调试。提高了开发效率, 缩短了开发周期。在嵌入式RTOS环境下, 开发一个复杂的应用程序, 通常可以按照软件工程中的解耦原则将整个程序分解为多个任务模块。每个任务模块的调试、修改几乎不影响其他模块。商业软件一般都提供了良好的多任务调试环境。[2]

3 通用操作系统与嵌入式操作系统特点对比

那么对于现在已经普遍采用且技术已经很成熟的通用操作系统为什么不能直接引入到嵌入式系统的操作系统中呢?造成嵌入式系统无法使用通用操作系统的原因有以下几点:

1) 嵌入式系统的多样性:嵌入式系统的处理器从4位, 8位到16位, 32位, 存储器容量从几KB到几MB, 有的有MMU, 有的没有MMU, 不可能有一个通用的操作系统可以针对所有的嵌入式系统。即使是某一种嵌入式操作系统也只能针对某一些类型的嵌入式系统。

2) 嵌入式系统的实时性要求:嵌入式系统的另一个特点是实时性, 而传统的通用操作系统, 如UNIX操作系统, 是针对大型主机的批处理应用而产生的, 其根本不考虑实时性, 虽然近年来Windows和Linux等通用操作系统也已经开始在设计中加入实时性的考虑, 但是由于不同的嵌入式系统有不同的实时性要求, 以上这些通用操作系统只能应用于软实时嵌入式系统, 而无法满足硬实时嵌入式系统苛刻的需求。

4 嵌入式操作系统未来发展的趋势

目前, 许多功能较强的嵌入式操作系统不断涌现出来, 这些操作系统各有特色, 我们可以从这些嵌入式操作系统开发的思路中得到启发找到解决嵌入式系统设计过程中所遇到困难的办法, 从而看到嵌入式操作系统未来发展的趋势。

1) 主机、目标机体系结构:主机、目标机体系结构是现在许多嵌入式操作系统采用的设计方法, 它是相对于开发过程而言的。由于嵌入式开发的工具比较欠缺也难以掌握, 嵌入式系统的开发相对来说难度较大。主机、目标机的体系结构是将开发工具放在主机上, 将操作系统的核心模块放在目标机上, 操作系统提供对跟踪调试进行支持的手段。开发者可以在目标机上运行操作系统和应用软件, 在主机上进行开发和调试, 方便了开发过程。

2) 模块划分:嵌入式系统的应用范围很广, 用于不同目的的嵌入式系统往往在功能、结构上有很大的差别。这就决定了用于系统的嵌入式操作系统也有着很大的区别, 也就要求嵌入式操作系统的设计应该在系统功能与结构的划分上有着特殊的考虑, 使得嵌入式操作系统具有很强的灵活性和适应性。现在嵌入式操作系统的发展有一个总的趋势就是增强操作系统的模块性。其具体做法就是将操作系统核心的一些功能独立出来, 做成单独的能够很方便拆卸的模块。[3]

综上所述, 由于嵌入式操作系统具有其独特的设计要求和特点, 且32位CPU的资源量非常大, 处理能力也非常强大, 如果还是采用手工编制CPU的管理程序, 面对复杂的应用, 很难发挥出32位CPU的处理能力, 并且程序也不可靠。操作系统的一个强项就是它可以使应用程序编码在很大程度上与目标板的硬件和结构无关。使程序员可以将尽可能多的精力放在应用程序本身, 而不必去关心系统资源的管理。使系统开发变得简单, 缩短开发周期。使应用系统更加健壮、高效、可靠。因而嵌入式操作系统的学习和应用对于嵌入式系统而言非常必要的。它是健壮的、低成本的、特性完备的操作系统。具有巨大的市场潜力和广阔的应用需求, 嵌入式操作系统技术及其产品必将得到更广泛的应用。

摘要:本文从嵌入式系统发展、特点及其设计要求着手, 分析了嵌入式系统引入实时操作系统 (RTOS) 的优点和好处。说明了嵌入式系统的设计引入操作系统的必要性。对有无操作系统的嵌入式系统的性能进行了对比。最后探讨了嵌入式实时操作系统的发展趋势。

关键词:嵌入式系统,RTOS,性能对比,发展趋势

参考文献

[1]桑楠.嵌入式系统原理及应用开发技术[M].北京:高等教育出版社, 2010, 7:118-119.

[2]吴明琪.典型嵌入式操作系统的性能研究与比较[D].上海:华东师范大学信息技术学院, 2005, 7:6-7.

RTOS嵌入式系统 第2篇

关键词:嵌入式系统;家居控制系统;研究;探讨

中图分类号:TP311文献标识码:A文章编号:1007-9599 (2011) 05-0000-02

Home Control System Research Based on Embedded System

Zhou Zuhua

(Vocational and Technical College,Guizhou University,Guiyang550003,China)

Abstract:At present,the rapid development of family intelligent technology,the family intelligent controller of home intelligent system is the key.Home control system based on embedded system has become one of our development focus of the study.Based on the study of a large number of home and abroad on the basis of the control system,a home control system to achieve:that is, the control module to combine with the operating system,plus a variety of sensors embedded home control system.

Keywords:Embedded system;Home control system;Research;Discussion

一、嵌入式系统家居控制系统的硬件设计及功能

对基于嵌入式系统家居控制系统的进行研究探讨,就需要我们对其硬件进行科学合理的设计,并充分实现其功能作用。因此,在设计嵌入式系统家居控制系统的时候,我们必须要充分考虑到控制系统的科学、稳定、扩展等特点。这样,就要求我们必须把嵌入式系统家居控制系统的硬件设计当作其中最为核心的组成部分来进行,尽量优化设计,最大限度地发挥其功能作用。一般情况下,我们可以把嵌入式系统家居控制系统设计成为核心模块和控制模块两个部分。在嵌入式系统家居控制系统中,核心模块主要用来构建嵌入式控制系统的,而控制模块则主要是一些位置处于外面环境的接口所组成的。实际上,嵌入式系统家居控制系统的硬件主要有:核心模块主要是由处理装置(如微处理器等)以及处于外面环境中的存储芯片等所组成的。就嵌入式系统家居控制系统的发展而言,三星公司所生产的S3C2440微处理器使用最多最广。这是因为,S3C2440微处理器被广泛应用到多媒体软件、便捷式通信产品等嵌入式系统内,同时还能够比较轻易地运行到Windows CE中。此外,因为整个嵌入式系统家居控制系统的实现要求比较高,所以采用三星公司生产的S3C2440微处理器则能够很好地满足了这些要求。处于外面环境中的存储芯片,即控制模块则采用芯片,通过串口信号线与微处理器相互连接,同时通过CPU进行控制。不过,这样需要增加相应的驱动线路。但是其触摸屏则采用了四线电阻式,直接把它同CPU相互连接起来。

二、嵌入式系统家居控制系统的软件设计及功能

通过Windows CE操作控制系统可以实现和满足嵌入式系统家居控制系统对实时性以及网络功能的具体要求。不过,我们也必须同时综合考虑开发成本以及难易程度等因素。此外,Windows CE操作控制系统具有比较好的用户界面,而且比较容易于操作、控制和管理等。同时,在嵌入式系统家居控制系统中,我们主要是应用层面的开发与研究。因此,选用Windows CE操作控制系统比较适合,也比较划算。但在Windows CE操作控制系统产品的开发过程中,有以下几个方面的重要内容值得我们重视:一是驱动程序的研究开发;二是内核定制;三是应用程序的研究开发等。以上几点在嵌入式系统家居控制系统极为重要与关键。而微软在这些方面都提供了比较好的开发工具,因而也就成为了内核定制以及应用程序研究开发的重要工具之一。

(一)嵌入式系统家居操作控制系统的平台定制

在嵌入式系统家居控制系统中,其硬件平台成功组建以后,我们必须结合具体的家居应用实际,针对特定的硬件定制嵌入式操作控制系统,这也是本文研究和探讨的重点。可以这么说,要想直接在嵌入式系统家居控制系统的硬件平台上编写相应的软件是相当困难的,因为嵌入式系统家居控制系统资源受到极大的限制。当前,人们通常是采用宿主机或者目标机等的方式进行,即就是首先在相应的电脑上编写控制程序,接着应用交叉编译方式,从而生成在目标平台上可以运行的二进制程序或文件,最后一个步骤是下载到相应的目标平台上运行,进而实现其功能与作用。但是,在进行嵌入式系统家居控制系统研究开发以前,我们必须首先要建立和配置好交叉研究开发的环境与条件。Windows CE操作控制系统作为一个很好的平台,其定制过程主要包括以下几个方面:一是确定并选择操作系统的基本配置,并且要为特定的操作控制平台确定和选择相应的微处理器以及支持包等。二是利用标准研究开发向导,并根据Windows CE操作控制系统的基本架构,结合目标硬件设备研究开发、添加适当的组件、设备驱动程序等,创建一个定制的平台。如果可以,就对一些配置文件进行修改之后,再培植所需要的功能模块中去,与此同时通过编译进而生成相应的镜像文件。三是应用串口、网络或USB等把编译生成的相应镜像文件下载到目标设备中,可以使用调试工具查看Windows CE操作控制系统的运行情况,并可以随时进行调试或修改。若有必要,可以重新进行配置、封装、调试以及修改等,直到达到用户的要求为止,从而更好地实现嵌入式系统家居控制系统的功能。四是最后需要导出相应的软件研究开发工具包,在运行后安装到系统中,从而使得系统可以进行特定硬件平台的应用程序研究与开发。

(二)嵌入式系统家居控制系统驱动程序的研究开发

通常情况下,由于嵌入式系统家居控制系统的驱动程序涉及到中断驱动程序和GPIO 驱动,因此可以采用单片驱动程序和分层驱动两种方式进行。在这里,单片驱动程序我们就不用多说了,而主要研究分层驱动程序。分层驱动程序主要由两个部分组成,即模型设备驱动程序依赖平台的驱动程序。微软为连接驱动程序提供了相应的设备驱动程序,模型驱动程序对于平台来说都是通用的,也就是同时都是源代码和库。总体上看,模型驱动程序主要执行以下任务:一是连接设备驱动程序提供器接口;二是把不同的操作控制系统连接在一起;三是负责与系统控制模块与内核之间的通信,与此同时,也包括诸如中断控制等一些复杂的操作。而设备驱动程序接口主要是供模型设备驱动程序调用,主要由模型设备驱动程序提供。而对于分层驱动程序方面,编写驱动主要就是要编写直接操作处理器中寄存器的相应数值和操作系统平台中传递的参数。通常,它们在操作控制系统的层面上,通过传递数值和返回参数,修改和获取S3C244的相应数值,并通过调用相关应用程序来实现需要的控制功能。

(三)嵌入式系统家居控制系统应用软件的研究开发

作为微软公司研究开发的Windows CE操作控制系统具有与Windows系统基本一致的功能与作用。当然,Windows CE操作控制系统的研究开发也有着自己显著的特征。对于Windows CE操作控制系统应用软件的研究开发,我们应当注意以下几点:首先,必须使用Unicode字符集的程序。其次,程序代码应当做到和最小,因为嵌入式设备一般都没有太大的空间容纳像台式电脑那样的内存,如果程序过大,运行的时间就会延长。再次,Windows CE操作控制系统应用软件的程序主要是通过驱动程序读取。直接获取与S3C2440端口相连的传感器的状态和数值后,把相关信息返回Windows CE操作控制系统应用软件的程序中,程序再根据传感器的状态及数值又把关联的信息通过调用串口驱动程序,发送相应的命令并传给有关功能模块,随后该模块发送信息到用户手机,用户就可以随时看到家中的变化。倘若用户要对家中的一些设备进行操作,就可以应用发送信息的方式把控制信息传给有关功能模块,该功能模块再将此信息又传到Windows CE操作控制系统应用软件的程序中,这时应用程序就可以控制相应的端口了,进而满足用户的具体要求。

三、结束语

在当今社会,随着家庭智能化技术的全面快速发展,家居控制系统的重要意义和作用越来越凸显在人们的面前,这也是嵌入式系统家居控制系统的关键所在。因此,我们必须结合实际,坚持以先进的现代科学技术和通信技术为前提与基础,尽力做到以嵌入式系统为技术核心,不断优化家居控制系统的结构与功能,保证其功能全面、性能稳定、耗能低下等特征,促进其全面快速健康发展,更好地为人们提供方便快捷的服务。

参考文献:

[1]赵静,梅军.嵌入式智能家居控制系统的研究与设计[J].今日电子,2010,2

[2]彭小军,李荣.基于ARM的嵌入式智能家居控制系统研究[J].低压电器,2009,18

[3]郭海杰,吴飞,雷必成.嵌入式智能家居控制系统的研究[J].福建电脑,2009,3

基于RTOS的智能拐杖系统设计 第3篇

世界卫生组织数据显示:中国盲人数量在800万以上,而且还以每分钟新增一例的数量增加,视障者人数高达1 300万以上。视力残疾者生活上有诸多不便,特别是出行时,经常会碰到障碍物、摔跤或走丢。虽然有相关机构培训导盲犬为盲人服务,但每条导盲犬的训练成本极高,申请者一般至少要等待3年。为此,本文设计了一款多功能智能拐杖系统。该系统使用51系列单片机,移植了实时操作系统Small RTOS51。使用实时操作系统,使系统软件设计变得简单方便,更易于维护和扩展相应功能。

1 SmallRTOS51简介

Small RTOS51由陈明计先生开发,主要运行于基于51系列单片机的硬件平台。该RTOS可以免费应用,源代码全部公开。Small RTOS51支持16个任务,每个任务可设置成不同的优先级。SmallRTOS51任务由4种状态组成:就绪、运行、等待和中断,4种任务状态在不同条件下可以相互转换,如图1所示[1]。

2 系统方案

为方便盲人或视障者出行,智能拐杖系统设计了以下功能:1当智能拐杖靠近障碍物时能发出报警声,离障碍物的距离越近,报警声越急促,提醒盲人注意障碍物;2总控开关打开后,智能拐杖能自动判断是白天还是黑夜,如果是黑夜,就自动打开提示灯,提示过往行人和车辆注意;3当盲人走丢后,按下系统的定位开关,系统能通过GPS定位盲人位置,并通过短消息模块把定位信息发送给系统设定的手机,方便家人根据此定位信息及时找到盲人。

智能拐杖系统CPU采用STC12C5A32S2单片机。该CPU是宏晶科技有限公司生产的一款高性能8位单片机,运行速度快、抗干扰能力强[2]。该单片机包含32K字节程序存储器[3],1280字节内部数据存储器,完全满足移植Small RTOS51操作系统对存储器的需求。该单片机还包含2个全双工串行通信口,4个16位定时器,8通道10位ADC。智能拐杖系统框图如图2所示,主要包含CPU模块、GSM模块、GPS模块、超声波测距模块、亮度检测模块、键盘模块、蜂鸣器模块和指示灯模块等。

3 部分硬件接口设计

(1)GPS和GSM模块接口。GPS采用台湾生产的HOLUX M-89GPS模块,该模块有6个引脚,本系统只使用其中3个引脚(电源、地、GPS串行信号输出)与CPU连接。GSM采用SIM900模块。SIM900是SIMCOM公司生产的双频GSM/GPRS模块[4],通过串口与单片机连接。GPS和GSM模块硬件接口如图3所示。

(2)超声波测距模块接口。智能拐杖对障碍物的感知采用HC-SR04超声波测距模块,该模块可以测量2cm到4m的距离范围。模块有4个引脚,分别是电源、地、触发信号输入脚和回响信号输出脚。模块工作时,单片机向超声波模块的触发信号输入引脚发出超过10ms的高电平,模块发出8个40KHz的脉冲,单片机通过超声波模块的回响信号输出脚判断是否接收到超声波反射信号,并通过公式S=V*T/2计算障碍物和盲人之间的距离。公式中V表示超声波在空气中的声速,T代表超声波从发射到反射回接收模块的时间。超声波测距模块接口原理如图4所示。

(3)亮度检测模块接口。如图5所示,亮度检测模块采用一只光敏电阻R2,并通过一片LM393集成块组成比较电路。当智能拐杖所处的环境比较亮时,LM393的LOUT脚输出低电平,否则输出高电平,单片机通过判断LOUT电平的高低决定是否需要打开提示灯。RP为可变电阻,通过此电阻调节亮度检测模块的灵敏度。

(4)键盘、蜂鸣器和指示灯模块接口。智能拐杖需要的按键不多,采用独立式按键就能满足需求。声音提示采用一只直流蜂鸣器,通过一只三极管驱动。指示灯采用5只不同颜色的高亮LED。

4 软件设计

4.1 RTOS移植

系统编程采用美国Keil Software公司出品的集成开发环境KeilμVision4。KeilμVision4编译器支持内嵌汇编编程,通过关键字Reentrant产生可重入代码,可用C语言允许或禁止中断,这些特性正是移植Small RTOS51操作系统所必需的。Small RTOS51的移植需要开发者在头文件OS_cpu.h中定义相关变量的类型、变量存储方法、任务切换、禁止允许中断、中断嵌套等,同时需要Os_cpu_a.asm汇编文件中编写OSCtxSw(通过该函数让系统运行高优先级任务)、OSIntCtxSw(中断退出时,调用次函数进行任务切换)、LoadCtx(任务运行环境恢复函数)等汇编函数。数据类型定义如表1所示。

变量存储方法、任务切换、禁止允许中断、中断嵌套实现如表2所示。

4.2 应用软件设计

(1)任务划分和信号量分配。本设计将软件系统分解成5个任务和一个按键中断。5个任务是:超声波测距任务、GSM任务、GPS任务、亮度检测任务和蜂鸣器任务,5个任务相互配合共同完成智能拐杖的所有功能。系统通过以下代码创建5个任务。

void(*const TaskFuction[OS_MAX_TASKS])(void)={GPSTask,GSMTask,UCTask,LTESTTask,BEEPTask};

为了协调各个任务和中断运行,系统创建了5个信号量。5个信号的创建代码如下:

任务、信号量和优先级的说明如表3所示。任务优先级值越大,优先级越高。

(2)任务实现描述。Small RTOS51的每个任务都必须设计成死循环,任务运行后开始无限等待相关的信号量,一旦接收到相关信号量,任务继续运行,同时任务向其它任务发送信号。任务的代码框架如下:

按键中断以及5个任务相互之间的关系如图6所示。

按键中断:当位置信息发送按键被按下就触发该中断,中断服务程序通过OSSemPost函数向GPS任务发送信号量M_GPS。

GPS任务:GPS任务的优先级最高。该任务运行后,等待按键中断发送的M_GPS,一旦接收到该信号量就开启串行通讯口接收GPS信息,并对$GPRMC格式的数据包进行解码,得到位置信息。最后发送M_GSM信号量给GSM任务。

GSM任务:该任务等待GPS发送的信号量M_GSM,接收到该信号后,启动GSM模块,把位置信息发送给设置的手机号,然后发送信号量M_UC给超声波检测任务。

超声波检测任务:该任务主要完成障碍物检测。该任务运行后,接收M_UC信号量,当GSM任务、蜂鸣器任务、亮度检测任务都没有向该任务发送M_UC时,时钟节拍函数OSTimeTick()定时向该任务发送信号量M_UC。该任务根据探测情况决定是否需要发送信号量M_BEEP给蜂鸣器任务。超声波检测任务连续运行COUT次以后(本系统设置COUT为1000),发送信号量M_LTEST给亮度检测任务,启动一次亮度检测。

蜂鸣器任务:该任务接收超声波测距任务发送的信号量M_BEEP,并根据超声波测距任务设置的相关参数启动声音报警。

亮度检测任务:该任务接收超声波测距任务发送的信号量M_LTEST,接收到该信号量后执行连读检测程序,根据检测结果决定是否开启提示灯。

5 结语

经测试,采用实时操作系统设计的智能拐杖系统能够实现系统设定的所有功能。设计过程中,把系统功能分解成5个部分,分别使用一个任务实现相关功能,降低了软件编写难度,提高了开发效率。

摘要:为使视力残疾者出行更加安全,设计了一种基于实时操作系统Small RTOS51的智能拐杖系统。介绍了Small RTOS51操作系统在STC12C5A32S2单片机上的移植,给出了部分硬件接口设计方案,详细介绍了软件实现过程。试验表明,使用嵌入式实时操作系统,软件开发过程简单方便。

关键词:智能拐杖,实时操作系统,单片机,硬件接口,软件开发

参考文献

[1]陈明计,周立功.嵌入式实时操作系统Small RTOS51原理及应用[M].北京:北京航空航天大学出版社,2004.

[2]刘德新,贺小凤.基于STC12C5A32S2的甲醛检测仪设计[J].深圳信息职业技术学院学报,2011,9(3):47-50.

[3]高凤强,颜逾越,康恺,等.基于GSM的对虾养殖场增氧机监控系统设计[J].渔业现代化,2016,43(1):13-17.

RTOS嵌入式系统 第4篇

受到对华武器禁运及军工技术封锁,我国军用计算机技术(特别是军用嵌入式单板计算机)发展非常缓慢。智明达公司生产的基于DOS 6.22的SBC386EX系列计算机板由于成本低廉、系列完整,在军工机载产品中应用广泛。

SBC386EX系列计算机板选用国产化的军用级386EX CPU,由于受到空间尺寸限制只有512~640K BYTE内存,不能安装VxWorks操作系统,而采用标准BIOS和DOS6操作系统,使用Borland C++3.1为开发环境,应用程序的实时性、可靠性和安全性完全由用户负责。为了提高软件实时性、软件模块化和简化软件开发,作者在多个工程应用的基础上编写了一个简单的基于386的RTOS,并应用于实际的工程开发。

作者参考操作系统原理,分析了VxWorks微内核任务接口和RTX51 RTOS内核。VxWorks和RTX51都是基于抢占式优先级的多任务操作系统,操作系统提供给用户的服务主要有3类:系统服务、消息服务和功能接口,各个任务之间的参数传递是通过邮箱操作来实现的。但是二者对于作者的工程应用来说都相对复杂一些,而且要求的内存资源太多,对于只有512K的386计算机板来说根本不可能实现。而SBC386EX系列计算机板提供Borland C++3.1为开发环境,使按照系统服务、消息服务和功能调用的结果利用C++开发自己的RTOS成为可能。

2 RTOS简介

通过查阅资料,作者在某刊物上看到对一种51单片机RTOS的介绍,实际上就是设置几个标志位,将中断产生的标志作为消息,在主程序中不断地查询这些标志位;当查询到某个标志位改变时,就调用相应的模块棋块。首先,这种方式不是严格意义上的消息驱动机制,而且对于各个模块之问的参数传递没有定义,不利于功能模块的划分;此外.由于标志位的查询是顺序进行的,例如当某中断发生,设置了标准BIT0和BIT5, 假设标志位的查询顺序是从BIT0开始的,本来按照正常次序要先执行模块0和模块5,但是在运行模块0时有另一中断发生,设置标志位BIT3,造成模块3比模块5先执行,这样就有可能造成不可预料的后果。将按位设置的标志改为先进先出FIFO的消息队列,并对模块调用进行抽象化,于是提出了以下基于非抢占式消息驱动机制的RTOS。

基于非抢占式消息驱动机制的RTOS是采用面向对象的思维方法,把各个功能模块看成是不同的对象,对象之间的通信称为发送消息。对象包含自己的数据和代码,数据表征对象的特征,代码用于相应消息,使对象进行某些动作。对象响应消息进行处理时不被中断,消息没有优先级之分,除非是中断到来,即消息驱动是非抢先式的。RTOS严格按照消息队列的顺序来“唤醒”相应的对象。基于非抢先式消息驱动机制的RTOS的系统运行框图如图l所示。

这样做有几个好处:

l)绝大多数应用场合下,“实时性”只是体现在对外部事件的及时响应和对数据的及时接收或者发送。这可借助SBC386单板机的硬件中断来实现,中断处理程序只对外部事件作必要的处理或者只是将接收数据放到预定的缓冲区立即返回,同时向消息队列发送一条信息通知系统。

2)采用面向对象的思维方法有利于模块的划分。在多人协同编程时显得尤为重要,它使得除管理模块外的模块负责人员只需要关心自己的那一个部分,各个功能模块的交互是透明的。

3)具备相当的通用性,如果需要增加新的功能模块,只需要编写新模块的代码.在RTOS中增加新模块的标志ID号,而其他部分可以保持不变。

3 RTOS构成

3.1 消息的封装和消息队列

基于非抢先式消息驱动机制的RTOS,其消息由4个部分组成:TaskID、FunCMD、Data1、Data2。其中,TaskID标志功能模块号,操作系统中的消息循环根据TaskID来确定这个消息发送给哪个功能模块的,占用1Byte;FunCMD指示该功能模块执行什么样的操作,占用1Byte;传递的参数Data1和Data2各占用1Byte的空间。

一个消息占用4Byte的内存,256Byte的消息队列可以容纳64条消息,借助2个16位指针:pWR、pRD:pWR=pRD时消息队列空;pWR≠p RD时消息队列非空。

3.2 RTOS主循环

RTOS的主循环主要的任务就是定时查询消息队列。若消息队列非空,则取出最“旧”的那一条消息,并唤醒相应的任务。设置3byte的当前消息区gMsgData和1byte当前任务gCurrTaskID。处理时,用当前那条信息的FunCMD、Data1、Data2来填充“当前消息区”,同时TaskID=gCurrTaskID。当调用功能接口FunCall时,FunCall根据g CurrTaskID唤醒相应的任务,同时把gMsgData区域中的参数传递给这个任务。

RTOS的主循环程序代代码如下:

注1:定周期处理函数osPriTreat在第4小节“RTOS的定周期处理”中有详细的介绍。

注2:FunCall为功能接口,它根据gCurrTaskID查询对应功能函数的首地址,执行相应的任务。

注3:原则上1个任务的完成时间不应该超过10ms,如果超过10ms,则必须进行任务的分割.具体见第4小节。

3.3 消息的获取和发送

消息获取函数仅仅由RTOS使用。主要功能是检查消息队列:如果消息队列为空.则时钟CP=l后立即返问;若消息队列非空.则取出FIFO中最“旧”的那一条消息。赋值gCurrTaskID=TaskID;FunCMD、Data1、Data2放在当前消息区gMsgData中。

3.4 RTOS的定周期处理

RTOS的定时处理是整个RTOS中相当重要的一个环节。SBC386EX系列计算机板I8253提供有两个16位定时器,我们选用TO作为RTOS的任务定时器,定时周期为10ms。对消息队列的操作、任务间的同步和长时任务(指执行时间超过10ms的任务)的分割都使用到任务定时器。另外一个定时器定时周期为1ms,以中断方式提供系统时钟和各种不同的延时时间基准,这样可以提供1———65535ms的延时时间间隔。

对周期事件通过定周期处理任务,查询系统时钟时间,如果设定的周期到则进行相应的周期事件处理,然后清楚对应周期标志。有多个周期事件,先处理要求响应快的短周期事件,下一个定周期处理任务再处理长的周期事件。

RTOS定周期处理以10ms的定时周期延时间隔作为基准提供给所需要的任务使用。工程中的按键消除抖动的处理,延时时间通常在50ms以上,在按键处理任务中,就有1个子函数GetKey50ms专门负责消除抖动的延时处理。

长时任务的分割也常常使用到任务定时处理。如果RTOS的定时基准设定为10 ms,那么单个任务的完成时间和可能的中断处理时间总和不能超过20ms, 否则会使周期处理任务延迟10ms。必须长时任务分割成多个短时任务,每个短时任务执行时间不超过10ms。前一个短时任务返回之前向RTOS发送一条消息,TaskID仍为该任务的TaskID,但是FunCMD参数变为下一个短时任务的FunCMD, Data1和Data2则存放下一个短时任务执行时所需要的参数。当RTOS从消息队列中取出这条消息时,就可以唤醒下一个短时任务继续执行,这样直到该长时任务执行完毕。

3.5 核心管理模块

核心管理模块是基于RTOS上的一个重要任务模块。主要功能是系统初始化,数据初始化;记录当前RTOS的一些关键参数和状态;提供一些公共功能函数供外部任务调用;协调各个任务的运行。

4 工程应用

某工程应用中要接收并处理一个设备R通过RS232串口以50ms周期上报的数据;接收并处理两个设备A和B分别通过RS422以1s周期上报的数据;查询接收并处理设备M数据包时间间隔大于100ms的数据,实时上报到设备E;实时采集按键状态,处理并分发到设备M、设备E、设备R、设备A和设备B;以600ms周期融合设备R和设备A、设备B的数据,并上报融合结果到设备E,同时引导设备M。

该工程中的软件系统功能设计为:

1)有设备R、设备A和设备B共3个中断服务;

2)有数据融和、按键处理和429通信共3个处理任务;

3)有设备R、设备A和设备B数据准备好消息、融合数据上报和引导数据下发消息和按键发生消息,共3类消息;

4)有50ms定周期的设备R接收数据查询、GetKey50ms 50ms延迟抖动消除处理、500ms周期定时的设备A或者B接收数据查询、500ms定周期数据融合处理,共4类定周期处理。

5)设备R、设备A和设备B中断收数缓冲区,设备R、设备A和设备B中断发数数缓冲区,设备R、设备A和设备B数据报链表,融合数据上报和引导数据队列。

该工程中的软件工作工程详述如下:

对设备R和设备A、设备B的通信采用用中断收中断发,中断服务程序只完成将接收的数据放缓冲区并记录数据个数和将缓冲区待发数据发送,发送完成关发送中断。

对设备R和设备A、设备B的数据采用定周期处理方式:设定50ms周期定时对设备R的数据进行检查和数据包解析,将该完整数据包放到待处理数据链表,并向系统发融和处理任务发设备R数据准备好消息;分别设定两个500ms周期定时对设备A和B的数据进行检查和数据包解析,将该完整数据包放到待处理数据链,并向系统融和处理任务发设备A或者设备B数据准备好消息。

数据融和处理任务对设备R和设备A、设备B的数据进行去重叠处理;每600ms的周期到则进行融合处理,并将上报设备E的数据放到上报队列,将引导设备M的数据放到引导数据队列,然后向429通信任务发消息;429通信任务分别对引导数据队列和上报队列进行处理。

采用10ms周期的主任务循环对按键状态进行查询,查询到状态变化则启动GetKey50ms进行消除抖动处理,50ms延迟处理确认按键状态变化后向按键处理任务发按键状态消息。

按键处理任务处理按键消息,将要下发到设备R和设备A、设备B的数据,放到对应的中断发缓冲区,对要上报设备E和下发设备M到信息,向429通信任务发按键变化消息。

采用10ms周期的主任务循环对设备M的429接收数据进行查询,将要上报设备E的数据到上报队列,并向然后向429通信任务发消息。

此RTOS除在该工程项目中成功应用外,还用在其它工程中成功应用,并正用于新开发的工程中。

本文介绍的基于非抢先式消息驱动机制的RTOS已经应用于军工产品,在提高软件的模块化、增强软件运行的可靠性等方面具有很大的优越性。

参考文献

[1]汤荷美.操作系统基础[M].北京:清华大学出版社, 2001.

[2]马忠梅, 马凯.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社, 2007.

上一篇:胶囊内镜下一篇:学校运动部