RTOSuCOSII原理及应用

上传人:我*** 文档编号:134467620 上传时间:2020-06-05 格式:PPT 页数:113 大小:1.49MB
返回 下载 相关 举报
RTOSuCOSII原理及应用_第1页
第1页 / 共113页
RTOSuCOSII原理及应用_第2页
第2页 / 共113页
RTOSuCOSII原理及应用_第3页
第3页 / 共113页
RTOSuCOSII原理及应用_第4页
第4页 / 共113页
RTOSuCOSII原理及应用_第5页
第5页 / 共113页
点击查看更多>>
资源描述

《RTOSuCOSII原理及应用》由会员分享,可在线阅读,更多相关《RTOSuCOSII原理及应用(113页珍藏版)》请在金锄头文库上搜索。

1、1 2020 6 5 嵌入式实时操作系统 C OS II 2020 6 5 西安邮电学院计算机系 2 第2章uC OS II中的任务 西安邮电学院计算机系 3 2020 6 5 第2章目录 1 任务的基本概念2 任务堆栈3 任务控制块及任务控制块链表4 任务就绪表及任务调度5 任务的创建6 任务的挂起和恢复7 其他任务管理函数8 uC OS II的初始化和任务的启动 西安邮电学院计算机系 4 2020 6 5 第2章补充 目录 1 任务的特性2 任务的划分目标3 任务的划分方法4 任务的可调度性分析5 任务的执行分类和优先级安排6 任务设计中的问题7 系统设计编码实现过程8 中断服务程序的设计

2、 西安邮电学院计算机系 5 2020 6 5 第2章目录 1 任务的基本概念2 任务堆栈3 任务控制块及任务控制块链表4 任务就绪表及任务调度5 任务的创建6 任务的挂起和恢复7 其他任务管理函数8 uC OS II的初始化和任务的启动 西安邮电学院计算机系 6 2020 6 5 2 1任务的基本概念 复杂问题 分而治之 的问题解题思路 针对目标系统拆分后的 小且易 的问题的具体处理方法编码和数据结构 任务 uC OS II的两种任务 系统任务 用户任务 任务的组成 任务控制块 uC OS II进行任务管理用的一个数据结构 任务代码 描述任务算法的程序编码 任务堆栈 任务的工作现场环境 西安邮

3、电学院计算机系 7 2020 6 5 2 1任务的基本概念 西安邮电学院计算机系 8 2020 6 5 2 1任务的基本概念 宏观 上的多任务并发 实际上是用单CPU进行多任务处理 微观 任何时刻 只能运行一个任务 存在CPU资源竞争 任务调度 任务现场 各个任务在多任务系统中也随着环境条件的情况而具有不同的状态 任务状态划分也是多任务操作系统的管理手段 西安邮电学院计算机系 9 2020 6 5 任务的状态及其转换 正在运行的任务 需要等待一段时间或需要等待一个事件发生再运行时 该任务就会把CPU的使用权让给别的任务而使任务进入等待状态 任务在没有被配备任务控制块或被剥夺了任务控制块时的状态

4、叫做任务的睡眠状态 系统为任务配备了任务控制块且在任务就绪表中进行了就绪登记 这时任务的状态叫做就绪状态 处于就绪状态的任务如果经调度器判断获得了CPU的使用权 则任务就进入运行状态 一个正在运行的任务一旦响应中断申请就会中止运行而去执行中断服务程序 这时任务的状态叫做中断服务状态 西安邮电学院计算机系 10 2020 6 5 用户任务代码的一般结构 voidMyTask void pdata 任务的初始化for 超循环构成任务体 可被中断的用户代码片断 OS ENTER CRITICAL 进入临界区 关中断 不可被中断的用户代码片断 OS EXIT CRITICAL 退出临界区 开中断 可被

5、中断的用户代码片断 西安邮电学院计算机系 11 2020 6 5 用户应用程序的一般结构 用户任务 代码形式上很像C函数 但他不是函数 任务 不能被主函数main 或其他函数调用 只能被主函数或已激活任务创建 任务的运行由操作系统调度管理 voidMyTask1 void pdata voidMyTask2 void pdata voidmain OSInit OSTaskCreate MyTask1 OSTaskCreate MyTask2 OSStart 西安邮电学院计算机系 12 2020 6 5 2 1任务的基本概念 在此我们学习了uC OS II的3个系统函数和2个宏 OSInit

6、初始化uC OS II环境 OSTaskCreate 创建任务系统函数 OSStart 启动uC OS II任务调度器 OS ENTER CRITICAL 进入临界区 宏 OS EXIT CRITICAL 退出临界区 宏 OSInit 函数原型 voidOSInit void OSStar 函数原型 voidOSStart void OSTaskCreate 函数原型 INT8UOSTaskCreate void task void pd 指向任务的指针void pdata 传递给任务的参数OS STK ptos 任务堆栈栈顶的指针INT8Uprio 任务的优先级别 西安邮电学院计算机系 13

7、 2020 6 5 OSTaskCreate 函数使用举例 定义任务task Avoidtask A void pdata 任务初始化部分while 1 任务功能代码 在系统 创建 任务task Avoidmain void OSInit 系统初始化部分 OSTaskCreate task A void 0 西安邮电学院计算机系 14 2020 6 5 2 1任务的基本概念 系统任务 空闲任务 OSTaskIdel 使用说明 1 uC OS II规定用户程序中必须使用OSTaskIdel 2 该任务不能用软件删除 3 该任务是uC OS II初始化时自动创建 其任务优先级固定为最低级 用户也可

8、修改该任务的业务 4 目的 使CPU在没有用户任务可执行时也有事可做 统计任务 OSTaskStat 使用说明 1 功能完成用户任务CPU使用率的统计 结果以百分比的形式存放在变量OSCPUsage中 2 该任务用户可选择使用 OS CFG H文件中的常数OS TASK STAT EN设置为1 使能该函数 3 用户在OS CFG H中使能该任务后 系统自动创建该任务 但在用户使用统计数据前必须调用系统函数OSStatInit 先进行初始化 4 该任务固定拥有次末任务优先级 西安邮电学院计算机系 15 2020 6 5 2 1任务的基本概念 任务的优先权和优先级别 uC OS II的每个任务都必

9、须有唯一的优先级 uC OS II最多可以管理64个优先级别分配给64个任务 uC OS II中用一个8b的整型数来表示优先级别 数字越小 优先级越高 prio 0的任务优先级最高 uC OS II中使用任务的优先级 prio 作为任务句柄 用户通过修改OS CFG H中的宏定义常数OS LOWEST PRIO的值 约定本用户系统的最大优先级数 西安邮电学院计算机系 16 2020 6 5 第2章目录 1 任务的基本概念2 任务堆栈3 任务控制块及任务控制块链表4 任务就绪表及任务调度5 任务的创建6 任务的挂起和恢复7 其他任务管理函数8 uC OS II的初始化和任务的启动 西安邮电学院计

10、算机系 17 2020 6 5 2 2任务堆栈 堆栈 LIFO访问原则组织的连续存储器 任务堆栈在uC OS II中的应用 任务堆栈是任务的三大组成部分之一 保存CPU寄存器现场 R0 R12 LR SPSR等 本Task的私有数据 西安邮电学院计算机系 18 2020 6 5 2 2任务堆栈 任务堆栈的创建 在创建任务的同时 任务堆栈即被创建 举例 defineMyTaskStkSize64OS STKMyTaskStk MyTaskStkSize 在OS CPU H中定义OS STK typedefINT32UOS STKINT8UOSTaskCreate void task void p

11、d 指向任务的指针void pdata 传递给任务的参数MyTaskStk MyTaskStkSize 1 任务堆栈栈顶的指针INT8Uprio 任务的优先级别 西安邮电学院计算机系 19 2020 6 5 2 2任务堆栈 任务堆栈的使用注意事项 存在两种堆栈形式 递增堆栈 进栈操作向大地址方向发展 递减堆栈 进栈操作向小地址方向发展 OSTaskCreate MyTaskStk StkSize 1 OSTaskCreate MyTaskStk 0 备注 利用条件编译技术和OS CPU H中的宏定义常数OS STK GROWTH编写易移植用户系统 1 递减堆栈forARMCPU 西安邮电学院计

12、算机系 20 2020 6 5 第2章目录 1 任务的基本概念2 任务堆栈3 任务控制块及任务控制块链表4 任务就绪表及任务调度5 任务的创建6 任务的挂起和恢复7 其他任务管理函数8 uC OS II的初始化和任务的启动 西安邮电学院计算机系 21 2020 6 5 2 3任务控制块及任务控制块链表 任务控制块 TCB 任务在系统中的身份证 TCB uC OS II中用于记录任务信息 任务堆栈指针 任务当前状态 任务优先级别等 的数据结构 uC OS II将系统中的所有TCB构成两个链表 OSTCBList OSTCBFreeList 进行任务管理 空任务控制块链表 未被分配的TCB链OST

13、CBFreeList 任务控制块链表 已分配的TCB链OSTCBList 西安邮电学院计算机系 22 2020 6 5 2 3任务控制块及任务控制块链表 任务控制块 TCB 的结构 任务控制块结构的主要成员typedefstructos tcb structos tcb OSTCBNext 指向下一个TCB的指针structos tcb OSTCBPrev 指向前一个TCB的指针OS STK OSTCBStkPtr 指向任务堆栈栈顶的指针 INT16UOSTCBDly 任务等待时间INT8UOSTCBStat 任务的当前状态标志INT8UOSTCBPrio 任务的优先级别 OS TCB 西安邮

14、电学院计算机系 23 2020 6 5 2 3任务控制块及任务控制块链表 任务控制块链表 空任务控制块链表 OSTCBFreeList 任务控制块链表 OSTCBList uC OS II用两个链表来管理TCB 西安邮电学院计算机系 24 2020 6 5 2 3任务控制块及任务控制块链表 任务控制块链表 空任务块链表是在uC OS II初始化 OSInit 时系统自建的 用户可依据目标系统的实际需求 设定其链表长度 OS CFG H文件中的宏常数OS MAX TASKS 用于定义最大用户任务数 UCOS II H文件中的宏常数OS N SYS TASKS 用于约定系统任务数 其值固定为2 当

15、应用程序调用函数OSTaskCreate 创建一个任务时 这个函数会调用系统函数OSTCBInit 来为任务控制块进行初始化 这个函数首先为被创建任务从空任务控制块链表获取一个任务控制块 然后用任务的属性对任务控制块各个成员进行赋值 最后再把这个任务控制块链入到任务控制块链表的头部 当进行系统初始化时 初始化函数会按用户提供的任务数为系统创建具有相应数量的任务控制块并把它们链接为一个链表 由于这些任务控制块还没有对应的任务 故这个链表叫做空任务块链表 即相当于是一些空白的身份证 西安邮电学院计算机系 25 2020 6 5 任务控制块链表 空任务控制块链表 西安邮电学院计算机系 26 2020

16、 6 5 uC OS II中提供了系统函数OSTaskDel 用于删除一个任务 实质就是将该任务的TCB从 任务控制块列表 移到了 空任务控制块列表 2 3任务控制块及任务控制块链表 任务控制块 就相当于是一个任务的身份证 没有任务控制块的任务是不能被系统承认和管理 任务控制块链表 西安邮电学院计算机系 27 2020 6 5 2 3任务控制块及任务控制块链表 任务控制块链表其他相关系统管理变量 OSTCBPrioTbl OS TCB 数据类型的数组 以Prio为下标存放已使能的TCB指针 用于加速TCB的访问 OSTCBCur 全局系统变量 指向当前正在运行的任务的TCB OSTCBFreeList OSTCBListOSTCBTbl OSInit 建立的任务控制块数组OSTCBPrioTbl 任务控制块优先级数组OSTCBCur 西安邮电学院计算机系 28 2020 6 5 第2章目录 1 任务的基本概念2 任务堆栈3 任务控制块及任务控制块链表4 任务就绪表及任务调度5 任务的创建6 任务的挂起和恢复7 其他任务管理函数8 uC OS II的初始化和任务的启动 西安邮电学院计算机

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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