嵌入式实时操作系统ucosⅱ分析

上传人:ji****en 文档编号:111656760 上传时间:2019-11-03 格式:PPT 页数:119 大小:2.97MB
返回 下载 相关 举报
嵌入式实时操作系统ucosⅱ分析_第1页
第1页 / 共119页
嵌入式实时操作系统ucosⅱ分析_第2页
第2页 / 共119页
嵌入式实时操作系统ucosⅱ分析_第3页
第3页 / 共119页
嵌入式实时操作系统ucosⅱ分析_第4页
第4页 / 共119页
嵌入式实时操作系统ucosⅱ分析_第5页
第5页 / 共119页
点击查看更多>>
资源描述

《嵌入式实时操作系统ucosⅱ分析》由会员分享,可在线阅读,更多相关《嵌入式实时操作系统ucosⅱ分析(119页珍藏版)》请在金锄头文库上搜索。

1、1,2,C H A P T E R,嵌入式实时操作系统C/OS-分析,2,主要内容,嵌入式操作系统 C/OS-简介 C/OS-内核结构 C/OS-任务管理 C/OS-时间管理 C/OS-任务通信与同步,3,为什么需要操作系统,4,硬件抽象层的引入,嵌入式实时系统自底向上包含三个部分 硬件环境 嵌入式实时操作系统RTOS 嵌入式实时应用程序 由于嵌入式系统应用的硬件环境差异较大 新增加的中间层位于操作系统和硬件之间,包含了系统中与硬件相关的大部分功能 ,隐蔽了底层硬件的多样性,5,嵌入式系统的体系结构,6,HAL简介,硬件抽象层(HAL)是体系结构相关的底层程序 处理系统启动、硬件初始化以及中断

2、与异常 硬件抽象层对内核其它部分提供统一的调用接口 HAL可以提供BSP规范,提供跨平台可移植性,7,硬件抽象层接口定义和代码设计特点,硬件抽象层具有与硬件密切相关性 硬件抽象层具有与操作系统无关性 接口定义的功能应包含硬件或系统所需硬件支持的所有功能 接口定义简单明了,太多接口函数会增加软件模拟的复杂性 具有可测性的接口设计有利于系统的软硬件测试和集成,8,HAL设计目标,支持多种的国际主流嵌入式芯片 支持数字电视机顶盒、智能手机、数字化音视频、数字仪表等数字化产品中常见外设的驱动 基于甚高端通讯设备的硬件抽象层,能够支持多CPU体系结构(SMP),以及基于网络元素NE的甚高端通讯设备 基于

3、智能手机的硬件抽象层,能够支持以Intel PCA体系结构为内核的智能手机、以Intel EIA体系结构为内核的智能手机,以及以Motorola的88000系列为内核的PDA 基于IC卡的汇编级硬件抽象层,能够支持数字电视条件接收CA的8/16/32位CPU IC设计和机器码级汇编抽象层,9,通用操作系统和嵌入式(实时)操作系统,通用操作系统:Windows/NT/XP、Linux、UNIX等,用于PC机、服务器, 嵌入式(实时)操作系统:用于嵌入式设备的操作系统,具有通用操作系统的基本特点,又具有系统实时性、硬件的相关依赖性、软件固态化以及应用的专用性等特点; 嵌入式(实时)操作系统通常包括

4、与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等; 嵌入式(实时)操作系统的重要指标:实时性(中断响应时间、任务切换时间等)、尺寸(可裁剪性 )、可扩展性(内核、中间件),10,嵌入式操作系统的发展,11,常见的嵌入式操作系统,实时嵌入式操作系统的种类繁多,大体上可分为两种,商用型和免费型。 商用型的实操作系统功能稳定、可靠,有完善的技术支持和售后服务,但往往价格昂贵,如Vxworks、QNX、WinCE、Palm OS等。 免费型的实时操作系统在价格方面具有优势,目前主要有Linux,C/OS是一种源码开放的商业RTOS,12,学习嵌入式操作

5、系统,学习一种实时操作系统RTOS,如C/OS-,掌握实时系统的概念和设计方法 嵌入式系统以应用为中心,要选择“适用”的操作系统 嵌入式Linux 自己尝试“写”RTOS,13,RTOS在嵌入式系统中的位置,嵌入式硬件平台,BSP,KERNEL,FS,TCP/IP,设备驱动,设备I/O,调试工具,其它组件,应用,RTOS,C/C+,14,主要内容,嵌入式操作系统 C/OS-简介 C/OS-内核结构 C/OS-任务管理 C/OS-时间管理 C/OS-任务通信与同步,15,C/OS简介,1、C/OSMicro Controller O S,微控制器操作系统 2、 C/OS简介 美国人Jean La

6、brosse 1992年完成 应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等 1998年C/OS-II,目前的版本C/OS -II V2.61,2.72 2000年,得到美国航空管理局(FAA)的认证,可以用于飞行器中 网站www.ucos-II.com(),16,公开源代码 可移植性(Portable) 绝大部分 C/OS-II的源码是用移植性很强的ANSI C写的。和微处理器硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最低限度,使得 C/OS-II便于移植到其他微处理器上。 C/OS-II可以在绝大多数8位、16位、32位以至6

7、4位微处理器、微控制器 、数字信号处理器(DSP)上运行。 可固化(ROMable) C/OS-II是为嵌入式应用而设计的,这就意味着,只要用户有固化手段(C编译、连接、下载和固化), C/OS-II可以嵌入到用户的产品中成为产品的一部分。 可裁剪(Scalable) 可以只使用 C/OS-II中应用程序需要的那些系统服务。也就是说某产品可以只使用很少几个 C/OS-II调用,而另一个产品则使用了几乎所有 C/OS-II的功能,这样可以减少产品中的 C/OS-II所需的存储器空间(RAM和ROM)。这种可剪裁性是靠条件编译实现的。,C/OS的性能特点(一),17,占先式(Preemptive)

8、 多任务 C/OS-II可以管理64个任务,然而,目前这一版本保留8个给系统。应用程序最多可以有56个任务 可确定性 全部 C/OS-II的函数调用与服务的执行时间具有可确定性。 任务栈 每个任务有自己单独的栈, C/OS-II允许每个任务有不同的栈空间,以便压低应用程序对RAM的需求。 系统服务 C/OS-II提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存的申请与释放、时间相关函数等。 中断管理 中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。 稳定性与可靠性,C/OS的性能特点(二)

9、,18,C/OS-II图籍,描述了C/OS-II内部的工作原理 随书的CD中包含了源代码 工业界最清晰的源代码 除英文版外,有中文和韩文版,Chinese,Korean,English,ISBN 1-57820-103-9 美国CMP BOOK,ISBN 7-81077-290-2 北京航空航天大学出版社,ISBN 89-951540-5-5,19,C/OS-II的各种商业应用,全世界有数百种产品在应用: Avionics(航空电子设备) Medical Cell phones Routers and switches High-end audio equipment Washing mach

10、ines and dryers UPS (Uninterruptible Power Supplies) Industrial controllers GPS Navigation Systems Microwave Radios Instrumentation Point-of-sale terminals 更多,20,C/OS-II提供的系统服务,信号量 带互斥机制的信号量 减少优先级倒置的问题 事件标志 消息信箱 消息队列 内存管理 时钟管理 任务管理,21,主要内容,嵌入式操作系统 C/OS-简介 C/OS-内核结构 C/OS-任务管理 C/OS-时间管理 C/OS-任务通信与同步,2

11、2,C/OS-II的文件结构,23,内核结构 任务管理 时间管理 任务之间通信与同步 C/OS的移植,C/OS-II分析,24,当处理临界段代码时,须关中断,处理完毕后,再开中断 关中断时间是实时内核最重要的指标之一。它影响用户系统对实时事件的相应特性。 在实际应用中,关中断的时间很大程度上取决于微处理器的结构和编译器生成的代码质量 微处理器通常具有关中断/开中断操作。C编译器须具有某种机制,能够在c中直接实现关中断/开中断操作 C源代码中插入汇编语言的语句,易实现关中断/开中断操作 关中断/开中断操作作为语言的扩展部分,直接从C语言中可以 关中断/开中断,C/OS-II开关中断的方法,25,

12、C/OS-II开关中断的方法(续1),C/OS-II定义了两个宏调用来开关中断: OS_ENTER_CRITICAL( ) (禁止中断的宏) OS_EXIT_CRITICAL( ) (启用中断的宏) 通常成对出现 上述宏定义取决于使用的微处理器。在文件OS_CPU.H有相应的宏定义 在C/OS-II中,每种微处理器都有自己的OS_CPU.H文件,26,C/OS-II开关中断的方法(续2), OS_ENTER_CRITICAL( ); /* C/OS-II临界段代码*/ OS_EXIT_CRITICAL( ); 如果在所有挂起类(PEND)调用之前,如:调用OSTimeDel()(挂起时间)功能

13、函数之前关中断,会出现什么现象? 通常,调用C/OS-II功能函数时,中断总应当是开放的。,27,C/OS-II开关中断的方法(续3),OS_ENTER_CRITICAL( )及OS_EXIT_CRITICAL( )可以用3种不同的方法实现 具体方法取决于用户打算移植到的处理器的性能及所用的C编译器 用定义(#define)常数OS_CRITICAL_METHOD可以选择具体使用哪种方法 该常数在与CPU类型有关的移植文件OS_CPU.H中定义,28,OS_CRITICAL_METHOD=1 用最简单的方式来实现2个宏调用 用处理器指令关中断,完成OS_ENTER_CRITICAL() 用开中

14、断指令完成OS_EXIT_CRITICAL() 问题: 如果调用C/OS-II功能函数时,中断是关掉的,则从C/OS-II函数返回时,中断就打开了 若调用C/OS-II功能函数之前已将中断关掉,那么用户往往希望从C/OS-II函数返回时,中断仍然是关着的。这时,这种方法就不妥当。 对特定的处理器,这种办法是唯一的选择,C/OS-II中采用了3种开关中断的方法,29,C/OS-II中采用了3种开关中断的方法(续1),OS_CRITICAL_METHOD=2 在堆栈中保存中断的开/关状态,然后再关中断 实现OS_ENTER_CRITICAL()时,先在堆栈中保存中断的开/关状态,然后再关中断 实现

15、OS_EXIT_CRITICAL()时,从堆栈中弹出原来中断的开/关状态 利用这种机制,不论用户在调用C/OS-II功能函数之前中断是开或关,函数的进入和返回状态都得到了保护。即:调用前中断的开/关状态,在调用之后保持不变,30,C/OS-II中采用了3种开关中断的方法(续2),OS_CRITICAL_METHOD=3 把当前处理器的状态字(PSW)保存在C函数的局部变量中(如OS_CPU_SR) 关中断时保存,开中断时恢复,31,C/OS-II中采用了3种开关中断的方法(续3),Void Some_ uCOS_II_Service(arguments) OS_CPU_SR cpu_sr; c

16、pu_sr=get_processor_psw(); disable_interrupts(); /*临界段代码*/ set_processor_psw(cpu_sr); ,32,任务(task),典型的任务:一个无限循环 void mytask(void *pdata) for (;) do something; waiting; do something; ,33,Task Structure,34,用户应用程序的一般结构,“用户任务” 代码形式上很像 C函数,但他不是函数! “任务” 不能被主函数 main( ) 或其他函数调用,只能被主函数或已激活任务创建。 任务的运行由操作系统调度管理。,35,void MyTask1(void *pdata) void MyTask2(void *pdata) void main( )

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 公路与桥梁

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号