最新嵌入式实时操作系统分析PPT课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《最新嵌入式实时操作系统分析PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新嵌入式实时操作系统分析PPT课件.ppt(163页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式实时操作系统分析嵌入式实时操作系统分析2实时操作系统实时操作系统C/OS-II1 13 32 24 4 C/OS-II概述概述任务管理任务管理中断和时间中断和时间管理管理任务之间的通信与任务之间的通信与同步同步5 5存储管理存储管理3456789u公开源代码公开源代码u可移植性(可移植性(PortablePortable)绝大部分绝大部分 C/OS-IIC/OS-II的源码是用移植性很强的的源码是用移植性很强的ANSI CANSI C写的。和微处理器写的。和微处理器硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最低限
2、度,使得低限度,使得 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-IIC/OS-II可
3、以嵌入到读者的产品可以嵌入到读者的产品中成为产品的一部分。中成为产品的一部分。u可裁剪(可裁剪(ScalableScalable)可以只使用可以只使用 C/OS-IIC/OS-II中应用程序需要的那些系统服务。也就是说某产中应用程序需要的那些系统服务。也就是说某产品可以只使用很少几个品可以只使用很少几个 C/OS-IIC/OS-II调用,而另一个产品则使用了几乎所调用,而另一个产品则使用了几乎所有有 C/OS-IIC/OS-II的功能,这样可以减少产品中的的功能,这样可以减少产品中的 C/OS-IIC/OS-II所需的存储器空所需的存储器空间(间(RAMRAM和和ROMROM)。)。这种可剪裁
4、性是靠条件编译实现的。这种可剪裁性是靠条件编译实现的。C/OS的性能特点(一)10u占先式(占先式(PreemptivePreemptive)总是运行就绪条件下优先级最高的任务。总是运行就绪条件下优先级最高的任务。u多任务多任务 C/OS-IIC/OS-II可以管理可以管理6464个任务,然而,目前这一版本保留个任务,然而,目前这一版本保留8 8个给系统。应用程序最多个给系统。应用程序最多可以有可以有5656个任务。个任务。u可确定性可确定性 全部全部 C/OS-IIC/OS-II的函数调用与服务的执行时间具有可确定性。的函数调用与服务的执行时间具有可确定性。u任务栈任务栈 每个任务有自己单独
5、的栈,每个任务有自己单独的栈,C/OS-IIC/OS-II允许每个任务有不同的栈空间,以便压低应允许每个任务有不同的栈空间,以便压低应用程序对用程序对RAMRAM的需求。的需求。u系统服务系统服务 C/OS-IIC/OS-II提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存的申请与释放、时间相关函数等。的申请与释放、时间相关函数等。u中断管理中断管理 中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退
6、出后立即执行,中断嵌套层数可达高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达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-9515
7、40-5-512C/OS-II的各种商业应用l全世界有数百种产品在应用全世界有数百种产品在应用:lAvionicslMedicallCell phoneslRouters and switcheslHigh-end audio equipmentlWashing machines and dryerslUPS(Uninterruptible Power Supplies)lIndustrial controllerslGPS Navigation SystemslMicrowave RadioslInstrumentationlPoint-of-sale terminalsl更多更多13C/O
8、S-II提供的系统服务l信号量信号量l带互斥机制的信号量带互斥机制的信号量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 CW
9、ritten in ANSI Cl用用ANSI CANSI 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;typedefunsignedl
10、ongINT32U;typedefsignedlongINT32S;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,/任务栈的
11、栈顶指针任务栈的栈顶指针INT8Uprio/任务的优先级任务的优先级);lOSTaskCreateExt()19任务主函数任务主函数一个任务通常是一个无限循环(返回值类型一个任务通常是一个无限循环(返回值类型voidvoid)voidMyTask(void*pdata)while(1)dosomething;waiting;dosomething;20任务也可以自我删除(并非真的删除,只是内核不任务也可以自我删除(并非真的删除,只是内核不再知道该任务)再知道该任务)voidMyTask(void*pdata)./*用户代码用户代码*/OSTaskDel(OS_PRIO_SELF);21lC/O
12、S-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_LOWEST_PRI0这这8 8个任务
13、个任务以被将来使用,用户可以有以被将来使用,用户可以有5656个应用任务;个应用任务;l任务的优先级同样也是它的标识号任务的优先级同样也是它的标识号IDID。OS_CFG.H中定义中定义6122空闲任务和统计任务空闲任务和统计任务l内核总是创建一个内核总是创建一个空闲任务空闲任务OSTaskIdle()OSTaskIdle();w总是设置为最低优先级,总是设置为最低优先级,OS_LOWEST_PRIOOS_LOWEST_PRIO;w当所有其他任务都未在执行时,空闲任务开始当所有其他任务都未在执行时,空闲任务开始执行;执行;w应用程序不能删除该任务;应用程序不能删除该任务;w空闲任务的工作就是把
14、空闲任务的工作就是把3232位计数器位计数器OSIdleCtrOSIdleCtr加加1 1,该计数器被统计任务所使用;,该计数器被统计任务所使用;l统计任务统计任务OSTaskStat()OSTaskStat(),提供运行时间统计。每,提供运行时间统计。每秒钟运行一次,计算当前的秒钟运行一次,计算当前的CPUCPU利用率。其优先级利用率。其优先级是是OS_LOWEST_PRIO-1OS_LOWEST_PRIO-1,可选。,可选。23任务控制块任务控制块TCBTCBl任务控制块任务控制块 OS_TCB OS_TCB是描述一个任务的核是描述一个任务的核心数据结构,存放了它的各种管理信息,心数据结构
15、,存放了它的各种管理信息,包括任务堆栈指针,任务的状态、优先包括任务堆栈指针,任务的状态、优先级,任务链表指针等;级,任务链表指针等;l一旦任务建立了,任务控制块一旦任务建立了,任务控制块OS_TCBOS_TCB将将被赋值。被赋值。24任务控制块任务控制块TCBTCBtypedefstructos_tcb栈栈指指针针;INT16UOSTCBId;/*任任务务的的ID*/链链表指表指针针;OS_EVENT*OSTCBEventPtr;/*事件指事件指针针*/void*OSTCBMsg;/*消息指消息指针针*/INT8UOSTCBStat;/*任任务务的状的状态态*/INT8UOSTCBPrio;
16、/*任任务务的的优优先先级级*/其他其他OS_TCB;25栈指针栈指针lOSTCBStkPtrOSTCBStkPtr:指向当前任务栈顶的指针,指向当前任务栈顶的指针,每个任务可以有自己的栈,栈的容量可以每个任务可以有自己的栈,栈的容量可以是任意的;是任意的;lOSTCBStkBottomOSTCBStkBottom:指向任务栈底的指针;:指向任务栈底的指针;lOSTCBStkSizeOSTCBStkSize:栈的容量,用可容纳的指:栈的容量,用可容纳的指针数目而不是字节数(针数目而不是字节数(ByteByte)来表示。)来表示。2627链表指针链表指针l所有的任务控制块分属于两条不同的链表,所
17、有的任务控制块分属于两条不同的链表,单向的单向的空闲链表空闲链表(头指针为(头指针为OSTCBFreeListOSTCBFreeList)和双向的)和双向的使用链表使用链表(头(头指针为指针为OSTCBListOSTCBList););lOSTCBNextOSTCBNext、OSTCBPrevOSTCBPrev:用于将任务控制用于将任务控制块插入到空闲链表或使用链表中。每个任块插入到空闲链表或使用链表中。每个任务的任务控制块在任务创建的时候被链接务的任务控制块在任务创建的时候被链接到使用链表中,在任务删除的时候从链表到使用链表中,在任务删除的时候从链表中被删除。双向连接的链表使得任一成员中被删
18、除。双向连接的链表使得任一成员都能快速插入或删除。都能快速插入或删除。28空闲空闲TCBTCB链表链表l所有的任务控制块都被放置在任务控制块列表数组所有的任务控制块都被放置在任务控制块列表数组OSTCBTbl中,系统初始化时,所有中,系统初始化时,所有TCBTCB被链接成空闲的单向链表,被链接成空闲的单向链表,头指针为头指针为OSTCBFreeListOSTCBFreeList。当创建一个任务后,就把。当创建一个任务后,就把OSTCBFreeListOSTCBFreeList所指向的所指向的TCBTCB赋给了该任务,并将它加入到赋给了该任务,并将它加入到使用链表中,然后把使用链表中,然后把OS
19、TCBFreeListOSTCBFreeList指向空闲链表中的下一指向空闲链表中的下一个结点。个结点。29系统初始化后系统初始化后指针数组,指向相应指针数组,指向相应TCB30任务的状态休眠任务的状态休眠l休眠状态休眠状态(Dormant):任务存在于内存:任务存在于内存空间中,但内核不可见;空间中,但内核不可见;l可以通过以下函数通知内核,使之变为就可以通过以下函数通知内核,使之变为就绪状态:绪状态:OSTaskCreate()或或OSTaskCreateExt()l可以通过以下函数返回到休眠状态:可以通过以下函数返回到休眠状态:OSTaskDel()31任务的状态就绪任务的状态就绪l就绪
20、状态就绪状态(Ready):万事具备,只欠):万事具备,只欠CPU;l在所有的就绪任务当中,具有最高优先级在所有的就绪任务当中,具有最高优先级的任务被选中去运行;的任务被选中去运行;l如果任务在运行的时候被抢占了如果任务在运行的时候被抢占了CPU,则,则又回到就绪状态。又回到就绪状态。32任务的状态运行任务的状态运行l运行状态运行状态(Running):任务在):任务在CPU上运上运行;行;l当一个任务在运行时,如果没有关闭中断,当一个任务在运行时,如果没有关闭中断,则有可能被中断所打断;则有可能被中断所打断;l当一个任务在运行时,可能因为各种原因进当一个任务在运行时,可能因为各种原因进入阻塞
21、状态。入阻塞状态。OSMBoxPend(),OSQPend(),OSSemPend()OSTaskSuspend(),OSTimeDly()33任务的状态任务的状态ISRISRl中断服务状态中断服务状态(ISR):该任务原来在):该任务原来在CPU上运行,后来被中断所打断,由中断服务程上运行,后来被中断所打断,由中断服务程序序ISR接管了接管了CPU;l当中断服务程序运行完毕后,内核要判断是当中断服务程序运行完毕后,内核要判断是否有新的、更高优先级的任务就绪,如果有,否有新的、更高优先级的任务就绪,如果有,则原有的任务被抢占;如果没有,则原有的则原有的任务被抢占;如果没有,则原有的任务重新运行
22、。任务重新运行。34任务的状态阻塞任务的状态阻塞l阻塞阻塞/等待状态等待状态(Waiting):任务由于正在):任务由于正在等待某个事件(信号量、邮箱或队列)而被等待某个事件(信号量、邮箱或队列)而被挂起;挂起;l当任务等待的事件发生时,回到就绪状态。当任务等待的事件发生时,回到就绪状态。OSMBoxpost(),OSQPost(),OSSemPost(),OSTaskResume(),OSTimeDlyResume()或或OSTimeTick()35状态的转换状态的转换删除任务删除任务 36任务就绪表任务就绪表l每个任务的就绪态标志放入在就绪表中,每个任务的就绪态标志放入在就绪表中,就绪表中
23、有两个变量就绪表中有两个变量OSRdyGrpOSRdyGrp和和OSRdyTblOSRdyTbl。l在在OSRdyGrpOSRdyGrp中,任务按优先级分组,中,任务按优先级分组,8 8个任个任务为一组。务为一组。OSRdyGrpOSRdyGrp中的每一位表示中的每一位表示8 8组任组任务中每一组中是否有进入就绪态的任务。务中每一组中是否有进入就绪态的任务。任务进入就绪态时,就绪表任务进入就绪态时,就绪表OSRdyTblOSRdyTbl中中的相应元素的相应位也置位。的相应元素的相应位也置位。37任务就绪表任务就绪表OSRdyGrp OSRdyGrp 1207 6 5 4 300X XX XX
24、XY YY Y Y Y任务优先级任务优先级 20176543108915 14 13 12 1118161723 22 21 20 1926242531 30 29 28 2734323339 38 37 36 3542404147 46 45 44 4350484955 54 53 52 5158565763 62 61 60 5901234567OSRdyTbl8OSRdyTbl8X XY Y优先级最低任务优先级最低任务 (空闲任务)(空闲任务)优先级最高任务优先级最高任务 任务优先级号任务优先级号 对于整数对于整数OSRdyTbli(0 i 7),若它的某一位),若它的某一位为为1,则,
25、则OSRdyGrp的第的第i位为位为1。任务的优先级由任务的优先级由X和和Y确定确定38根据优先级确定就绪表根据优先级确定就绪表(1)(1)n假假 设设 优优 先先 级级 为为 1212的的 任任 务务 进进 入入 就就 绪绪 状状 态态,12=1100b,12=1100b,则则 OSRdyTbl1OSRdyTbl1的的 第第 4 4位位 置置 1 1,且且OSRdyGrpOSRdyGrp的第的第1 1位置位置1 1,相应的数学表达式为,相应的数学表达式为:OSRdyGrpOSRdyGrp|=0 x02|=0 x02;OSRdyTbl1|=0 x10;OSRdyTbl1|=0 x10;n而而优
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 嵌入式 实时 操作系统 分析 PPT 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内