嵌入式操作系统uCUS2简介.ppt
《嵌入式操作系统uCUS2简介.ppt》由会员分享,可在线阅读,更多相关《嵌入式操作系统uCUS2简介.ppt(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第第5 5章章 实时操作系统实时操作系统 C/OS-C/OS-简介简介5/17/20231第五章 嵌入式实时操作系统分析本章提要本章提要1 13 32 25 54 46 6 C/OS-C/OS-简介简介简介简介C/OS-内核结构C/OS-任务通信与同步C/OS-任务管理C/OS-时间管理C/OS-移植5/17/20232第五章 嵌入式实时操作系统分析RTOS是32位的嵌入式CPU的软件基础nRTOS内核 提供CPU的管理硬件初时化,MMU,定时器,中断nRTOS 内核提供任务,内存管理nRTOS提供设备管理,文件和网络的支持nRTOS提供C/C+,JAVA,图形模块等编程接口1 1 C/OS
2、-简介简介5/17/20233第五章 嵌入式实时操作系统分析C/OSMicro Controller O S,微控制器操作系统C/OS简介简介美国人Jean Labrosse 1992年完成应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等 1998年C/OS-II,目前的版本C/OS-II V2.612000年,得到美国航空管理局(FAA)的认证,可以用于飞行器中网站()1 1 C/OS-简介简介5/17/20234第五章 嵌入式实时操作系统分析u公开源代码u可移植性(Portable)绝大部分 C/OS-II的源码是用移植性很强的ANSI C写的
3、。和微处理器硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最低限度,使得 C/OS-II便于移植到其他微处理器上。C/OS-II可以在绝大多数8位、16位、32位以至64位微处理器、微控制器、数字信号处理器(DSP)上运行。u可固化(ROMable)C/OS-II是为嵌入式应用而设计的,这就意味着,只要读者有固化手段(C编译、连接、下载和固化),C/OS-II可以嵌入到读者的产品中成为产品的一部分。u可裁剪(Scalable)可以只使用 C/OS-II中应用程序需要的那些系统服务。也就是说某产品可以只使用很少几个 C/OS-II调用,而另一个产品则使用了几乎所有 C/OS-II的功
4、能,这样可以减少产品中的 C/OS-II所需的存储器空间(RAM和ROM)。这种可剪裁性是靠条件编译实现的。C/OS的性能特点(一)1 1 C/OS-简介简介5/17/20235第五章 嵌入式实时操作系统分析u占先式(Preemptive)u多任务 C/OS-II可以管理64个任务,然而,目前这一版本保留8个给系统。应用程序最多可以有56个任务u可确定性 全部 C/OS-II的函数调用与服务的执行时间具有可确定性。u任务栈 每个任务有自己单独的栈,C/OS-II允许每个任务有不同的栈空间,以便压低应用程序对RAM的需求。u系统服务 C/OS-II提供很多系统服务,例如邮箱、消息队列、信号量、块
5、大小固定的内存的申请与释放、时间相关函数等。u中断管理 中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。u稳定性与可靠性C/OS的性能特点(二)1 1 C/OS-简介简介5/17/20236第五章 嵌入式实时操作系统分析C/OS-II图书n描述了C/OS-II内部的工作原理n随书的CD中包含了源代码n工业界最清晰的源代码n除英文版外,有中文和韩文版ChineseKoreanEnglishISBN 1-57820-103-9美国CMP BOOK ISBN 7-81077-290-2北京航空航天大学出版社I
6、SBN 89-951540-5-51 1 C/OS-简介简介5/17/20237第五章 嵌入式实时操作系统分析C/OS-II的各种商业应用n全世界有数百种产品在应用:AvionicsMedicalCell phonesRouters and switchesHigh-end audio equipmentWashing machines and dryersUPS(Uninterruptible Power Supplies)Industrial controllersGPS Navigation SystemsMicrowave RadiosInstrumentationPoint-of-s
7、ale terminals更多1 1 C/OS-简介简介5/17/20238第五章 嵌入式实时操作系统分析C/OS-II提供的系统服务n信号量n带互斥机制的信号量n减少优先级倒置的问题n事件标志n消息信箱n消息队列n内存管理n时钟管理n任务管理1 1 C/OS-简介简介5/17/20239第五章 嵌入式实时操作系统分析本章提要本章提要1 13 32 25 54 46 6 C/OS-简介简介 C/OS-内核结构内核结构 C/OS-任务通信与同步任务通信与同步 C/OS-C/OS-任务管理任务管理 C/OS-时间管理时间管理 C/OS-移植移植5/17/202310第五章 嵌入式实时操作系统分析
8、本部分给出本部分给出本部分给出本部分给出C/OS-C/OS-C/OS-C/OS-的主要结构概貌。将学习以下一些内容;的主要结构概貌。将学习以下一些内容;的主要结构概貌。将学习以下一些内容;的主要结构概貌。将学习以下一些内容;C/OS-C/OS-C/OS-C/OS-是怎样处理临界段代码的是怎样处理临界段代码的是怎样处理临界段代码的是怎样处理临界段代码的;什什什什么么么么是是是是任任任任务务务务,怎怎怎怎样样样样把把把把用用用用户户户户的的的的任任任任务务务务交交交交给给给给C/OS-;C/OS-;C/OS-;C/OS-;任务是怎样调度的任务是怎样调度的任务是怎样调度的任务是怎样调度的;应应应应用
9、用用用程程程程序序序序CPUCPUCPUCPU的的的的利利利利用用用用率率率率是是是是多多多多少少少少,C/OS-C/OS-C/OS-C/OS-是怎样知道的是怎样知道的是怎样知道的是怎样知道的;怎样写中断服务子程序怎样写中断服务子程序怎样写中断服务子程序怎样写中断服务子程序;什什什什么么么么是是是是时时时时钟钟钟钟节节节节拍拍拍拍,C/OS-C/OS-C/OS-C/OS-是是是是怎怎怎怎样样样样处处处处理理理理时时时时钟钟钟钟节拍的节拍的节拍的节拍的;C/OS-C/OS-C/OS-C/OS-是是是是怎怎怎怎样样样样初初初初始始始始化化化化的的的的,以以以以及及及及怎怎怎怎样样样样启启启启动动动
10、动多多多多任务任务任务任务;还描述以下函数还描述以下函数还描述以下函数还描述以下函数,这些服务于应用程序:这些服务于应用程序:这些服务于应用程序:这些服务于应用程序:OS_ENTER_CRITICAL()OS_ENTER_CRITICAL()OS_ENTER_CRITICAL()OS_ENTER_CRITICAL()和和和和 OS_EXIT_CRITICAL(),OS_EXIT_CRITICAL(),OS_EXIT_CRITICAL(),OS_EXIT_CRITICAL(),OSInit(),OSInit(),OSInit(),OSInit(),OSStart(),OSStart(),OSSt
11、art(),OSStart(),OSIntEnter()OSIntEnter()OSIntEnter()OSIntEnter()和和和和 OSIntExit(),OSIntExit(),OSIntExit(),OSIntExit(),OSSchedLock()OSSchedLock()OSSchedLock()OSSchedLock()和和和和 OSSchedUnlock(),OSSchedUnlock(),OSSchedUnlock(),OSSchedUnlock(),以及以及以及以及 OSVersion().OSVersion().OSVersion().OSVersion().2 2 C
12、/OS-内核结构内核结构5/17/202311第五章 嵌入式实时操作系统分析C/OS-II的文件结构H2 2 C/OS-内核结构内核结构5/17/202312第五章 嵌入式实时操作系统分析临界段临界段临界段临界段(Critical Sections)(Critical Sections)OS_ENTER_CRITICAL()OS_ENTER_CRITICAL()OS_ENTER_CRITICAL()OS_ENTER_CRITICAL()和和和和OS_EXIT_CRITICAL()OS_EXIT_CRITICAL()OS_EXIT_CRITICAL()OS_EXIT_CRITICAL()。因因因
13、因为为为为这这这这两两两两个个个个宏宏宏宏的的的的定定定定义义义义取取取取决决决决于于于于所所所所用用用用的的的的微微微微处处处处理理理理器器器器,故故故故在在在在文文文文件件件件OS_CPU.HOS_CPU.HOS_CPU.HOS_CPU.H中中中中可可可可以以以以找找找找到到到到相相相相应应应应宏宏宏宏定定定定义义义义。每每每每种种种种微微微微处理器都有自己的处理器都有自己的处理器都有自己的处理器都有自己的OS_CPU.HOS_CPU.HOS_CPU.HOS_CPU.H文件。文件。文件。文件。2 2 C/OS-内核结构内核结构5/17/202313第五章 嵌入式实时操作系统分析任务task
14、典型的任务一个无限循环。void mytask(void*pdata)for(;)do something;waiting;do something;2 2 C/OS-内核结构内核结构l C/OSC/OS II 2.5 II 2.5版本支持版本支持6464个任务个任务,每个任务一个特定的,每个任务一个特定的优先级。优先级越高,数字越小。优先级。优先级越高,数字越小。l系统占用了系统占用了8 8个任务个任务,保留优先级为保留优先级为0 0、1 1、2 2、3 3、OS_LOWEST_PRIO-3OS_LOWEST_PRIO-3、OS_LOWEST_PRIO-2OS_LOWEST_PRIO-2、O
15、S_LOWEST_PRIO-1OS_LOWEST_PRIO-1、OS_LOWEST_PRIO-0OS_LOWEST_PRIO-0。5/17/202314第五章 嵌入式实时操作系统分析 一个任务通常是一个无限的循环。一个任务通常是一个无限的循环。一个任务看起一个任务看起来像其它来像其它C C的函数一样的函数一样,有函数返回类型,有形式参数,有函数返回类型,有形式参数变量,但是任务是绝不会返回的。故返回参数必须定义变量,但是任务是绝不会返回的。故返回参数必须定义成成voidvoid。不同的是,当任务完成以后,任务可以自我删除不同的是,当任务完成以后,任务可以自我删除不同的是,当任务完成以后,任务可
16、以自我删除不同的是,当任务完成以后,任务可以自我删除,如清单所示。注意如清单所示。注意任务代码并非真的删除了,任务代码并非真的删除了,C/OS-C/OS-只是简单地不再理会这个任务了,这个任务的代码也不只是简单地不再理会这个任务了,这个任务的代码也不会再运行会再运行,如果任务调用了,如果任务调用了OSTaskDel()OSTaskDel(),这个任务绝不,这个任务绝不会返回什么。会返回什么。2 2 C/OS-内核结构内核结构5/17/202315第五章 嵌入式实时操作系统分析Task StructurevoidYourTask(void*pdata)(1)for(;)(2)/*用户代码*/调用
17、uC/OS-II的某种系统服务:OSMboxPend();OSMboxPend();OSQPend();OSQPend();OSSemPend();OSSemPend();OSTaskDel(OS_PRIO_SELF);OSTaskDel(OS_PRIO_SELF);OSTaskSuspend(OS_PRIO_SELF);OSTaskSuspend(OS_PRIO_SELF);OSTimeDly();OSTimeDly();OSTimeDlyHMSM();OSTimeDlyHMSM();/*用户代码*/2 2 C/OS-内核结构内核结构5/17/202316第五章 嵌入式实时操作系统分析任务状
18、态2 2 C/OS-内核结构内核结构5/17/202317第五章 嵌入式实时操作系统分析任务级的任务调度-OSSchedn n C/OSC/OS是占先式实时多任务内核,优先级最高的任务一旦准备是占先式实时多任务内核,优先级最高的任务一旦准备就绪,则拥有就绪,则拥有CPUCPU的所有权开始投入运行。的所有权开始投入运行。n n C/OSC/OS中不支持时间片轮转法,每个任务的优先级要求不一样中不支持时间片轮转法,每个任务的优先级要求不一样且是唯一的,所以任务调度的工作就是:查找准备就绪的最高且是唯一的,所以任务调度的工作就是:查找准备就绪的最高优先级的任务并进行优先级的任务并进行上下文上下文(任
19、务)任务)切换。切换。n n C/OSC/OS任务调度所花的时间为常数,与应用程序中建立的任务任务调度所花的时间为常数,与应用程序中建立的任务数无关数无关。两个关键两个关键两个关键两个关键:l l优先级数分解为高三位和低三位分别确定;优先级数分解为高三位和低三位分别确定;优先级数分解为高三位和低三位分别确定;优先级数分解为高三位和低三位分别确定;l l高优先级有着小的优先级号高优先级有着小的优先级号高优先级有着小的优先级号高优先级有着小的优先级号 ;根据就绪表确定最高优先级根据就绪表确定最高优先级根据就绪表确定最高优先级根据就绪表确定最高优先级2 2 C/OS-内核结构内核结构5/17/202
20、318第五章 嵌入式实时操作系统分析任务调度(任务调度(任务调度(任务调度(Task SchedulingTask Scheduling)C/OS-C/OS-总是运行进入就绪态任务中优先级最总是运行进入就绪态任务中优先级最高的那一个。确定哪个任务优先级最高,下面该哪个高的那一个。确定哪个任务优先级最高,下面该哪个任务运行了的工作是由调度器(任务运行了的工作是由调度器(SchedulerScheduler)完成的。)完成的。任务级的调度是由函数任务级的调度是由函数任务级的调度是由函数任务级的调度是由函数OSSched()OSSched()OSSched()OSSched()完成的。完成的。完成的
21、。完成的。中断级的调度是由另一个函数中断级的调度是由另一个函数中断级的调度是由另一个函数中断级的调度是由另一个函数OSIntExt()OSIntExt()OSIntExt()OSIntExt()完成的。完成的。完成的。完成的。这个函数将在以后描述。这个函数将在以后描述。OSSched()OSSched()的代码如程序清的代码如程序清单单 2 2 C/OS-内核结构内核结构5/17/202319第五章 嵌入式实时操作系统分析Task schedulervoidOSSched(void)INT8Uy;INT8Uy;OS_ENTER_CRITICAL();OS_ENTER_CRITICAL();if
22、(OSLockNesting=0)&(OSIntNesting=0)if(OSLockNesting=0)&(OSIntNesting=0)(1)(1)y=OSUnMapTblOSRdyGrpy=OSUnMapTblOSRdyGrp;(2)(2)OSPrioHighRdy=(INT8U)(y3)+OSPrioHighRdy=(INT8U)(y0OSIntNesting0OSIntNesting0OSIntNesting0,或者由于用户至少调用了一次给,或者由于用户至少调用了一次给,或者由于用户至少调用了一次给,或者由于用户至少调用了一次给任务调度上锁函数任务调度上锁函数任务调度上锁函数任务调度
23、上锁函数OSSchedLock()OSSchedLock()OSSchedLock()OSSchedLock(),使,使,使,使OSLockNesting0OSLockNesting0OSLockNesting0OSLockNesting0。如果不是在中断如果不是在中断服务子程序调用服务子程序调用OSSched()OSSched(),并且任务调度是允许的,即没有上锁,则任,并且任务调度是允许的,即没有上锁,则任务调度函数将找出那个进入就绪态且优先级最高的任务务调度函数将找出那个进入就绪态且优先级最高的任务L(2)L(2),进入就绪进入就绪进入就绪进入就绪态的任务在就绪任务表中有相应的位置位。一
24、旦找到那个优先级最高的任态的任务在就绪任务表中有相应的位置位。一旦找到那个优先级最高的任态的任务在就绪任务表中有相应的位置位。一旦找到那个优先级最高的任态的任务在就绪任务表中有相应的位置位。一旦找到那个优先级最高的任务,务,务,务,OSSched()OSSched()OSSched()OSSched()检验这个优先级最高的任务是不是当前正在运行的任务,检验这个优先级最高的任务是不是当前正在运行的任务,检验这个优先级最高的任务是不是当前正在运行的任务,检验这个优先级最高的任务是不是当前正在运行的任务,以此来避免不必要的任务调度以此来避免不必要的任务调度以此来避免不必要的任务调度以此来避免不必要的
25、任务调度L(3)L(3)L(3)L(3)。注意,在。注意,在C/OSC/OS中曾经是先得到中曾经是先得到OSTCBHighRdyOSTCBHighRdy然后和然后和OSTCBCurOSTCBCur做比较。因为这个比较是两个指针型变量的做比较。因为这个比较是两个指针型变量的比较,在比较,在8 8位和一些位和一些1616位微处理器中这种比较相对较慢。而在位微处理器中这种比较相对较慢。而在C/OS-C/OS-中中是两个整数的比较。并且,除非用户实际需要做任务切换,在查任务控制是两个整数的比较。并且,除非用户实际需要做任务切换,在查任务控制块优先级表块优先级表OSTCBPrioTblOSTCBPrio
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 操作系统 uCUS2 简介
限制150内