版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式操作系统C/OS-II的特点及移植应用研究李爽正(南阳理工学院南阳邮编473004 摘要:阐述了嵌入式操作系统发展的历史、嵌入式操作系统的市场和技术发展的变化,介绍了当前一种源码公开的嵌入式实时操作系统C/OS-II在产品开发中的应用现状、技术优势。分析了C/OS-II嵌入式实时内核的公开源代码可移植性、可裁剪、可固化、稳定性与可靠性等特点。指出C/OS-II在嵌入式工业控制系统中很好的应用前景。关键词:嵌入式操作系统,C/OS-II,移植中图分类号:TP文献标识码:AStudy on the Characteristics and porting Application of C/OS
2、-IILI Shuang-zheng( Nanyang Institute of Technology ,NanYang, Abstract : The paper discussed the history , market and development of real time operating system (RTOSand introduced the applied status ,technical advantage and developing prospect of C/OS-II, which was a RTOS with open source code. The
3、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 年代,就已经开始了嵌入
4、式操作系统的研究和开发工作。嵌入式操作系统在通信、电子、自动化等领域具有无比的优越性,其实时处理能力得到越来越多的重视,关于嵌入式操作系统的研究正在不断深入。嵌入式操作系统通常分为商用和源码公开两种。前者的主要代表有VXWORKS ,PSOS 等,特点是性能优良,使用方便但价格十分昂贵。后者由于代码是公开的,具有性能和价格两方面的优势。其中C/OS-II是一个不错的选择。C/OS-II是由Labrosse 编写的一个源码公开的嵌入式操作系统,这一点对于用户来说可谓利弊各半:好处在于,它是免费的,而且用户可以根据自己的需要对它进行修改;缺点在于,它缺乏必要的支持。它没有功能强大的软件包,用户通常
5、需要编写自己的驱动程序,有时甚至还必须编写相关的移植程序。1 C/OS-II实时操作系统及性能1.1 C/OS-II系统的特点(1C/OS-II是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU 使用权。这个特点使得它的实时性比非占先式的内核要好。通常都是在中断服务程序中使高优先级任务进入就绪态(例如使用发送信号的方法 ,退出中断服务程序后,将进行任务切换,高优先级任务被执行。(2C/OS-II和大家所熟知的Linux 等分时操作系统不同,它不支持时间片轮转法。它是一个基于优先级的实时操作系统。每一个任务必须具有不同的优先级(分析它的源码会发现C/OS-II
6、把任务的优先级当作任务的标识来使用,如果优先级相同,任务将无法区分 。进入就绪态的优先级最高的任务首先得到CPU 的使用权,只有等它交出CPU 的使用权后,其他任务才可以被执行。所以只能说它是多任务,不能说是多进程,至少不是人们所熟悉的那种多进程。(3C/OS-II对共享资源提供了保护机制。C/OS-II是一个支持多任务的操作系统。一个完整的程序可以划分成几个任务,不同的任务执行不同的功能。这样,一个任务就相当于模块化设计中的一个子模块。在任务中添加代码时,只要不是共享资源就不必担心互相之间有影响。对于共享资源(例如串口。C/OS-II也提供了很好的解决办法。一般情况下使用的是信号量的方法。简
7、单地说,先创建一个信号量并对它进行初始化。当一个任务需要使用一个共享资源时,它必须先申请得到这个信号量。而一旦它得到了此信号量,那就只有等它使用完了该资源,信号量才会被释放。在这个过程中即使有优先权更高的任务进入了就绪态,因为无法得到此信号量,也不能使用该资源。这个特点的好处显而易见,当显示屏正在显示信息的时候,外部产生了一个中断,而在中断服务程序中需要显示屏显示其他信息。这样,退出中断服务程序后,原有的信息就可能被破坏了。而在C/OS-II中采用信号量的方法时,只有显示屏把原有信息显示完毕后才可以显示新信息,从而可以避免这个问题。不过,采用这种方法是以牺牲系统的实时性为代价的。如果显示原有信
8、息需要耗费大量时间,系统只好等待。从结果上看,等于延长了中断响应时间,这对于未显示信息是报警信息的情况,无疑是致命的。发生这种情况,在C/OS-II 中称为优先级反转。简单地说,就是高优先级任务必须等待低优先级任务的完成。在上述情况下,在两个任务之间发生优先级反转是无法避免的。所以使用C/OS-II时,必须对所开发的系统了解清楚,才能选择对某种共享资源是否使用信号量。1.2 C/OS-II性能特点C/OS-II是源代码公开的实时嵌入式操作系统,在第1 版的基础上做了重大的改进与升级,它的主要特点如下:(1公开源代码源代码公开,并且可以从有关出版物上找到详细的源代码讲解和注释,这样使得系统变得透
9、明,很容易就能把操作系统移植到各个不同的硬件平台上。(2可移植性(PortableC/OS-II绝大部分源代码是用C 语言写的,而与微处理器硬件相关的那部分是用汇编语言写的,使得C/OS-II便于移植到其他微处理器上。(3可固化(ROMableC/OS-II是为嵌入式应用而设计的,这就意味着,只要开发者有固化手段(即: C 编译,连接,下载和固化,C/OS-II可以嵌入到开发者的系统中。(4可裁剪性(Scalable开发者可以有选择的使用C/OS-II中应用程序需要的哪些系统服务,这样可以减少C/OS-II所需的存储空间。(5占先式(PreemptiveC/OS-II完全是占先式的实时内核,即
10、总是运行就绪条件下优先级最高的任务。(6多任务(Mult-TaskC/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上,移植范例的源代码可以从因特网上下载。许多行业都有成功应用该实时内核的
11、实例,这些应用的实践是该内核实用性和可靠性的最好证据。2 嵌入式操作系统C/OS-II的移植探讨2.1 移植中的问题所谓移植,就是使一个实时内核能在其他的微处理器(MPU或微控制器(MCU上运行。整个嵌入式系统分为两大层:硬件层和软件层。在移植时,这两个层都要考虑。硬件层主要是处理器,对C/OS-II进行移植到不同处理器平台时,需要解决的主要问题有:(1数据类型的重定义。对于一个操作系统来说,基于其上进行开发的应用系统一般都使用高级语言,高级语言都有自己的数据类型。但对于不同的处理器由于字长不相同,造成同一数据类型在不同处理器中会有不同的解释,所以对不同的处理器应该重新进行数据类型的定义。(2
12、堆栈结构的设计。当同一个操作系统应用于不同处理器或同一处理器的不同应用系统时,由于各应用系统所追求的性能各有特点,就会要求与性能有很大关系的堆栈结构尽可能与本系统所追求的性能一致。(3任务切换时的状态保存与恢复。这是多任务操作系统最主要的工作,也是最频繁的工作。所以任务切换在实现时的正确与否是操作系统运行时的基本保证,同时它的简洁与否决定操作系统的效率。2.2 移植C/OS-II的条件硬件层主要是处理器,移植C/OS-II对目标处理器有一定要求,要求如下:处理器的C编译器能产生可重入代码;处理器支持中断,并且能产生定时中断;用C语言能开、关中断;能支持一定数量的数据存储硬件堆栈;处理器有将堆栈
13、指针以及其他CPU 寄存器的内容读出、并存储到堆栈或其他内存中去的指令。软件层主要分为四个部分:实时操作系统内核,与处理器相关部分,与应用相关部分,用户的应用系统。下面针对移植问题简述这四个部分:(1实时操作系统内核实时操作系统对系统资源进行管理。主要包括任务分配和调度、系统时钟服务、内存管理、消息机制、异常处理等。C/OS-II所有系统服务均由内核提供,内核将应用系统和底层硬件结合成一个完整的实时系统。移植的时候内核是不变的,开发者根据自己应用系统的需要来选择实时操作系统内核,开发者不能对内核随意访问,只能使用内核提供的功能服务来开发自己的应用系统。内核确定,那么所提供的系统管理能力,系统服
14、务也就被限定。开发者只能在规定的范围内对系统作些改动。(2与处理器相关的代码这是移植中最关键的部分。内核将应用系统和底层硬件有机结合成一个实时系统。要使同一个内核能适用于不同的硬件体系,就要在内核和硬件之间有一个中间层,这就是与处理器相关的代码。处理器不同,这部分代码也不同。在C/OS-II中,这一部分代码分成三个文件: OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C OS_CPU.H 包括了用#define定义的与处理器相关的常量、宏和类型定义。具体来讲有系统数据类型定义、栈增长方向定义、关中断和开中断定义、系统软中断的定义等。OS_CPU_A.ASM这部分需要对处理器的寄
15、存器进行操作,所以必须用汇编语言来编写。它包括四个子函数:OSStartHighRdy(,OSCtxSw(, OSIntCtxSw(,OSTickISR(。OS_CPU_C.CC/OS-II中共定义了6个函数在该文件中。但是最重要的是OSTaskStkInit(,其他都是对系统内核的扩展时用的。OSTaskStkInit(是在用户建立任务时系统内部自己调用的,对用户任务的堆栈进行初始化。使建立好的进入就绪态任务的堆栈与系统发生中断并将环境变量保存完毕时的栈结构一致。这样就可以用中断返回指令使就绪的任务运行起来。具体的入栈方式要根据不同处理器而定。(3与应用相关的代码这一部分是用户根据自己的应用
16、系统来定制合适的内核服务功能,包括两个文件: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。而对于一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 娱乐行业合同专用章使用细则
- 生产线租赁合同
- 城市交通设施挡土墙施工劳务合同
- 2024年版工程承包商全面服务协议版B版
- 山东省水利发电工程合同样本
- 林地租用协议
- 酒吧绿化草坪施工协议
- 2024商铺餐饮租赁合同规范-特色餐饮连锁店租赁3篇
- 2024年水库除险加固工程机井承包合同
- 保险公司财务部长聘用合同
- 天津市河东区2022-2023学年七年级上学期期末地理试题
- JT-T-860.2-2013沥青混合料改性添加剂第2部分:高黏度添加剂
- 江苏开放大学本科财务管理专业060111马克思主义基本原理期末试卷
- 2024年4月自考00155中级财务会计试题及答案
- 商务英语写作1(山东联盟)智慧树知到期末考试答案章节答案2024年山东管理学院
- 细胞生物学智慧树知到期末考试答案章节答案2024年中南民族大学
- 2024中国留学生归国求职洞察报告
- 2024年全国人才流动中心招聘事业编制人员3人历年公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 中班音乐《小看戏》课件
- 电大财务大数据分析编程作业2
- 葡萄糖醛酸在药物开发中的应用
评论
0/150
提交评论