嵌入式实时操作系统PetOS设计与实现

发布者:星光曲折最新更新时间:2012-03-26 来源: 微计算机信息 关键字:PetOS  操作系统  任务调度  中断管理 手机看文章 扫描二维码
随时随地手机看文章

1 引言

在嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU 的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。由于RTOS需占用一定的系统资源(尤其是RAM 资源),只有μC/OS II、PalOS等少数实时操作系统能在小RAM 系统上运行。相对于μC/OS II[2]等商业操作系统,PalOS[1]操作系统是完全免费的操作系统,具有源码公开、内核简单等的特点。但该系统不支持任务优先级、中断等相对复杂的功能,不能很好的满足嵌入式电子设备的需要。

2 PetOS简介

PalOS是UCLA(加州大学洛山机分校)为传感器网络而设计微型操系统。系统轮询每个任务的消息队列,如果存在消息则调用任务相应的消息处理函数。但是这种简单的轮询机制和系统结构无法满足更为复杂的应用需求。在任务管理、系统时钟管理和中断管理等功能上,PalOS的功能都有待加强。

PetOS以PalOS为原型,改进了任务调度算法,引入优先级的概念。每个任务可根据重要程度的不同被赋予一定的优先级, CPU总是让处于就绪态的、优先级最高的任务先运行,从而实现任务的优先级管理。PetOS还提供了严格优先级调度模式和非严格优先级调度模式,用于缓解高优先级任务持续被调度时,低优先级任务出现‘饿死’的现象。

图1 PetOS内核框架

 

简单轮询或者优先级调度都无法保证系统的实时性。这两种调度都基于事件驱动,任务必须完成事件响应才会执行下一轮调度,因此系统的实时性会受到事件响应函数的粒度的影响,为了增加系统的实时性,PetOS加入了中断管理及系统时钟管理,用于提高系统的实时性。中断可以由硬件产生,也可以由应用程序产生。中断产生后,系统会及时进入中断模式进行处理,从而保证实时性要求很高的事务能得到及时的处理。

PetOS内核框架如图1。

3 PetOS的实现

3.1 PETOS任务维护/调度模块

任务维护/调度模块是PetOS的核心模块 负责任务的管理和调度。

·TASK(任务):

TASK是PetOS应用程序的逻辑实体,拥有独立的输入响应、消息响应和输出控制,是PetOS的调度实体。

PetOS任务具有如下5个状态:

·UNREGISTER   :由于Task列表采用静态数组,此状态表示该数组项无效

·UNINIT:任务已经注册,但是尚未初始化,不可执行

·STOP:任务停止状态。不接受消息,不可执行。无数据[page]

图2 PetOS 任务状态转换图

 

·RUN:任务运行状态。能接受消息,可以执行

·PAUSE:任务挂起状态:不能接受消息,不可执行。但保持数据。

任务在PetOS启动时被注册,并常驻在操作系统中。即操作系统初始化完毕并启动之后,操作系统调度的任务列表是固定的。操作系统启动后,任务只会在运行、暂停、挂起状态之前切换。

任务状态图如图2:

为了方便任务的管理与控制,每个TASK都会绑定TCB(task control block)。TCB类似于现代操作系统中进程的PCB,它记录了task的各种状态变量、控制变量以及标准接口的函数指针,便于PetOS和应用程序维护。

Event(事件消息):

Event是PetOS进程调度的粒度单位。

由于PetOS的每个任务不具备独立的代码/数据段/堆栈指针,我们无法在任意的位置暂停一个task而启动另一个。PetOS的解决策略是:将 task拆分成为一个个独立的由事件驱动的逻辑模块,每个task都有各自独立的事件队列。Task的每个逻辑功能都会被映射成一个事件,操作系统通过赋予某个task响应事件的权利来完成一次调度。而操作系统的多任务调度可以Task轮流响应事件来实现。

任务的调度:

图3调度算法流程图

 

在嵌入式系统中,很多应用要求执行的优先级绝对优先,比如USB文件传输的处理。为此,PetOS采用了多级任务机制,并赋予高优先级的任务更高的执行权限。调度时,PetOs将优先调度优先级高的任务。这种调度方式保证了高优先级任务的实时响应,但可能导致低优先级的任务永远无法被执行。为了缓解这种‘饿死’现象,PetOS提供了两种可选的配置:

·严格优先级调度模式:即,若高优先级的任务队列中存在还有事件未响应的任务,则无条件执行高优先级的任务。

·非严格优先级调度模式:即,当高优先级队列调度一轮过后,次优先级的任务队列中的第一个待执行任务可以得到1次调度。调度完成后继续轮询高优先级队列。

可以看到两者的区别在于:严格调度模式可以保证高优先级任务的绝对优先,但是低级任务可能出现‘饿死’的情况。而对于非严格调度模式,不论任务优先级有多低,总能以较低的频率执行。[page]

调度算法的分析及优化:

在非严格模式下,设一级、二级、三级task队列的长度分别为N1,N2,N3。则二级队列中调度一个任务需要判断一级任务N1次;三级队列中调度一个任务需要在一级队列中判断N1×N2次,在二级队列中判断N2次。在一级二级任务都很少被执行,而三级队列中的任务消息粒度很小且执行频率很高时,任务调度所占用的系统消耗便会急剧上升。

一种解决方法是:PetOS给每个消息队列加入了32Bit消息标记位。其中的每一位对应一个该优先级中的任务。若消息标记变量的某一位为1,则代表该位对应的task存在尚未响应的事件;若为0,则表示该级队列所有任务的事件都已经处理完毕,可以调度次优先级的任务。

通过消息标记位策略,若一级二级任务都不存在需要被调度的任务,则三级任务被调度一次的代价只是查询一级、二级任务的消息标记位各一次,从而大大降低了系统的消耗。

3.2中断管理/定时函数管理

中断管理:

由于PetOS的实时性受到事件粒度大小的影响,系统需要提供一种更强有力的实时性保障:中断。PetOS中断处理模块主要完成中断源的判断、中断向量的维护以及中断响应函数的调度等工作。

PetOS支持64个中断源[3],并对每个中断源支持不限数目的中断处理函数,因此该列表是一个双向链表,里面包涵了该中断号下的中断处理函数,定位后依次执行该链表中的函数。

采用链表方式维护中断处理函数可以更加灵活的维护中断函数列表,但是实际上,很多中断函数都是一次性的,比如USB连接响应函数在被调用后,需要将自己从该中断的函数列表内删除。而此时,中断处理函数正在使用该列表,这样就引起了中断函数链表的不一致性。

解决的方式是:

1)给所有函数句柄加入状态。

2)维护中断函数列表时,如果句柄处于闲置状态,则进行默认的操作;如果句柄处于IRQ状态被删除,则暂时不进行直接的删除操作,而是将句柄状态改成PETOS_IRQ_HANDLER_CALL_STATUS_DELETE。

3)当中断处理主函数调用完该函数后,若发现该函数的句柄状态已经改变,则可得知该函数已经在调用过程中将自己注销。IrqHandler会在此时重写中断维护模块API中注销函数,在这里将该函数句柄删除。

4)重新链接中断函数列表和定位tmpIrqHandler找到下一个中断处理函数句柄。

中断扩展模块-系统时钟模块和定时触发函数:

中断机制保证了PetOS对硬件请求的实时性响应,而对于软件请求的实时性则由PetOS系统时钟/定时触发函数模块完成。该模块主要完成了两部分工作:

·系统时钟模块:系统每隔固定的时间产生一个时间中断。利用前面的中断机制,我们可以模拟一个准实时的,不断执行的任务。具体方法为将这段代码注册为系统时钟的中断处理函数。

·定时触发函数模块:为了满足嵌入式电子产品应用程序的需要,基于系统时钟模块,PetOS供了定时触发函数功能。用户可以向系统注册一个定时触发函数,并指定其被调用的时间。操作系统通过预先注册好的一个系统时钟中断处理函数来检查是否有需要的定时触发函数到期,并执行调度。

PetOS的任务调度是以事件为单位,不可能出现两个任务同时访问同一段代码的情况。因此,大部分代码不需要考虑重入的问题。

4 PetOS的不足及改进方向

目前的调度算法还是存在任务优先级跨度太大的问题,高优先级的任务可能直接导至低优先级任务的“饿死”。

PetOS不可抢占的任务调度机制,各任务无独立栈导致调度不够灵活,如果一个任务的消息处理时间很长,则其他任务的消息响应时间也会很长,使得整个系统的实时性显得较差并且无法移植阻塞式的应到到该系统中。

PetOS并没有启用多态运行模式,而是简单的将OS core和其他应用程序的地址空间复用。这样虽然简化了系统结构,但是带来了OS core的地址空间可能被其他应用程序直接访问的隐患。

因此调度算法及内存管理将是PetOS改进的方向。

5 结束语

增加了优先级调度、任务管理、中断管理、系统时钟管理后,PetOS由一个只适用于简单应用的微型操作系统蜕变为可应用于复杂环境的小型操作系统。由于PetOS的模块化结构和开放性的代码,使得各方案的扩展性和可维护性大大加强,大大缩短了方案开发、产品维护的周期和成本。目前,基于ARM922硬件平台,PetOS已经实现了MP4/学习机等嵌入式消费类电子产品的方案,并已有成熟的产品上市,证明了PetOS的市场潜力。随着新的应用需求,PetOS会得到进一步完善,在嵌入式领域发挥更大的作用。

参考文献:

[1] UCLA Networked and Embedded Systems Lab. PALOS. http://sourceforge.net/projects/palos/ 2002

[2] JeanJ .Labrosse. uC /OS-11-源码公开的实时嵌人式操作系统[M],中国电力出版社,2001

[3] 杜春雷.ARM体系结构与编程[M] 清华大学出版社, 2003

[4] 沈胜庆.嵌入式操作系统的内核研究[J].微计算机信息,2006,2-2:72-74
关键字:PetOS  操作系统  任务调度  中断管理 引用地址:嵌入式实时操作系统PetOS设计与实现

上一篇:Windows CE设备与PLC串行通信的实现
下一篇:U-Boot在基于BF561的嵌入式Linux系统上的移植

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

基于ucos操作系统的LED闪烁、串口通信简单例程
* 内容简述: 本例程操作系统采用ucos2.86a版本, 建立了5个任务 任务名 优先级 APP_TASK_START_PRIO 2 主任务 Task_Com1_PRIO 4 COM1通信任务 Task_Led1_PRIO 7 LED1 闪烁任务 Task_Led2_PRIO 8 LED2 闪烁任务 Task_Led3_P
[单片机]
基于ARM的十一种嵌入式操作系统概述
嵌入式操作系统(Embedded Operation System,EOS)是指用于嵌入式系统的操作系统。嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。嵌入式操作系统是负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能,是一种用途广泛的系统软件。 嵌入式LINUX 嵌入式Linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。Linux做嵌入式的优势,首先,Linux是开放源代码;其次,Linux的内核小、效率高,可以定制,其系统内核最小只有约134KB;第三,Linux是免费
[单片机]
嵌入式XPE操作系统的构建及应用
   1 引言   目前主流嵌入式操作系统有μCLinux、μC/OS-II、WindowsCE、Windows XP Embedded(XPE)等,这些嵌入式操作系统功能稳定、可靠,售后服务完善,用户界面美观和网络技术支持等。XPE是Windows XP Professional操作系统的组件化版本,采用与其相同的二进制代码,二者内核完全相同:XPE继承了桌面操作系统的所有特征,被认同为嵌入式系统。    2 WindOWS XP Embedded简介   Windows XP Embedded(XPE)是Windows NT Embed-ded4.0的升级产品,是桌面系统Windows XP的组件化版本。XPE的基
[嵌入式]
基于STM32从零写操作系统系列---熟悉win+linux交叉编译环境
本章将讲述交叉编译环境的学习,环境平台是ubuntu,工具链是gcc-arm-none-eabi。 目的: 熟悉交叉编译环境,了解如何下载BIN格式的程序文件到单片机。 实验1: 一个简单的交叉编译与程序下载过程 环境搭建(以我的平台为例): 安装win7 64位系统,具体教程可百度 在windows系统上安装VMware虚拟机,具体教程可百度 在虚拟机上新建虚拟机,安装ubuntu系统 在ubuntu系统使用命令安装make(如果没有),gcc-arm-none-eabi交叉编译工具 在windows系统上安装ST-Link Utility软件,用于下载bin格式文件到是stm32单片机 在windows系统上安装编
[单片机]
基于STM32从零写<font color='red'>操作系统</font>系列---熟悉win+linux交叉编译环境
倪光南:最快10月份发布国产桌面操作系统
   近日,中国工程院院士倪光南在一次小型媒体见面会上向《人民邮电》报记者表示,国产操作系统的突破,将首先从桌面操作系统开始,我国今年10月有望推出支持应用商店的国产桌面操作系统新版本。   在信息领域,目前我国和发达国家还有很大差距,包括网络基础设施、智能终端、高端芯片、操作系统等关键核心技术上仍受制于人,特别是操作系统软件,国外公司占据了垄断性地位。为切实推进我国智能终端操作系统的开发和产业化,国内前不久成立了中国智能终端操作系统产业联盟,成员包括产学研用各界80余家单位,而倪光南院士则担任该联盟技术专家委员会主任。   就智能终端操作系统来看,倪光南强调,要通过创新来缩小差距,创新能力提高体现在研发投入、知识产权、研发团队
[手机便携]
首届中国研究生操作系统开源创新大赛即将启动:开启创新之旅,推动开源繁荣
2023年12月12日,由开放原子开源基金会指导,OpenAtom OpenHarmony(以下简称“OpenHarmony”)项目群工作委员会主办的“繁荣生态,人才先行”OpenHarmony人才生态大会(以下简称“大会”)在上海成功举办 ,值得一提的是,在此次大会上中国学位与研究生教育学会代表杨雪芬介绍了中国研究生创新实践系列大赛主题赛事之一,首届中国研究生操作系统开源创新大赛(以下简称“大赛”)的筹备进展以及赛事整体安排,这项赛事旨在激发研究生在操作系统领域的创新热情,推动我国操作系统技术的进步,并加强产学研合作。 当前我国操作系统正面临对国外操作系统外依赖性强、供应连续性风险高等问题,习近平总书记在中共中央政治局
[工业控制]
首届中国研究生<font color='red'>操作系统</font>开源创新大赛即将启动:开启创新之旅,推动开源繁荣
一个简单的51单片机操作系统的实现
复习到操作系统这本书,在看到进程管理的时候,想起以前费了相当大的时间去做一个属于自己的操作系统,结果什么都没弄出来。 趁着看到这个章节,又一次地萌生了这个想法,于是网上各种寻找资料。发现现在的大多数操作系统都已经比较完善,换而言之,就是太庞大。无法去理解,无法自己照搬原文去弄一个属于自己的操作系统出来。 机缘偶得之下,发现了一篇关于在单片机下面实现一个实时操作系统的文章, 即《建立一个属于自己的AVR的RTOS》,这篇文章比起讲什么操作系统原理、unix内核分析、linux内核分析、xx内核分析等等来说,简单明了了很多(有兴趣的同学们可以去研究一下这篇文章)。在参考这篇文章以及在51单片机下面使用汇编语言编程,以及众多网上资
[单片机]
一个简单的51单片机<font color='red'>操作系统</font>的实现
示波器无法正常开机该如何处理?
泰克示波器不能正常开机不一定是故障,可以按照以下方法进行处理: 请检查示波器电源线是否接好,供电插板是否打开; 2.检查示波器电源线接入口是否有开关,开关是否打开; 3.如果是带有操作系统的示波器,请将示波器连接好电源,并处于待机状态,放置1天后再打开,有可能是BIOS 电池长时间没有充电导致; 4.请检查示波器电源保险,如果示波器加电后只启动一下,有可能是电源部分故障; 5.如果示波器启动后开机画面一闪而过,就进入黑屏,或者驻留启动画面,有可能是内部系统自检发现故障,此时就需要维修; 6.如果检查完毕后,黑屏,有可能是电源故障,但是也不排除由于其它故障引起的问题,需要维修工程师帮您进一步免费排查;
[测试测量]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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