嵌入式实时操作系统(uCOS)分析

上传人:ji****72 文档编号:48609712 上传时间:2018-07-18 格式:PPT 页数:97 大小:2.42MB
返回 下载 相关 举报
嵌入式实时操作系统(uCOS)分析_第1页
第1页 / 共97页
嵌入式实时操作系统(uCOS)分析_第2页
第2页 / 共97页
嵌入式实时操作系统(uCOS)分析_第3页
第3页 / 共97页
嵌入式实时操作系统(uCOS)分析_第4页
第4页 / 共97页
嵌入式实时操作系统(uCOS)分析_第5页
第5页 / 共97页
点击查看更多>>
资源描述

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

1、1嵌入式系统设计与实例开发C/OS-实时操作系统C/OS-分析2本节提要1 13 32 25 54 46 6C/OS-简介C/OS-内核结构C/OS-任务通信与同步C/OS-任务管理C/OS-时间管理C/OS-移植3RTOS是32位的嵌入式CPU的软件基础lRTOS内核 提供CPU的管理l硬件初时化,MMU,定时器,中断lRTOS 内核提供任务,内存管理lRTOS提供设备管理,文件和网络的支持lRTOS提供C/C+,JAVA,图形模块等编程接口4C/OS简介1、C/OSMicro Controller O S,微控制器操 作系统2、 C/OS简介l美国人Jean Labrosse 1992年完

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

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

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

5、/OS-II内部的工作原理l随书的CD中包含了源代码n工业界最清晰的源代码l除英文版外,有中文和韩文版ChineseKoreanEnglishISBN 1-57820-103-9 美国CMP BOOK ISBN 7-81077-290-2 北京航空航天大学出版社ISBN 89-951540-5-58C/OS-II的各种商业应用l全世界有数百种产品在应用:lAvionicslMedicallCell phoneslRouters and switcheslHigh-end audio equipmentlWashing machines and dryerslUPS (Uninterruptib

6、le Power Supplies)lIndustrial controllerslGPS Navigation SystemslMicrowave RadioslInstrumentationlPoint-of-sale terminalsl更多9C/OS-II提供的系统服务l信号量l带互斥机制的信号量n减少优先级倒置的问题l事件标志l消息信箱l消息队列l内存管理l时钟管理l任务管理10C/GUI and C/FSlC/GUIl嵌入式的用户界面l用ANSI C书写l支持任何8, 16, 32-bits CPUl彩色,灰、度,等级或黑白显示l代码尺寸小lC/FSl嵌入式的文件系统Written

7、 in ANSI Cl用ANSI C书写l支持任何8, 16, 32-bits CPUl支持SMC, MMC, SD, CF, IDE, Flash, RAM其他介质11本节提要1 13 32 25 54 46 6C/OS-简介C/OS-内核结构C/OS-任务通信与同步C/OS-任务管理C/OS-时间管理C/OS-移植12C/OS-II的文件结构13l内核结构l任务管理l时间管理l任务之间通信与同步lC/OS的移植C/OS-II的内核结构14任务task典型的任务一个无限循环。void mytask(void *pdata)for (;) do something;waiting;do som

8、ething;lC/OS II 2.5版本支持64个任务,每个任务一个特定的优先级。优先级 越高,数字越小。l系统占用了8个任务,保留优先级为0、1、2、3、OS_LOWEST_PRIO-3、 OS_LOWEST_PRIO-2、 OS_LOWEST_PRIO-1、 OS_LOWEST_PRIO-0。15任务状态16任务控制块(TCB)l任务控制块 OS_TCB是一个数据结构,保存该任务的 相关参数,包括任务堆栈指针,状态,优先级,任务表位 置,任务链表指针等。l所有的任务控制块分为两条链表,空闲链表和使用链 表。17C/OS-II任务控制块. typedef struct os_tcb OS_

9、STK *OSTCBStkPtr; #if OS_TASK_CREATE_EXT_EN0void *OSTCBExtPtr;OS_STK *OSTCBStkBottom;INT32U OSTCBStkSize;INT16U OSTCBOpt;INT16U OSTCBId; #endifstruct os_tcb *OSTCBNext;struct os_tcb *OSTCBPrev; #if (OS_Q_EN #endif18#if (OS_Q_EN #endifINT16U OSTCBDly;INT8U OSTCBStat;INT8U OSTCBPrio;INT8U OSTCBX;INT8U

10、 OSTCBY;INT8U OSTCBBitX;INT8U OSTCBBitY; #if OS_TASK_DEL_ENBOOLEAN OSTCBDelReq; #endif OS_TCB;19任务控制块OS_TCB中几个成员的算法OSTCBY= priority 3;OSTCBBi tY= OSMapTblpriority 3;OSTCBX= priority OSTCBBi tX= OSMapTblpriority 20空任务列表所有的任务控制块都被放置在任务控制块列表数组OSTCBTbl中 ,系统初始化时,所有任务控制块被链接成空任务控制块的单向链 表,任务建立后,空任务控制块指针OSTC

11、BFreeList指向的任务控 制块就赋给了该任务,然后OSTCBFreeList的值调整为指向链表中 的下一个空任务控制块。21任务控制块初始化函数INT8U OS_TCBInit( INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id, INT32U stk_size, void *pext, INT16U opt ) 22任务级的任务调度-OSSchedlC/OS是占先式实时多任务内核,优先级最高的任务一旦准 备就绪,则拥有CPU的所有权开始投入运行。lC/OS中不支持时间片轮转法,每个任务的优先级要求不一 样且是唯一的,所以任务调度的工作就

12、是:查找准备就绪的最高 优先级的任务并进行上下文切换。lC/OS任务调度所花的时间为常数,与应用程序中建立的任 务数无关。23根据就绪表确定最高优先级两个关键:l优先级数分解为高三位和低三位分别确定;l高优先级有着小的优先级号 ;24根据优先级找到任务在就绪任务表中的位置每个就绪的任务都放入就绪表中(ready list)中,就绪表有两个变 量:OSRdyGrp、OSRdyTblOSRdyGrp1207 6 5 4 300XXXYY Y任务优先级20176543 108915 14 13 12 11 18161723 22 21 20 19 26242531 30 29 28 27 34323

13、339 38 37 36 35 42404147 46 45 44 43 50484955 54 53 52 51 58565763 62 61 60 590 1 2 3 4 5 6 7OSRdyTbl7XY优先级最低任务 (空闲任务)优先级最高任务任务优先级号25根据优先级确定就绪表(1)n假设优先级为12的任务进入就绪状态,12=1100b,则 OSRdyTbl1的第4位置1,且OSRdyGrp的第1位置1,相应的数学表 达式为:OSRdyGrp |=0x02;OSRdyTbl1 |=0x10;n而优先级为21的任务就绪21=10 101b,则OSRdyTbl2的第 5位置1,且OSRdy

14、Grp的第2位置1,相应的数学表达式为:OSRdyGrp |=0x04;OSRdyTbl2 |=0x20;26根据优先级确定就绪表(2)l从上面的计算我们可以得到:若OSRdyGrp及OSRdyBbl的第 n位置1,则应该把OSRdyGrp及OSRdyBbl的值与2n 相或。uC/OS 中,把2n的n=0-7的8个值先计算好存在数组OSMapTbl7中,也就 是:OSMapTbl0 =20=0x01(0000 0001)OSMapTbl1 =21=0x02(0000 0010)OSMapTbl7 =27=0x80(1000 0000)27使任务进入就绪态n如果prio是任务是优先级,也是任务的

15、识别号,则将任务放入 就绪表,即使任务进入就绪态的方法是:OSRdyGrp |=OSMapTblprio3;OSRdyTblprio3 |=OSMapTblprio n假设优先级为121100bOSRdyGrp |=0x02;OSRdyTbl1 |=0x10;28使任务脱离就绪态n将任务就绪表OSRdyTblprio3相应元素的相应位清零,而且 当OSRdyTblprio3中的所有位都为零时,即全组任务中没有一个 进入就绪态时,OSRdyGrp的相应位才为零。If(OSRdyTblprio329根据就绪表确定最高优先级l通过OSRdyGrp值确定高3位,假设为0x24=100 100b, - 对应OSRdyTbl2 和OSRdyTbl5,高优先级为2l通过OSRdyTbl2的值来确定低3位,假设为0x12=010 010b ,-第2个和第5个任务,取 高优先级为2,则最高优先级的任务号为17 OSRdyGrp0100 0 1 0 00001000 1任务优先级20176543 10891

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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