五、嵌入式实时操作系统分析.ppt
《五、嵌入式实时操作系统分析.ppt》由会员分享,可在线阅读,更多相关《五、嵌入式实时操作系统分析.ppt(162页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、1嵌入式系统设计与实例开发嵌入式系统设计与实例开发基于基于3232位微处理器与实时操作系统位微处理器与实时操作系统第五讲实时操作系统第五讲实时操作系统 C/OS-C/OS-分析分析北京航空航天大学北京航空航天大学机器人研究所机器人研究所王田苗魏洪兴王田苗魏洪兴2实时操作系统实时操作系统C/OS-II1 13 32 24 4 C/OS-II概述概述任务管理任务管理中断和时间中断和时间管理管理任务之间的通信与任务之间的通信与同步同步5 5存储管理存储管理3通用操作系统和嵌入式(实时)操作系统通用操作系统和嵌入式(实时)操作系统l通用操作系统:通用操作系统:Windows/NT/XP、Linux、U
2、NIX等,用于等,用于PC机、机、服务器,服务器,l嵌入式(实时)操作系统:用于嵌入式设备的操作系统,具有通嵌入式(实时)操作系统:用于嵌入式设备的操作系统,具有通用操作系统的基本特点,又具有系统实时性、硬件的相关依赖性、用操作系统的基本特点,又具有系统实时性、硬件的相关依赖性、软件固态化以及应用的专用性等特点;软件固态化以及应用的专用性等特点;l嵌入式(实时)操作系统通常包括与硬件相关的底层驱动软件、嵌入式(实时)操作系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等;等;l嵌
3、入式(实时)操作系统的重要指标:实时性(中断响应时间、嵌入式(实时)操作系统的重要指标:实时性(中断响应时间、任务切换时间等)、尺寸(可裁剪性任务切换时间等)、尺寸(可裁剪性)、可扩展性(内核、中间)、可扩展性(内核、中间件);件);4嵌入式操作系统的发展嵌入式操作系统的发展操作系统内核操作系统内核应用程序应用程序驱动程序和固件驱动程序和固件操作系统内核操作系统内核文件系统文件系统驱动程序和固件驱动程序和固件API GUI应用程序应用程序操作系统内核操作系统内核文件系统文件系统驱动程序和固件驱动程序和固件API GUI应用程序应用程序通信协议通信协议库函数库函数80年代初期年代初期80年代中期
4、年代中期-90年代中年代中期期90年代末期年代末期-21世纪世纪5常见的嵌入式操作系统常见的嵌入式操作系统 实时嵌入式操作系统的种类繁多,大体上可分为两实时嵌入式操作系统的种类繁多,大体上可分为两种,商用型和免费型。种,商用型和免费型。l商用型的实操作系统功能稳定、可靠,有完善的技商用型的实操作系统功能稳定、可靠,有完善的技术支持和售后服务,但往往价格昂贵术支持和售后服务,但往往价格昂贵,如如VxworksVxworks、QNXQNX、WinCEWinCE、Palm OSPalm OS等。等。l免费型的实时操作系统在价格方面具有优势,目前免费型的实时操作系统在价格方面具有优势,目前主要有主要有
5、Linux,CLinux,C/OS/OS是一种源码开放的商业是一种源码开放的商业RTOSRTOS;C/OS是商业操作是商业操作系统系统6学习嵌入式操作系统学习嵌入式操作系统 l学习一种实时操作系统学习一种实时操作系统RTOSRTOS,如,如ucuc/OS,/OS,掌握实时系掌握实时系统的概念和设计方法;统的概念和设计方法;l嵌入式系统以应用为中心,应用时选择嵌入式系统以应用为中心,应用时选择“适用适用”的的操作系统;操作系统;l嵌入式嵌入式LinuxLinux;l自己自己“写写”RTOSRTOS一种学习态度;一种学习态度;7RTOSRTOS在嵌入式系统中的位置在嵌入式系统中的位置嵌入式硬件平台
6、BSPKERNELFSTCP/IP设备驱动设备驱动设备设备I/O调试工具调试工具其它组件其它组件应用RTOSC/C+8C/OS简介1、C/OSMicro Controller O S,微控制器操作系统2 2、C/OSC/OS简介l美国人美国人Jean Jean LabrosseLabrosse 1992 1992年完成年完成l应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等机控制、高速公路电话系统、自动提款机等 l19981998年年 C/OSC/OS-II-II,目前的版本,目前的版本 C/
7、OSC/OS-II V2.61-II V2.61,2.722.72l20002000年,得到美国航空管理局(年,得到美国航空管理局(FAAFAA)的认证,可以用于飞行器)的认证,可以用于飞行器中中l网站网站www.ucos-II.comwww.ucos-II.com()9u公开源代码公开源代码u可移植性(可移植性(PortablePortable)绝大部分绝大部分 C/OS-IIC/OS-II的源码是用移植性很强的的源码是用移植性很强的ANSI CANSI C写的。和微处理器写的。和微处理器硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最低硬件相关的那部分是用汇编语言写的。汇编语言
8、写的部分已经压到最低限度,使得限度,使得 C/OS-IIC/OS-II便于移植到其他微处理器上。便于移植到其他微处理器上。C/OS-IIC/OS-II可以在绝可以在绝大多数大多数8 8位、位、1616位、位、3232位以至位以至6464位微处理器、微控制器位微处理器、微控制器 、数字信号处理、数字信号处理器(器(DSPDSP)上运行。上运行。u可固化(可固化(ROMableROMable)C/OS-IIC/OS-II是为嵌入式应用而设计的,这就意味着,只要读者有固化手是为嵌入式应用而设计的,这就意味着,只要读者有固化手段(段(C C编译、连接、下载和固化),编译、连接、下载和固化),C/OS-
9、IIC/OS-II可以嵌入到读者的产品可以嵌入到读者的产品中成为产品的一部分。中成为产品的一部分。u可裁剪(可裁剪(ScalableScalable)可以只使用可以只使用 C/OS-IIC/OS-II中应用程序需要的那些系统服务。也就是说某产中应用程序需要的那些系统服务。也就是说某产品可以只使用很少几个品可以只使用很少几个 C/OS-IIC/OS-II调用,而另一个产品则使用了几乎所调用,而另一个产品则使用了几乎所有有 C/OS-IIC/OS-II的功能,这样可以减少产品中的的功能,这样可以减少产品中的 C/OS-IIC/OS-II所需的存储器空所需的存储器空间(间(RAMRAM和和ROMRO
10、M)。)。这种可剪裁性是靠条件编译实现的。这种可剪裁性是靠条件编译实现的。C/OS的性能特点(一)10u占先式(占先式(PreemptivePreemptive)u多任务多任务 C/OS-IIC/OS-II可以管理可以管理6464个任务,然而,目前这一版本保留个任务,然而,目前这一版本保留8 8个给系统。应用程序最多个给系统。应用程序最多可以有可以有256256个任务个任务u可确定性可确定性 全部全部 C/OS-IIC/OS-II的函数调用与服务的执行时间具有可确定性。的函数调用与服务的执行时间具有可确定性。u任务栈任务栈 每个任务有自己单独的栈,每个任务有自己单独的栈,C/OS-IIC/OS
11、-II允许每个任务有不同的栈空间,以便压低应允许每个任务有不同的栈空间,以便压低应用程序对用程序对RAMRAM的需求。的需求。u系统服务系统服务 C/OS-IIC/OS-II提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存的申请与释放、时间相关函数等。的申请与释放、时间相关函数等。u中断管理中断管理 中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达高优先级的任务在中断嵌
12、套全部退出后立即执行,中断嵌套层数可达255255层。层。u稳定性与可靠性稳定性与可靠性C/OS的性能特点(二)11C/OS-IIC/OS-II图书图书l描述了描述了C/OS-IIC/OS-II内部的工作原理内部的工作原理l随书的随书的CDCD中包含了源代码中包含了源代码n工业界最清晰的源代码工业界最清晰的源代码l除英文版外,有中文和韩文版除英文版外,有中文和韩文版ChineseKoreanEnglishISBN 1-57820-103-9美国CMP BOOK ISBN 7-81077-290-2北京航空航天大学出版社ISBN 89-951540-5-512C/OS-II的各种商业应用l全世界
13、有数百种产品在应用全世界有数百种产品在应用:lAvionicslMedicallCell phoneslRouters and switcheslHigh-end audio equipmentlWashing machines and dryerslUPS(Uninterruptible Power Supplies)lIndustrial controllerslGPS Navigation SystemslMicrowave RadioslInstrumentationlPoint-of-sale terminalsl更多更多13C/OS-II提供的系统服务l信号量信号量l带互斥机制的信
14、号量带互斥机制的信号量n减少优先级倒置的问题减少优先级倒置的问题l事件标志事件标志l消息信箱消息信箱l消息队列消息队列l内存管理内存管理l时钟管理时钟管理l任务管理任务管理14C/GUI and C/FSlC/GUIC/GUIl嵌入式的用户界面嵌入式的用户界面l用用ANSI CANSI C书写书写l支持任何支持任何8,16,32-bits CPU8,16,32-bits CPUl彩色,灰、度,等级或黑白显示彩色,灰、度,等级或黑白显示l代码尺寸小代码尺寸小lC/FSC/FSl嵌入式的文件系统嵌入式的文件系统Written in ANSI CWritten in ANSI Cl用用ANSI CA
15、NSI C书写书写l支持任何支持任何8,16,32-bits CPU8,16,32-bits CPUl支持支持SMC,MMC,SD,CF,IDE,Flash,RAMSMC,MMC,SD,CF,IDE,Flash,RAM其他介质其他介质15可移植的可移植的数据类型数据类型typedefunsignedcharBOOLEAN;typedefunsignedcharINT8U;typedefsignedcharINT8S;typedefunsignedintINT16U;typedefsignedintINT16S;typedefunsignedlongINT32U;typedefsignedlon
16、gINT32S;typedeffloatFP32;typedefdoubleFP64;16C/OS-II的文件结构171 13 32 24 4 C/OS-II概述概述任务管理任务管理中断和时间中断和时间管理管理任务之间的通信与任务之间的通信与同步同步5 5存储管理存储管理18任务的实现任务的实现创建任务的系统服务创建任务的系统服务lOSTaskCreate()INT8UOSTaskCreate(void(*task)(void*pd),/任务代码指针任务代码指针void*pdata,/任务参数指针任务参数指针OS_STK*ptos,/任务栈的栈顶指针任务栈的栈顶指针INT8Uprio/任务的优
17、先级任务的优先级);lOSTaskCreateExt()提问:提问:C/OS-II中的任务是进程还是线程?中的任务是进程还是线程?19任务主函数任务主函数一个任务通常是一个无限循环(返回值类型一个任务通常是一个无限循环(返回值类型voidvoid)voidMyTask(void*pdata)while(1)dosomething;waiting;dosomething;Why?20任务也可以自我删除(并非真的删除,只是内核不任务也可以自我删除(并非真的删除,只是内核不再知道该任务)再知道该任务)voidMyTask(void*pdata)./*用户代码用户代码*/OSTaskDel(OS_PR
18、IO_SELF);21lC/OS-C/OS-可以管理多达可以管理多达6464个任务;个任务;l每个任务被赋以不同的优先级,取值从每个任务被赋以不同的优先级,取值从0 0到到OS_LOWEST_PRIO-2OS_LOWEST_PRIO-2,数值越小,优先级越高;,数值越小,优先级越高;l系统保留了优先级为系统保留了优先级为0 0、1 1、2 2、3 3、OS_LOWEST_PRIO-3OS_LOWEST_PRIO-3、OS_LOWEST_PRI0-2OS_LOWEST_PRI0-2,OS_LOWEST_PRI0-1OS_LOWEST_PRI0-1以及以及OS_LOWEST_PRI0OS_LOWE
19、ST_PRI0这这8 8个任务个任务以被将来使用,用户可以有以被将来使用,用户可以有5656个应用任务;个应用任务;l任务的优先级同样也是它的标识号任务的优先级同样也是它的标识号IDID。OS_CFG.H中定义中定义6322空闲任务和统计任务空闲任务和统计任务l内核总是创建一个内核总是创建一个空闲任务空闲任务OSTaskIdleOSTaskIdle()();w总是设置为最低优先级,总是设置为最低优先级,OS_LOWEST_PRIOROS_LOWEST_PRIOR;w当所有其他任务都未在执行时,空闲任务开始当所有其他任务都未在执行时,空闲任务开始执行;执行;w应用程序不能删除该任务;应用程序不能
20、删除该任务;w空闲任务的工作就是把空闲任务的工作就是把3232位计数器位计数器OSIdleCtrOSIdleCtr加加1 1,该计数器被统计任务所使用;,该计数器被统计任务所使用;l统计任务统计任务OSTaskStatOSTaskStat()(),提供运行时间统计。每,提供运行时间统计。每秒钟运行一次,计算当前的秒钟运行一次,计算当前的CPUCPU利用率。其优先级利用率。其优先级是是OS_LOWEST_PRIOR-1OS_LOWEST_PRIOR-1,可选。,可选。23任务控制块任务控制块TCBTCBl任务控制块任务控制块 OS_TCBOS_TCB是描述一个任务的核是描述一个任务的核心数据结构
21、,存放了它的各种管理信息,心数据结构,存放了它的各种管理信息,包括任务堆栈指针,任务的状态、优先包括任务堆栈指针,任务的状态、优先级,任务链表指针等;级,任务链表指针等;l一旦任务建立了,任务控制块一旦任务建立了,任务控制块OS_TCBOS_TCB将将被赋值。被赋值。24任务控制块任务控制块TCBTCBtypedefstructos_tcb栈栈指指针针;INT16UOSTCBId;/*任任务务的的ID*/链链表指表指针针;OS_EVENT*OSTCBEventPtr;/*事件指事件指针针*/void*OSTCBMsg;/*消息指消息指针针*/INT8UOSTCBStat;/*任任务务的状的状态
22、态*/INT8UOSTCBPrio;/*任任务务的的优优先先级级*/其他其他OS_TCB;25栈指针栈指针lOSTCBStkPtrOSTCBStkPtr:指向当前任务栈顶的指针,指向当前任务栈顶的指针,每个任务可以有自己的栈,栈的容量可以每个任务可以有自己的栈,栈的容量可以是任意的;是任意的;lOSTCBStkBottomOSTCBStkBottom:指向任务栈底的指针;:指向任务栈底的指针;lOSTCBStkSizeOSTCBStkSize:栈的容量,用可容纳的指:栈的容量,用可容纳的指针数目而不是字节数(针数目而不是字节数(ByteByte)来表示。)来表示。2627链表指针链表指针l所有
23、的任务控制块分属于两条不同的链表,所有的任务控制块分属于两条不同的链表,单向的单向的空闲链表空闲链表(头指针为(头指针为OSTCBFreeListOSTCBFreeList)和双向的)和双向的使用链表使用链表(头(头指针为指针为OSTCBListOSTCBList););lOSTCBNextOSTCBNext、OSTCBPrevOSTCBPrev:用于将任务控制用于将任务控制块插入到空闲链表或使用链表中。每个任块插入到空闲链表或使用链表中。每个任务的任务控制块在任务创建的时候被链接务的任务控制块在任务创建的时候被链接到使用链表中,在任务删除的时候从链表到使用链表中,在任务删除的时候从链表中被删
24、除。双向连接的链表使得任一成员中被删除。双向连接的链表使得任一成员都能快速插入或删除。都能快速插入或删除。28空闲空闲TCBTCB链表链表l所有的任务控制块都被放置在任务控制块列表数组所有的任务控制块都被放置在任务控制块列表数组OSTCBTbl中,系统初始化时,所有中,系统初始化时,所有TCBTCB被链接成空闲的单向链表,被链接成空闲的单向链表,头指针为头指针为OSTCBFreeListOSTCBFreeList。当创建一个任务后,就把。当创建一个任务后,就把OSTCBFreeListOSTCBFreeList所指向的所指向的TCBTCB赋给了该任务,并将它加入到赋给了该任务,并将它加入到使用
25、链表中,然后把使用链表中,然后把OSTCBFreeListOSTCBFreeList指向空闲链表中的下一指向空闲链表中的下一个结点。个结点。29系统初始化后系统初始化后指针数组,指向相应指针数组,指向相应TCB30任务的状态休眠任务的状态休眠l休眠状态休眠状态(Dormant):任务存在于内存:任务存在于内存空间中,但内核不可见;空间中,但内核不可见;l可以通过以下函数通知内核,使之变为就可以通过以下函数通知内核,使之变为就绪状态:绪状态:OSTaskCreate()或或OSTaskCreateExt()l可以通过以下函数返回到休眠状态:可以通过以下函数返回到休眠状态:OSTaskDel()3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 实时 操作系统 分析
限制150内