嵌入式操作系统μC/OS-II的特点及移植应用研究

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:walker1116_2009
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:阐述了嵌入式操作系统发展的历史、嵌入式操作系统的市场和技术发展的变化,介绍了当前一种源码公开的嵌入式实时操作系统μC/OS-II在产品开发中的应用现状、技术优势。分析了μC/OS-II嵌入式实时内核的公开源代码可移植性、可裁剪、可固化、稳定性与可靠性等特点。指出μC/OS-II在嵌入式工业控制系统中很好的应用前景。
  关键词:嵌入式操作系统;μC/OS-II;移植
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)16-21298-02
  Study on the Characteristics and Porting Application of μC/OS-II
  LI Shuang-zheng
  (Nanyang Institute of Technology,Nanyang 473000,China)
  Abstract:The paper discussed the history,market and development of real time operating system (RTOS)and introduced the applied status,technical advantage and developing prospect of μC/OS-II, which was a RTOS with open source code. The character of the μC/OS-II on open source code were analyzed as portability、scale、solidification、stability and dependability, etc. Besides, pointed out the good application prospect of the μC/OS-II in the embedded project control field.
  Key words:embedded system;μC/OS-II;porting
  
  早在20 世纪60 年代,就已经开始了嵌入式操作系统的研究和开发工作。嵌入式操作系统在通信、电子、自动化等领域具有无比的优越性,其实时处理能力得到越来越多的重视,关于嵌入式操作系统的研究正在不断深入。
  嵌入式操作系统通常分为商用和源码公开两种。前者的主要代表有VXWORKS ,PSOS 等,特点是性能优良,使用方便但价格十分昂贵。后者由于代码是公开的,具有性能和价格两方面的优势。其中μC/OS-II是一个不错的选择。
  μC/OS-II是由Labrosse 编写的一个源码公开的嵌入式操作系统,这一点对于用户来说可谓利弊各半:好处在于,它是免费的,而且用户可以根据自己的需要对它进行修改;缺点在于,它缺乏必要的支持。它没有功能强大的软件包,用户通常需要编写自己的驱动程序, 有时甚至还必须编写相关的移植程序。
  1μC/OS-II实时操作系统及性能
  1.1 μC/OS-II系统的特点
  (1)μC/OS-II是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU 使用权。这个特点使得它的实时性比非占先式的内核要好。通常都是在中断服务程序中使高优先级任务进入就绪态(例如使用发送信号的方法) ,退出中断服务程序后,将进行任务切换,高优先级任务被执行。
  (2)μC/OS-II和大家所熟知的Linux 等分时操作系统不同,它不支持时间片轮转法。它是一个基于优先级的实时操作系统。每一个任务必须具有不同的优先级(分析它的源码会发现μC/OS-II把任务的优先级当作任务的标识来使用,如果优先级相同,任务将无法区分) 。进入就绪态的优先级最高的任务首先得到CPU 的使用权,只有等它交出CPU 的使用权后,其他任务才可以被执行。所以只能说它是多任务,不能说是多进程,至少不是人们所熟悉的那种多进程。
  (3)μC/OS-II对共享资源提供了保护机制。μC/OS-II是一个支持多任务的操作系统。一个完整的程序可以划分成几个任务,不同的任务执行不同的功能。这样,一个任务就相当于模块化设计中的一个子模块。在任务中添加代码时,只要不是共享资源就不必担心互相之间有影响。对于共享资源(例如串口)。μC/OS-II也提供了很好的解决办法。一般情况下使用的是信号量的方法。简单地说,先创建一个信号量并对它进行初始化。当一个任务需要使用一个共享资源时,它必须先申请得到这个信号量。而一旦它得到了此信号量,那就只有等它使用完了该资源,信号量才会被释放。在这个过程中即使有优先权更高的任务进入了就绪态,因为无法得到此信号量,也不能使用该资源。这个特点的好处显而易见,当显示屏正在显示信息的时候,外部产生了一个中断,而在中断服务程序中需要显示屏显示其他信息。这样,退出中断服务程序后,原有的信息就可能被破坏了。而在μC/OS-II中采用信号量的方法时,只有显示屏把原有信息显示完毕后才可以显示新信息,从而可以避免这个问题。不过,采用这种方法是以牺牲系统的实时性为代价的。如果显示原有信息需要耗费大量时间,系统只好等待。从结果上看,等于延长了中断响应时间,这对于未显示信息是报警信息的情况,无疑是致命的。发生这种情况,在μC/OS-II中称为优先级反转。简单地说,就是高优先级任务必须等待低优先级任务的完成。在上述情况下,在两个任务之间发生优先级反转是无法避免的。所以使用μC/OS-II时,必须对所开发的系统了解清楚,才能选择对某种共享资源是否使用信号量。
  1.2 μC/OS-II性能特点
  μC/OS-II是源代码公开的实时嵌入式操作系统,在第1 版的基础上做了重大的改进与升级,它的主要特点如下:
  (1)公开源代码
  源代码公开,并且可以从有关出版物上找到详细的源代码讲解和注释 ,这样使得系统变得透明,很容易就能把操作系统移植到各个不同的硬件平台上。
  (2)可移植性(Portable)
  μC/OS-II绝大部分源代码是用C 语言写的,而与微处理器硬件相关的那部分是用汇编语言写的,使得μC/OS-II便于移植到其他微处理器上。
  (3)可固化(ROMable)
  μC/OS-II是为嵌入式应用而设计的,这就意味着,只要开发者有固化手段(即: C 编译,连接,下载和固化),μC/OS-II可以嵌入到开发者的系统中。
  (4)可裁剪性(Scalable)
  开发者可以有选择的使用μC/OS-II中应用程序需要的哪些系统服务,这样可以减少μC/OS-II所需的存储空间。
  (5)占先式(Preemptive)
  μC/OS-II完全是占先式的实时内核,即总是运行就绪条件下优先级最高的任务。
  (6)多任务(Mult-Task)
  μC/OS-II可以管理64 个任务,但目前的版本保留了8 个给系统,应用程序最多有56 个任务,赋予每个任务的优先级必须是不同的。μC/OS-II不支持时间片轮转调度法(Roand-roblin Scheduling) 。
  (7)可确定性(Affirmable)
  全部μC/OS-II的函数调用与服务的执行时间具有其可确定性,即μC/OS-II系统服务的执行时间不依赖于应用程序任务的多少。
  (8)实用性和可靠性
  μC/OS-II自1992年以来,已经被移植到几乎所有嵌入式应用类CPU上 ,移植范例的源代码可以从因特网上下载。许多行业都有成功应用该实时内核的实例,这些应用的实践是该内核实用性和可靠性的最好证据。
  2 嵌入式操作系统μC/OS-II的移植探讨
  2.1 移植中的问题
  所谓移植,就是使一个实时内核能在其他的微处理器(MPU)或微控制器(MCU)上运行。整个嵌入式系统分为两大层:硬件层和软件层。在移植时,这两个层都要考虑。硬件层主要是处理器,对μC/OS-II进行移植到不同处理器平台时,需要解决的主要问题有:
  (1)数据类型的重定义。
  对于一个操作系统来说,基于其上进行开发的应用系统一般都使用高级语言,高级语言都有自己的数据类型。但对于不同的处理器由于字长不相同,造成同一数据类型在不同处理器中会有不同的解释,所以对不同的处理器应该重新进行数据类型的定义。
  (2)堆栈结构的设计。
  当同一个操作系统应用于不同处理器或同一处理器的不同应用系统时,由于各应用系统所追求的性能各有特点,就会要求与性能有很大关系的堆栈结构尽可能与本系统所追求的性能一致。
  (3)任务切换时的状态保存与恢复。
  这是多任务操作系统最主要的工作,也是最频繁的工作。所以任务切换在实现时的正确与否是操作系统运行时的基本保证,同时它的简洁与否决定操作系统的效率。
  2.2 移植μC/OS-II的条件
  硬件层主要是处理器,移植μC/OS-II对目标处理器有一定要求,要求如下:
  处理器的C编译器能产生可重入代码;处理器支持中断,并且能产生定时中断;用C语言能开、关中断;能支持一定数量的数据存储硬件堆栈;处理器有将堆栈指针以及其他CPU 寄存器的内容读出、并存储到堆栈或其他内存中去的指令。
  软件层主要分为四个部分:实时操作系统内核,与处理器相关部分,与应用相关部分,用户的应用系统。下面针对移植问题简述这四个部分:
  (1)实时操作系统内核
  实时操作系统对系统资源进行管理。主要包括任务分配和调度、系统时钟服务、内存管理、消息机制、异常处理等。μC/OS-II所有系统服务均由内核提供,内核将应用系统和底层硬件结合成一个完整的实时系统。
  移植的时候内核是不变的,开发者根据自己应用系统的需要来选择实时操作系统内核,开发者不能对内核随意访问,只能使用内核提供的功能服务来开发自己的应用系统。内核确定,那么所提供的系统管理能力,系统服务也就被限定。开发者只能在规定的范围内对系统作些改动。
  (2)与处理器相关的代码
  这是移植中最关键的部分。内核将应用系统和底层硬件有机结合成一个实时系统。要使同一个内核能适用于不同的硬件体系,就要在内核和硬件之间有一个中间层,这就是与处理器相关的代码。处理器不同,这部分代码也不同。
  在μC/OS-II中,这一部分代码分成三个文件:OS_CPU.H, OS_CPU_A.ASM, OS_CPU_C.C
  OS_CPU.H
  包括了用#define定义的与处理器相关的常量、宏和类型定义。具体来讲有系统数据类型定义、栈增长方向定义、关中断和开中断定义、系统软中断的定义等。
  OS_CPU_A.ASM
  这部分需要对处理器的寄存器进行操作,所以必须用汇编语言来编写。它包括四个子函数:
  OSStartHighRdy(),OSCtxSw(),OSIntCtxSw(),OSTickISR()。
  OS_CPU_C.CμC/OS-II中共定义了6个函数在该文件中。但是最重要的是OSTaskStkInit(),其他都是对系统内核的扩展时用的。
  OSTaskStkInit()是在用户建立任务时系统内部自己调用的,对用户任务的堆栈进行初始化。使建立好的进入就绪态任务的堆栈与系统发生中断并将环境变量保存完毕时的栈结构一致。这样就可以用中断返回指令使就绪的任务运行起来。具体的入栈方式要根据不同处理器而定。
  (3)与应用相关的代码
  这一部分是用户根据自己的应用系统来定制合适的内核服务功能,包括两个文件:O S _ C F G . H ,INCLUDES.H。
  OS_CFG.H 来配置内核,用户根据需要对内核进行定制,留下需要的部分,去掉不需要的部分,设置系统的基本情况。比如系统可提供的最大任务数量,是否定制邮箱服务,是否需要系统提供任务挂起
  功能,是否提供任务优先级动态改变功能等。
  INCLUDES.H 系统头文件,整个实时系统程序所需要的文件,包括了内核和用户的头文件。
  (4)用户应用系统
  这是整个实时系统的最高层,用户可通过利用实时操作系统提供的服务来开发自己的具体应用程序。
  3 结束语
  在嵌入式应用中,使用实时操作系统(RTOS) 是当前嵌入式应用的一个特点,一种时尚,尤其在工业控制系统中,像μC/OS-II这样短小精湛的实时内核,更有用武之地。 另外,μC/OS-II开放的、免费嵌入式实时操作系统的应用与推广,不仅缩短开发周期,而且会研发出质量更高,性能更好,更容易维护的应用软件。
  从以上的分析中不难看出,对于实时性、可靠性要求较强的项目,特别是大型项目,最好使用μC/OS-II。而对于一些简单的、成本要求低的项目来说,就没必要这么麻烦了。需要指出的是,μC/OS-II的特点远不止这些,应用开发中需要注意的问题也很多,需要用户自己不断地探索和研究。μC/OS-II的移植很具有实际意义,是在嵌入应用系统开始开发之前必须要做的工作。
  参考文献:
  [1] [美]Jean J Labrosse. 嵌入式实时操作系统μC/OS-II [M]. 北京:北京航空航天大学出版社,2003.
  [2] 邵贝贝.译μC/OS-II源码公开的实时嵌入式操作系统.中国电力出版社.
  [3] 王田苗.嵌入式系统设计与实例开发[M].北京:清华大学出版社,2002.
其他文献
早在几年前一个研究生的四人展上就与廖小东相认,拜读过其作品,毕业后的这几年,廖小东也未曾停止对绘画的追求和思索,以至于我们在艺术生涯中既是朋友,更是知己。从他早期的作品到至今,可以梳理出一个清晰的探索脉络,从他的整个作品格局中,我们可以看出他传承南方山水油画家的特性和功底深厚的学院基础。在植入了个人语言特征的同时,还宣泄着内心深处对生活的情绪。  同时,他的作品里充满着诗性般的韵味,一种对山水的移
摘要:针对两款开发制作Flash作品的工具软件中的脚本语言,分别从两者的相同点、各自的独有的特点三个方面详细进行了分析比较,得出了两者在实际开发制作过程中各有优长的结论,提出了根据要开发制作的Flash作品的具体情况,灵活使用两种工具软件的思想,并且也给出具体的运用方法。  关键词:swish;flash;flash动画;脚本语言  中图分类号:TP312文献标识码:A文章编号:1009-3044
摘要:作为开发中小型网上数据库应用系统的优秀开发方案之一,Asp Access的开发模式也存在一些安全漏洞,文章分析了数据库的特点,并针对漏洞,提出了行之有效的解决方法。  关键词:Asp;Access;数据库;安全  中图法分类号:TP393.08文献标识码:A 文章编号:1009-3044(2008)11-20218-01    随着计算机的普及和计算机各方面技术的高速发展,计算机网络也更加深
摘要:通过对无线通信网络的体系结构,运营方式,切换技术实现细节等方面的分析和研究,研究和探讨异构网络之间的切换技术,最终提出一个面向下一代无线通信网络的新型的基于IP的综合切换(Integrated Handover,IH)框架。  IH技术的最终目标就是要解决移动通信网络中因网络异构、资源开销瓶颈等影响,成功地实现全球无线网络覆盖范围的低时延、高带宽、宽切换域、开销低和QoS保证的不同网络间顺畅
自我国实施新的语文统编教材制度以来,小学语文教材编写有一个引人注目的变化,就是阅读策略开始引入单元教学设计中。例如,教材中专门安排了复述、预测、推论、提问、快速阅读等几个重要的阅读策略。策略教学的提出并非始于今日,但当下语文教材这一新设计,对我们一线语文教师意味着什么呢?如果围绕这一举措的相关方面全面、系统、深入地思考,必将有助于我们更加自觉、积极稳妥地深化阅读教学改革。  一、阅读教学:从技能训
摘要:智能手机不仅仅可以用来打电话,还可以用来阅读从网上下载的书籍。现在网上的很多书籍采用的是txt格式。可是,有时会遇到在计算机中能正常显示的文本文件,在手机中却全是乱码,无法阅读。该文就针对这一问题用visual studio 2005编个简单的小程序,来帮助广大的手机用户解决txt格式的书籍出现乱码的问题。  关键词:Visual studio 2005;智能手机;编码;Unicode AN
摘要:该系统是为改变一个五金批发部以人工手写管理的现状,而设计的一个进销存管理系统。系统的主要功能是对商品的进货、销售和库存进行监控、调配和管理,以实现商品进销存管理的信息化、自动化和科学化。该系统的前台应用程序界面采PowerBuilder 9.0开发,后台数据库选用PowerBuilder自带的关系数据库Sybase SQL Anywhere。在系统设计中,详细的展现了系统的各个功能模块,所需
摘要:文章重点研究在自适应控制中间件支持下,Web服务组合执行引擎的QoS管理机制,设计了一个基于QoS的自适应控制中间件,并应用于Web服务组合执行引擎当中,以支持对服务请求的分级处理,实现了为不同等级用户提供区分服务的功能,为提高可变负载下单个执行引擎的高吞吐量和快速响应时间提供了一种有效的解决方案。  关键词:自适应控制;服务组合;执行引擎;服务质量;区分服务  中图分类号:TP301文献标
基于校园网的防火墙技术应用研究  王晓雨1,2  (1.武汉理工大学 计算机学院,湖北 武汉 430063;2.荆楚理工学院 计算机工程学院,湖北 荆门 448000)  摘要:防火墙技术是网络安全领域的一项重要技术,该文针对当前校园网应用中所遇到的问题,提出了几种解决的方法,并重点阐述了防火墙技术及其在校园网络安全中的应用。  关键词:校园网;网络安全;防火墙  中图分类号:TP393文献标识码
摘要:在ADO.NET提供的数据访问控件中,DataView具有功能强大的数据处理功能。本文就DataView的数据排序、数据筛选、数据搜索、数据修改等功能实现技巧进行探讨。  关键词:vb.net;数据源;DataView控件   中图法分类号:TP311 文献标识码:A 文章编号:1009-3044(2008)08-10ppp-0c    1 前言    随着计算机功能不断增强,计算机领域不断