uCOS-II内核架构解析.doc

上传人:11****ws 文档编号:2275376 上传时间:2019-05-05 格式:DOC 页数:25 大小:1,021.50KB
下载 相关 举报
uCOS-II内核架构解析.doc_第1页
第1页 / 共25页
uCOS-II内核架构解析.doc_第2页
第2页 / 共25页
uCOS-II内核架构解析.doc_第3页
第3页 / 共25页
uCOS-II内核架构解析.doc_第4页
第4页 / 共25页
uCOS-II内核架构解析.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、目录嵌入式 RTOS.31. 嵌入式系统基本模型 .32. RTOS 设计原则 .33. GPOS 与 RTOS .34. 嵌入式开发模式 .35. (不)可重入 .46. 互斥条件 .47. 临界状态 .4uC/OS-II 基本介绍 .51. uC/OS-II 文件结构 .52. uC/OS-II 组成部分 .53. uC/OS-II 任务状态 .6uC/OS-II 系统核心 .61. uC/OS-II 任务调度 .6(1) uC/OS-II 调度算法 .6(2) 任务就绪表 .6(3) 任务级任务调度 .7(4) 中断级任务调度 .7(5) 调度器上锁与解锁 .8(6) 中断管理函数 .9

2、(7) 中断相关问题 .92. uC/OS-II 系统启动 .10(1) 初始化函数 OSInit().10(2) 启动函数 OSStart().11(3) 统计任务 OSTaskStat .113. uC/OS-II 系统时钟 .114. uC/OS-II 事件管理 .12(1) 事件控制块 .12(2) ECB 管理机制 .12(3) ECB 管理函数 .12uC/OS-II 任务管理 .131. C 可执行代码结构 .132. 任务结构 .133. 任务栈 .144. 任务控制块 .14(1) TCB 描述 .14(2) TCB 主要成员 .14(3) TCB 全局变量 .145. 任务

3、状态切换 .146. 任务管理函数 .15uC/OS-II 通信与同步 .151. 消息邮箱 Mbox .152. 消息队列 msgQ .16(1) msgQ 基本内容 .16(2) msgQ 全局变量 .16(3) msgQ 管理函数 .17(4) msgQ 几个问题 .173. 信号量 Sem.174. 互斥锁 Mutex .18(1) Mutex 基本原理 .18(2) 提升/恢复优先级 .18(3) Mutex 管理函数 .195. 事件组标志 Flag.19(1) Flag 基本原理 .19(2) Flag 数据结构 .20(3) Flag 管理函数 .216. Task 就绪状态判

4、断? .22uC/OS-II 内存管理 .221. memPart 基本原理 .222. memPart 管理函数 .233. memPart 几个问题 .23uC/OS-II 应用开发 .231. 开发步骤 .232 编写任务函数 .243堆栈设计扩展 .244 一些借鉴经验 .25uC/OS-II 内核移植 .251. uC/OS-II 正常运行的条件 .252. 运行态代码分布 .253. 移植的几个问题 .26嵌入式 RTOS1. 嵌入式系统基本模型2. RTOS 设计原则采用各种算法和策略,始终保持系统行为的可预测性。即在任何情况下,在系统运行的任何时刻,OS 的资源配置策略都能为争

5、夺资源(包括 CPU、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。3. GPOS 与 RTOS GPOS:注重每次执行的平均响应时间,而不是某次特定执行的响应时间。 RTOS:除满足应用功能需求外,还要满足实时性要求,始终保证系统行为的可预测性(predictability) 。与 GPOS 不同,RTOS 注重的不是系统的平均表现,而是要满足每个实时任务在最坏情况下的实时性要求。也就是说,RTOS 注重的是个体表现,更准确地说是个体最坏情况表现。RTOS 与 GPOS 的差别主要表现在:a) 任务调度策略不同;b) 内存管理方式不同;c) 中断处理

6、方式不同;d) 系统管理方式不同;4. 嵌入式开发模式 单片机系统的前后台程序:不使用 OS,将应用程序设计成死循环,系统轮流处理各事件,对时间响应要求高的异步事件采用中断进行处理。 基于任务(进程)的软件设计方法:使用 OS,由 OS 管理硬件资源,任务只是在需要资源时申请即可,至于 when/which,完全由 OS 决定。5. (不)可重入 (1) 可重入函数:指函数代码在运行过程中可以被中断,中断返回后仍能够恢复到原来的状态,并能准确无误执行的函数。可重入函数可以被一个以上的任务调用,而不必担心数据被破坏。可重入函数或者只使用局部变量,即变量保存在 CPU 寄存器或堆栈中;或者使用全局

7、变量,则要对全局变量予以保护。(2) 不可重入函数 :函数在运行过程中不可以被中断。6. 互斥条件实现任务间通信最简便的办法是使用共享数据,但要保证任务在处理共享数据时的排它性。使共享资源满足互斥条件,最一般的方法有:(1) 关中断使用某种实时内核,一般情况下关中断的时间最长不超过内核本身的关中断时间,这样就不会影响系统中断延迟。(2) 使用测试并置位指令TestOS_EXT INT8U OSRdyGrp;OS_EXT INT8U OSRdyTblOS_RDY_TBL_SIZE; 添加就绪任务至就绪表; 从就绪表删除就绪任务; 查找最高优先级就绪任务 OS_SchedNew();(3) 任务级

8、任务调度指在非中断返回时进行任务调度,一般发生在当前任务因时间延迟或等待某事件而阻塞或被挂起,或有更高优先级的任务处于就绪状态。任务的基本信息: CPU 的 PC 寄存器:任务当前执行的位置; CPU 的通用寄存器:任务当前执行涉及的临时数据; CPU 的状态寄存器:存储当前 CPU 的状态。任务级任务切换:从一个任务直接切换至另一个任务,不涉及 CPU 状态的切换,OS_TASK_SW()既保存当前任务上下文,又恢复新任务上下文。过程:OS_Sched() - OS_SchedNew() - OS_TASK_SW()(4) 中断级任务调度中断级任务切换:在中断处理完成后,通过 OSIntEx

9、it()判断是否有更高优先级就绪任务。如果有,调用 OSIntCtxSW()恢复新任务上下文。注意:在中断处理中,已经保存了被中断任务的上下文,所以这里仅仅恢复。过程:OSIntExt() OSIntEnter() - ISR OSIntExit() - OSIntCtxSW()(5) 调度器上锁与解锁uC/OS-II 提供调度器锁定功能,在锁定期间不能进行任务调度。 uC/OS-II使用全局变量 OSLockNesting 标识是否锁定了任务调度器。 OS_EXT INT8U OSLockNesting; void OSSchedLock(void); void OSSchedUnlock(

10、void);(6) 中断管理函数在中断处理中,不允许进行任务管理、事件管理及任务调度等操作。uC/OS-II 通过全局变量 OSIntNesting 标识当前是否处于中断状态。在所有任务及事件管理的程序中,都有对 OSIntNesting 进行判断的语句。 void OSIntEnter(void); void OSIntExit(void);(7) 中断相关问题 OS_ENTER_CRITICAL() OS_EXIT_CRITICAL()关中断使得 uC/OS-II 能够同时避免有其他任务或中断服务进入临界代码段 。调用 uC/OS-II 功能函数时,中断总应当是开着的。 uC/OS-II

11、如何禁止调度? 在中断中允许调度吗?为什么? uC/OS-II 如何屏蔽中断?2. uC/OS-II 系统启动uC/OS-II 首先调用 OSInit()进行初始化,然后创建任务(此时还未启动系统,仅仅为其分配资源) ,然后调用 OSStart()启动系统,将 CPU 控制权交给 uC/OS-II,OS 根据任务优先级选择由哪个任务开始执行,或创建新的任务。(1) 初始化函数 OSInit()OSInit()主要完成初始化操作,包括初始化全局变量(在 OS_InitMisc()中) 、任务就绪表、TCB、ECB、FCB、内存单元、消息队列,并创建空闲任务。如果有必要,创建统计任务。 OS_InitMisc(); /初始化部分全局变量 OS_InitRdyList(); /初始化任务就绪表 OS_InitTCBList(); /初始化空闲 TCB 链表 OS_InitEventList(); /初始化 ECB 链表 OS_FlagInit(); /初始化事件组标志结构 OS_MemInit(); /初始化内存管理 OS_QInit(); /初始化消息队列 OS_InitTaskIdle(); /创建空闲任务 OS_InitTaskStat(); /创建统计任务

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

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。