- 1、本文档共53页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统基础教程第19讲第9章嵌入式操作系统整理ppt
2008年12月15日 南京大学计算机系 《嵌入式系统原理与开发》 第19讲 南京大学计算机系 俞建新主讲 第9章 嵌入式操作系统概论 本讲内容 实时系统 嵌入式操作系统的特点和分类 RTOS常用调度算法 启动程序bootloader 嵌入式操作系统μC/OS-II 9.5 嵌入式操作系统μC/OS-II μC/OS-II的主要特点 μC/OS-II的层次 μC/OS-II的代码结构 μC/OS-II的内核 μC/OS-II的任务调度 μC/OS-II的任务切换 μC/OS-II的中断处理 μC/OS-II的时间管理 μC/OS-II的任务间通信 μC/OS-II的存储管理 μC/OS-II的移植 μC/OS-II简介 作者:Jean Labrosse 源码公开的嵌入式实时系统 已被移植到40多种不同的CPU上 http://www.μC/OS-II.com提供技术服务支持。 μC/OS-II的主要特点 可移植性和可确定性 绝大部分代码用ANSI C编写 与处理器硬件相关的代码用汇编语言编写 移植条件 移植目标处理器要有硬件堆栈指针 CPU内容寄存器入栈、出栈指令 C编译器支持内嵌汇编或C可扩展,可连接汇编模块 关中断、开中断可在C语言中实现 μC/OS-II的主要特点(续1) 抢占式多任务 可以管理64个任务,8个任务是系统任务 用户可以最多定义56个任务,每个任务优先级不相同 实时性较强,参看下表 μC/OS-II的主要特点(续2) 可固化可裁剪 实用程序可以只使用μC/OS-II中需要的那些系统服务 任务由独立堆栈 μC/OS-II允许每个任务由不同的栈空间 嵌套中断管理 嵌套层数可达255层 μC/OS-II的层次 μC/OS-II嵌入式系统软件架构(见下页),是一个建立在硬件系统上的四层软件结构 最上层是应用软件层 API层和支撑软件层 内核 设备驱动程序 μC/OS-II的层次示意图 基于μC/OS-II的嵌入式系统软件层次示意图如右图所示 μC/OS-II的代码结构 基于μC/OS-II平台的嵌入式系统体系结构如右下图所示 μC/OS-II主要由三大类程序文件构成 μC/OS-II的代码结构(续) 按功能分 核心模块、预处理模块、进程间通信模块、内存管理模块、任务与调度管理器模块、时间管理模块、移植模块 μC/OS-II的源代码文件组成 见教材第344页表9-5 μC/OS-II的代码结构(续) μC/OS-II的任务代码有两种框架结构,如下列出: μC/OS-II的代码结构(续) 对于执行无限循环的任务,通常采用第一种形式;对于只执行一次就自我删除的任务,采用第二种形式。 以下是推荐的μC/OS-II应用程序任务的基本结构 μC/OS-II的代码结构(续) μC/OS-II的启动过程 Bootloader执行完毕后,调用应用程序主文件(通常是main.c)里的main()函数。main()函数在执行过程中,除硬件初始化函数和用户函数外,按以下次序执行三个主要的μC/OS-II函数:①操作系统初始化OSInit();②任务创建OSTaskCreate();③任务调度开始OSStart() 一旦OSStart()函数开始执行,就标志着μC/OS-II进入了多任务调度的正常运行状态 μC/OS-II的内核 μC/OS-II内核只提供任务调度、任务间通信(ITC)与同步、任务管理、时间管理和内存管理等基本功能 可裁剪编译到8K左右,全部只有100K左右,消耗资源非常小 在小规模的代码内实现了抢占式任务调度、多任务通信功能 μC/OS-II的内核(续1) μC/OS-II的临界区 μC/OS-II调用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()两个宏来执行关中断和开中断 ,对于不同的体系结构,这两个宏定义不一样。 OS_CPU.H文件中含有OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()的定义 μC/OS-II的内核(续2) μC/OS-II的任务状态 最大任务数64个,最高优先级为0,最低优先级取值为实际定义的最大任务数减1. 任务建立之后,拥有优先级,执行函数,自用栈空间和 任务控制块(TCB),在运行时刻能够完全控制CPU的操作以及全部用户可访问寄存器的操作。 μC/OS-II的任务状态转换图 μC/OS-II的每个任务都是一个无限的循环。每个任务都处在休眠态、就绪态、运行态、挂起态和被中断态的某种状态下(任务状态变迁如右图所示) μC/OS-II的内核(续3) 休眠态(dormant) 这种状态相当于该任务驻留在内存中,但还没有交给内核管理。把任务交给内核是通过调用任务创建函数实现的 μC/OS-II两个任务创建函数
文档评论(0)