嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch5-μCOS-II嵌入式操作系统

上传人:E**** 文档编号:89502208 上传时间:2019-05-26 格式:PPT 页数:195 大小:7.09MB
返回 下载 相关 举报
嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch5-μCOS-II嵌入式操作系统_第1页
第1页 / 共195页
嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch5-μCOS-II嵌入式操作系统_第2页
第2页 / 共195页
嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch5-μCOS-II嵌入式操作系统_第3页
第3页 / 共195页
嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch5-μCOS-II嵌入式操作系统_第4页
第4页 / 共195页
嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch5-μCOS-II嵌入式操作系统_第5页
第5页 / 共195页
点击查看更多>>
资源描述

《嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch5-μCOS-II嵌入式操作系统》由会员分享,可在线阅读,更多相关《嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch5-μCOS-II嵌入式操作系统(195页珍藏版)》请在金锄头文库上搜索。

1、嵌入式系统原理与开发,V1.0,C/OS-II嵌入式操作系统 本课程的主要内容,主要内容,C/OS-II嵌入式操作系统 6.1 C/OS-II嵌入式操作系统的基本概念 6.2 C/OS-II中的任务 6.3 C/OS-II中的中断 6.4 C/OS-II中的时钟 6.5 C/OS-II中的任务的同步与通信 6.6 C/OS-II中的信号量 6.7 C/OS-II中的互斥信号量 6.8 C/OS-II中的消息邮箱 6.9 C/OS-II中的消息队列 6.10 C/OS-II中的信号量集 6.11 C/OS-II中的内存管理 6.12 动态内存的管理,6.1 C/OS-II嵌入式操作系统基本概念,

2、6.1 C/OS-II嵌入式操作系统的基本概念 C/OS-II是由Jean J.Labrosse于1992年编写的一个嵌入式多任务实时操作系统。 最早这个系统叫做C/OS,后来经过近10年的应用和修改,在1999年Jean J.Labrosse推出了C/OS-II,并在2000年得到了美国联邦航空管理局对用于商用飞机的、符合RTCA DO-178B标准的认证,从而证明C/OS-II具有足够的稳定性和安全性。 目前,最新版本为C/OS-III。,6.1 C/OS-II嵌入式操作系统基本概念,6.1 C/OS-II嵌入式操作系统的基本概念 1. C/OS-II的特点 C/OS-II是用C语言和汇编

3、语言编写的。用户只要做很少工作就可把它移植到各类8位、16位和32位嵌入式处理器上。 C/OS-II最多可以管理64个任务。 C/OS-II是可剥夺型内核。 由于C/OS-II的构思巧妙、结构简洁精练、可读性极强,同时又具备了实时操作系统的全部功能,并且源码开放。 虽然C/OS-II只是一个内核,但非常适合初次接触嵌入式实时操作系统的学生、开发人员和爱好者学习,并且通过适当地扩展之后,还可应用到实际系统中去。 C/OS-II已经有ARM7TDMI、ARM9等各种ARM CPU移植,支持包含Atmel、Hynix、Intel、Motorola、Philips、Samsung、Sharp等公司的A

4、RM核的CPU。,6.1 C/OS-II嵌入式操作系统基本概念,6.1 C/OS-II嵌入式操作系统的基本概念 1. C/OS-II的特点 C/OS-II的移植也相当容易,与CPU相关的代码包装在三个文件中:os_cpu.h、os_cpu_a.asm和os_cpu_c.c。 C/OS-II内核含有60多个系统调用,覆盖任务、定时器、信号量、事件标志、邮箱、队列和内存管理,已经包含了传统嵌入式操作系统内核(如PSOS,VRTX)的功能,还支持互斥型信号量,这是如VxWorks和VRTXsa才有的技术。 C/OS-II没有用户态和内核态,任务(线程)或中断和任务切换的响应可以很快,主要是和ARM

5、CPU相关的。 C/OS-II的2.7x之后的版本还增加了算法以避免在移植中修改堆栈指针,这样可以保证C/OS-II在不同的CPU上运行更稳定,移植更方便。,6.1 C/OS-II嵌入式操作系统基本概念,6.1 C/OS-II嵌入式操作系统的基本概念 1. C/OS-II的特点 C/OS-II目前除了内核外,还有商业化文件系统C/FS,图形系统C/GUI以及任务调试工具C/KA和C/View,但是C/OS-II自己目前还没有TCP/IP协议系统。 C/OS-II是一个非常容易学习,结构简单,功能完备和实时性很强的嵌入式操作系统内核,适合于各种嵌入式应用以及大专院校教学和科研。 最后需要说明,C

6、/OS-II不是免费软件,任何人学习使用C/OS-II需要购买嵌入式实时操作系统C/OS-II一书,使用C/OS-II的产品需要购买产品生产授权,购买了此授权的还可以得到开发期间的技术支持和升级服务。,6.1 C/OS-II嵌入式操作系统基本概念,6.1 C/OS-II嵌入式操作系统的基本概念 2. C/OS-II的移植 移植C/OS-II对目标处理器有一定要求,整个嵌入式系统分为两大层:硬件层和软件层。 软件层主要分为四个部分:实时操作系统内核,与处理器相关部分,与应用相关部分,用户的应用系统。这里主要研究软件层的架构。C/OS-II的体系结构如图6. 1所示。,6.1 C/OS-II嵌入式

7、操作系统基本概念,6.1 C/OS-II嵌入式操作系统的基本概念 2. C/OS-II的移植 C/OS-II的体系结构如图6. 1所示。,6.1 C/OS-II嵌入式操作系统基本概念,6.1 C/OS-II嵌入式操作系统的基本概念 2. C/OS-II的移植 C/OS-II的文件说明 OS_CORE.C OS_FLAG.C OS_MBOX.C OS_MEM.C OS_MUTEX.C OS_Q.C OS_SEM.C OS_TASK.C OS_TIME.C C/OS-II.C C/OS-II.H OS_CFG.H INCLUDES.H,6.2 C/OS-II中的任务,6.2 C/OS-II中的任务

8、 C/OS-II操作系统内核的主要工作就是对任务进行管理和调度。弄清楚什么是任务、任务的结构和任务的管理方法,对于理解C/OS-II的体系结构无疑是极其重要的。,6.2 C/OS-II中的任务,6.2.1C/OS-II任务 在C/OS-II中,把完成特定功能的程序实体就叫做“任务“。C/OS-II就是一个能对这些任务的运行进行管理和调度的多任务操作系统内核。 从应用程序设计的角度来看,C/OS-II的任务就是一个线程,就是一个用来解决用户问题的C语言函数和与之相关联的一些数据结构而构成的一个实体。 从任务的类型来看,C/OS-II的任务有两种:用户任务和系统任务。由应用程序设计者编写的任务,叫

9、做用户任务;由系统提供的任务叫做系统任务。用户任务是为解决应用问题而编写的;系统任务是为应用程序来提供某种服务的。,6.2 C/OS-II中的任务,6.2.1C/OS-II任务 从任务的存储结构来看,C/OS-II的任务由如图6. 2所示的三个组成部分构成:任务程序代码、任务堆栈和任务控制块。其中,任务控制块用来保存任务属性;任务堆栈用来保存任务工作环境;任务程序代码是任务的执行部分。 为了管理上的方便,C/OS-II把每一个任务都作为一个节点,然后把它们链接成如图图6. 3所示的一个任务链表。目前,C/OS-II最多可以对64个任务(包括用户任务和系统任务)进行管理。,6.2 C/OS-II

10、中的任务,6.2.1C/OS-II任务 C/OS-II的任务结构如图6. 2所示,6.2 C/OS-II中的任务,6.2.1C/OS-II任务 C/OS-II任务管理链表如图6. 3所示,6.2 C/OS-II中的任务,6.2.1C/OS-II任务 1. 任务的状态 在单处理器的嵌入式系统中,某一个具体时刻只能允许一个任务占用CPU。根据任务是否占用CPU,及是否处于被中断、等待等情况,任务在C/OS-II中可能处于表2-1所列的5种状态之一。,6.2 C/OS-II中的任务,6.2.1C/OS-II任务 1. 任务的状态 任务在不同状态之间的转换和相关的函数见图6. 4。,6.2 C/OS-

11、II中的任务,6.2.1C/OS-II任务 2. 用户任务 任务的执行代码通常是一个无限循环结构,并且在这个循环中可以响应中断,这种结构也叫做超循环结构。 实例6.1:一个具有超循环结构的任务的示意性代码。一个用C语言编写的任务。,6.2 C/OS-II中的任务,6.2.1C/OS-II任务 2. 用户任务 从程序设计的角度来看,一个C/OS-II任务的代码就是一个C语言函数。为了传递各种不同类型的数据甚至是函数,任务的参数是一个void类型的指针。 为了有效地对中断进行控制,在任务的代码里可使用C/OS-II定义的进入临界段宏OS_ENTER-CRITICAL()和退出临界段宏OS_EXIT

12、-CRITICAL()来控制任务何时响应中断,何时屏蔽中断。 在运行这两个宏之间的代码时是不会响应中断的,这种受保护的代码段叫做临界段。 在具体应用中可以,根据实际需要在一个任务中使用这对宏设置多个临界段。因此可以说,C/OS-II任务的代码结构是一个带有临界段的无限循环。,6.2 C/OS-II中的任务,6.2.1C/OS-II任务 3. 系统任务 C/OS-II预定义了两个为应用程序服务的系统任务:空闲任务和统计任务。其中空闲任务是每个应用程序必须使用的,而统计任务则是应用程序可以根据实际需要来选择使用的。 (1)空闲任务 空闲状态:在多任务系统运行时,系统经常会在某个时间内无用户任务可运

13、行而处于所谓的空闲状态。 为了使CPU在没有用户任务可执行时有事可做,C/OS-II提供了一个叫做空闲任务OSTaskIdle()的系统任务。 空闲任务几乎不做什么事情,只是对系统定义的一个空闲任务运行次数计数器OSIdleCtr进行加1操作。当然,如果用户认为有必要,那么也可在空闲任务中编写一些做用户工作的代码。 C/OS-II规定,一个用户应用程序必须使用这个空闲任务,而且这个任务是不能用软件来删除的。,6.2 C/OS-II中的任务,6.2.1C/OS-II任务 3. 系统任务 (2)统计任务 C/OS-II提供的另一个系统任务是统计任务OSTaskstat()。 这个统计任务每秒计算一

14、次CPU在单位时间内被使用的时间,并把计算结果以百分比的形式存放在变量OSCPUsage中,以便应用程序通过访问它来了解CPU的利用率,所以该系统任务OSTaskstat()叫做统计任务. 用户应用程序是否使用统计任务,可以根据应用程序的实际需要来进行选择。 如果应用程序要使用这个统计任务,则必须把定义在系统头文件OS_CFG.H中的系统配置常数OS_TASK_STAT_EN设置为1,并且必须在创建统计任务之前调用函数OSStatInit()对统计任务进行初始化。,6.2 C/OS-II中的任务,6.2.1C/OS-II任务 4. 任务的优先级 C/OS-II的每个任务都必须具有一个惟一的优先

15、级别。C/OS-II把任务的优先权分为64个优先级别,每一个级别都用一个数字来表示。数字0表示任务的优先级别最高;数字越大则表示任务的优先级别越低。 通常,一个应用程序的任务数小于64。为了节省内存,用户可以根据应用程序的需要,在文件OS_CFG.H中通过给表示最低优先级别的常数OS_LOWEST_PRIO赋值的方法,来说明应用程序中任务优先级别的数目。 该常数一旦被定义,就意味着系统中可供使用的优先级别为0、1、2、OS_LOWEST_PRIO,共OS_LOWEST_PRIO+1个。同时也限制了应用程序中任务的总数最多不能超过OS_LOWEST_PRIO十1个。,6.2 C/OS-II中的任

16、务,6.2.1C/OS-II任务 4. 任务的优先级 系统总是把最低优先级别OS_LOWEST_PRIO自动赋给空闲任务。如果应用程序中还使用了统计任务,则系统会把优先级别OS_LOWEST_PRIO-1自动赋给统计任务,因此用户任务可使用的优先级别是0、1、OS_LOWEST_PRIO_2,共OS_LOWEST_PRIO_1个。,6.2 C/OS-II中的任务,6.2.1C/OS-II任务 4. 任务的优先级 实例6. 2:如果希望应用程序中任务的优先级别为28个,则表示最低优先级别的常数OS_LOWEST_PRIO值应该是多少?如果应用程序中使用了系统提供的空闲任务和统计任务,则该应用程序最多可以安排多少个任务? 解:表示最低优先级别的常数OS_LOWEST_PRIO值应该为27,优先级别分别为0、1、2、3、27;由于系统空闲任务占用了优

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

当前位置:首页 > 高等教育 > 大学课件

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