嵌入式实时操作系统uC-OS-II-PPT

上传人:豆浆 文档编号:48418330 上传时间:2018-07-15 格式:PPT 页数:91 大小:8.81MB
返回 下载 相关 举报
嵌入式实时操作系统uC-OS-II-PPT_第1页
第1页 / 共91页
嵌入式实时操作系统uC-OS-II-PPT_第2页
第2页 / 共91页
嵌入式实时操作系统uC-OS-II-PPT_第3页
第3页 / 共91页
嵌入式实时操作系统uC-OS-II-PPT_第4页
第4页 / 共91页
嵌入式实时操作系统uC-OS-II-PPT_第5页
第5页 / 共91页
点击查看更多>>
资源描述

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

1、嵌入式实时操作系统C/OS-II讲座北 华 大 学任 哲2006 广州为什么要学习C/OS-II一.凡从事嵌入式系统开发工作的人,必须 对嵌入式操作系统有足够的了解。二.对于初学者,从C/OS-II开始是个明智的选择。1. C/OS-II麻雀虽小,却五脏基本全(它是个微 内核)。2.可以学习实时系统的一些编程技巧。3.可以把在学校中学到的操作系统抽象概念具体 化。4.具有很强的实用性。5.学习数据结构应用的好例子。讲座的主要内容一.计算机操作系统的基本概念 二.操作系统中常用的数据结构 三.并发操作系统的概念 四.任务的要素 五. C/OS-II的任务管理(任务调度) 六. C/OS-II的中

2、断和时钟 七. C/OS-II的任务的同步与通信 八. C/OS-II的存储管理 九.硬件抽象层和测试台操作系统是一种为应用 程序提供服务的系统软 件,是一个完整计算机 系统的有机组成部分。从层次来看,操作系统 位于计算机硬件之上, 应用软件之下。所以也 把它叫做应用软件的运 行平台。什么是计算机操作系统(Operating System,OS)它在计算机应用程序与计算 机硬件系统之间,屏蔽了计 算机硬件工作的一些细节, 并对系统中的资源进行有效 的管理。通过提供函数(应用程序接 口(API),从而使应用程 序的设计人员得以在一个友 好的平台上进行应用程序的 设计和开发,大大地提高了 应用程序

3、的开发效率。 计算机操作系统的作用从用户的角度来看 ,它就是一大堆函 数(API和系统函数 ),用户可以调用 (普通调用或系统 调用)它们来对系 统资源进行操作。计算机硬件用汇编语言编写 的 硬件抽象层高级语言的接口应用软件操作系统操作系统计算机操作系统的功能处理器的管理存储管理网络和通信的 管理I/O设备管理文件管理任务管理任务表存储 分配表文件 目录设备表总之,需要一大堆表 操作系统中经常使用 的数据结构(数组)数组1。同一数据类型数据 的集合; 2。占用连续内存空间 ; 3。其中的所有元素名 称都相同,但每个元 素都有一个编号; 4。元素名去掉编号( 下标),得到的是数 组名,数组名是个

4、指 针。int a10a0a1 a2 a3a9aa+1使用上的特点 :1。分类存放 ; 2。检索速度 快且恒定; 3。缺点:占 用连续空间大a+2 a+3a+9 应用:记录同类事物的表、取口纸操作系统中经常使用 的数据结构(位图)位图是数组的一种 特殊应用a10 (可以记录80个事物的状态)a0 a1 a2 a3a9a a+1a+2 a+3a+9应用:登记表1/0D7 D6 D5 D4 D3 D2 D1 D0操作系统中经常使用 的数据结构(结构)1。不同数 据类型数 据的集合 ; 2。占用连 续内存空 间;struct Studentint age;char*name;char sex; ;使

5、用上的特点 :1。不分类存 放,但用来描 述同一事物; 2。检索速度 快且恒定;应用:通讯录中的一条记录、 工具箱、厨房等等next next 两个元素的链表操作系统中经常使用 的数据结构(链表)struct StudentStudent*nextint age;char*name;char sex; ;1。同数据类型数据的集合; 2。不占用连续内存空间。使用上的特点:1。分类存放,但空间上不连续(不 需要大量的连续存储空间); 2。检索速度慢,且耗费的时间不固 定;应用:存放大量的较大 的表,类似档案柜操作系统中经常使用 的数据结构(队列) 按照先进先出 的规则组织的数据结构 可以用数组也可

6、以用链 表来实现主要用于对象的排队操作系统中经常使用 的数据结构(堆栈)按照先进后出 规则组织的数据结构 主要用数组来实现主要用于 程序模块的嵌套运行什么是多任务系统简单地说,就是能用一个处理器 并发(注意,不是同时! ) 地运行多个程序的计算机管理系统。并发:由同一个处理器轮换地 运行多个程序。或者说是由多个 程序轮班地占用处理器这个资源。 且在占用这个资源期间,并不一 定能够把程序运行完毕。并发过程 示意图处理器如何进行程序的 切换?程序的切换(两句话)处理器是个傻瓜,PC让 它干啥,它就干啥。PC是个指路器,它指向哪 儿,处理器就去哪儿。从此可以知道,哪个程 序占有了PC,哪个程序 就占

7、有了处理器。哪个人占有了一个姑娘 的芳心,哪个人就= PC深刻地理解PC是理解系统 进行程序切换动作的关键。所谓切换就是: PC 目标地址如何操作PC指令: 不同的计算机类型的指 令是不同的。数据传送指令子程序返回指令(由堆 栈弹出)中断服务程序返回指令 (由堆栈弹出)小结系统是通过把待运行程 序的地址赋予程序计数 器PC来实现程序的切换 的。任务代码任务堆栈内存处理器PCSP任务运行时与处理器之间的关系处理器通过两个指针寄存 器(PC和SP)来与任务 代码和任务堆栈建立联系 并运行它寄存器组程序运行环境运行环境包括了两部分 :处理器中的运行环境 和内存中的运行环境任务代码任务堆栈内存处理器P

8、CSP多任务时的问题任务代码任务堆栈内存任务代码任务堆栈内存?当有多个任务时,处理 器中的运行环境应该怎 么办?寄存器组程序运行环境程序虚拟 处理器PCSP虚拟 处理器PCSP虚拟 处理器PCSP虚拟 处理器PCSP调度器多任务时任务与处理器 之间关系的处理程序处理器PCSP在内存中为每个任 务创建一个虚拟的 处理器(处理器部 分的运行环境由操作系统的调度 器按某种规则来进 行这两个复制工作复制当需要运行某个任务时 就把该任务的虚拟处理 器复制到实际处理器中复制当需要中止当前任 务时,则把任务对 应的虚拟处理器复 制到内存复制再把另一个需要运行的任 务的虚拟处理器复制到实 际处理器中寄存器组寄

9、存器组 也就是说,任务的切换是 任务运行环境的切换虚拟处理器虚拟处理器应该存储的主要信息: 1。程序的断点地址(PC) 2。任务堆栈指针(SP) 3。程序状态字寄存器(PSW) 4。通用寄存器内容 5。函数调用信息(已存在于堆栈)另外再用一个数据结构保存任务堆栈 指针(SP),这个数据结构叫做任务 控制块,它除了保存任务堆栈指针之 外还要负责保存任务其他信息。这些内容通常保 存在任务堆栈中 ,这些内容也常 叫做任务的上下 文。任务控制块是由操 作系统另行构造的 一个数据结构,每 个任务都有一个。任务控制块结构的主要成员typedef struct os_tcb OS_STK *OSTCBStk

10、Ptr; /指向任务堆栈栈顶的指针INT8U OSTCBStat;/任务的当前状态标志INT8U OSTCBPrio; /任务的优先级别 OS_TCB; 任务代码任务堆栈内存任务控制块其实,程序切换的关键是 把程序的私有堆栈指针赋予处理器的堆栈指针SP实质上系统是通过SP的切换 来实现程序的切换的。要建立一个概念:具有 控制块的程序才是一个 可以被系统所运行的任务。 程序代码、私有堆栈、任 务控制块是任务的三要件。 任务控制块提供了运行环 境的存储位置。任务的基本概念 把一个大型任务分解成多个小任 务,然后在计算机中通过运行这 些小任务,最终达到完成大任务 的目的。 在C/OS-II中,与上述

11、那些小任 务对应的程序实体就叫做“任务 ”(实质上是一个线程), C/OS-II就是一个能对这些小任 务的运行进行管理和调度的多任 务操作系统。 从应用程序设计的角度来看 ,C/OS-II的任务就是一个 用户编写的C函数和与之相 关联的一些数据结构而构成 的一个实体。 任务代码任务堆栈内存在内存中应该 存有任务的代 码和与该任务 配套的堆栈小结一个完整的任务应该有如下三部分: 任务代码(程序) 任务的私有堆栈(用以保护运行环境) 任务控制块(提供私有堆栈也是虚拟处 理器的位置)这些都是任务方应该提供的基本信息。任务切换过程获得待运行任务 的任务控制块恢复待运行任务 的运行环境处理器的PC=任

12、务堆栈中的断点 地址处理器的SP=任 务块中保存的SP如何获得待运行 任务的任务控制 块?C/OS-II中 的任务管理 任务的状态及其转换正在运行的任务,需要 等待一段时间或需要等 待一个事件发生再运行 时,该任务就会把CPU 的使用权让给别的任务 而使任务进入等待状态 。 任务在没有被配备 任务控制块或被剥 夺了任务控制块时 的状态叫做任务的睡眠状态 系统为任务配备 了任务控制块且 在任务就绪表中 进行了就绪登记 ,这时任务的状 态叫做就绪状态 。 处于就绪状态的 任务如果经调度 器判断获得了 CPU的使用权, 则任务就进入运 行状态 一个正在运行的 任务一旦响应中 断申请就会中止 运行而去

13、执行中 断服务程序,这 时任务的状态叫 做中断服务状态 前面谈到,一个任务的任务控制块 的主要作用就是保存该任务的虚拟 处理器的堆栈指针寄存器SP。 其实,随着任务管理工作的复杂性 的提高,它还应该保存一些其他信 息。任务控制块任务在系统中的身份证由于系统存在着多个任务,于是 系统如何来识别并管理一个任务就是 一个需要解决的问题。识别一个任务 的最直接的办法是为每一个任务起一 个名称。由于C/OS-II中的任务都有一个 惟一的优先级别,因此C/OS-II是用 任务的优先级来作为任务的标识的。所以,任务控制块还要来保存该 任务的优先级别。另外,前面也谈到,一个任务在 不同的时刻还处于不同的状态,

14、 显然,记录了任务状态的数据也 应该保存到任务控制块中。基于上述原因,系统必须为每个任务创建 一个保存与该任务有关的相关信息的数据 结构,这个数据结构就叫做该任务的任务 控制块(TCB)。任务控制块结构的主要成员typedef struct os_tcb OS_STK *OSTCBStkPtr; /指向任务堆栈栈顶的指针INT8U OSTCBStat;/任务的当前状态标志INT8U OSTCBPrio; /任务的优先级别 OS_TCB; 任务控制块是不是像 我们人在一个国家中 的身份证?(其实, 系统中的所有资源 都应该有身份证。)任务在内存中的结构用户任务代码的 一般结构 void MyTa

15、sk(void *pdata) for (;) 可以被中断的用户代码;OS_ENTER_CRITICAL( );/进入临界段(关中断)不可以被中断的用户代码;OS_EXIT_CRITICAL( ); /退出临界段(开中断)可以被中断的用户代码; 临界段无限循 环于是可以这样说,C/OS-II 任务的代码结构是一个可以 带有临界段的无限循环。 系统提供的空闲任务 在多任务系统运行时,系统经 常会在某个时间内无用户任务 可运行而处于所谓的空闲状态 ,为了使CPU在没有用户任务可 执行的时候有事可做,C/OS- II提供了一个叫做空闲任务 OSTaskIdle( )的系统任务 void OSTask

16、Idle(void* pdata) # if OS_CRITICAL_METHOD = = 3 OS_CPU_SR cpu_sr; #endifpdata = pdata;/防止某些编译器报错 for(;) OS_ENTER_CRITICAL( );/关闭中断 OSdleCtr+;/计数 OS_EXIT_CRITICAL( );/开放中断 空闲任务只是做了一 个计数工作注意!空闲任务中没 有调用任务延时函数C/OS-II规定,一个 用户应用程序必须 使用这个空闲任务 ,而且这个任务是 不能用软件来删除 的 系统提供的另一个任务统计任务C/OS-II提供的另一个系统任务是统 计任务OSTaskStat( )。这个统计任务 每秒计算一次CPU在单位时间内被使用 的时间,并把计算结果以

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

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

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