收藏 分享(赏)

第6章 嵌入式操作系统概述.ppt

上传人:dzzj200808 文档编号:5750715 上传时间:2019-03-15 格式:PPT 页数:43 大小:433KB
下载 相关 举报
第6章 嵌入式操作系统概述.ppt_第1页
第1页 / 共43页
第6章 嵌入式操作系统概述.ppt_第2页
第2页 / 共43页
第6章 嵌入式操作系统概述.ppt_第3页
第3页 / 共43页
第6章 嵌入式操作系统概述.ppt_第4页
第4页 / 共43页
第6章 嵌入式操作系统概述.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、2008年11月23日星期日,1,第六章 嵌入式操作系统概述,2008年11月23日星期日,2,目 录,6.1 嵌入式操作系统简介 6.2 嵌入式操作系统的基本原理,2008年11月23日星期日,3,6.1 嵌入式操作系统简介,2008年11月23日星期日,4,为什么要使用嵌入式操作系统,早期的嵌入式系统开发,一般都是由一个工程师完成的,软件开发工作只占全部工作的5%10%; 随着科技的发展,80年代软件开发工作已经占到全部工作的50; 近几年,随着硬件复杂性、多样性和应用复杂性的增加,软件开发工作急剧增长,经常达到全部工作的7080。 传统的开发模式已经不能适应系统复杂性的增长,而嵌入式操作

2、系统的引入,极大的方便了嵌入式软件的开发和维护,2008年11月23日星期日,5,RTOS嵌入式系统开发平台,嵌入式操作系统体现了一种新的系统设计思想和一个开放的软件框架,软件工程师只做少量改动,就可以添加或删除一个系统模块。 通过操作系统所提供的应用程序编程接口(API)访问系统资源,使得应用软件工程师能够将精力集中于所要解决的问题,而不是烦琐的系统底层操作,提高了开发效率。 它解决了嵌入式软件开发标准化的问题,更好地支持了系统协同开发。 基于嵌入式操作系统开发出的程序,具有较高的可移植性,能实现90%以上设备独立。,2008年11月23日星期日,6,嵌入式操作系统的特点,.高效的任务管理

3、1.支持多任务 2.优先级管理 3.任务调度:基于优先级的抢占式调度、时间片轮转调度的算法 4.支持快速而确定的上下文切换 快速灵活的任务间通信 1.信号量:二进制、互斥、计数器 2.通信机制:消息队列、管道等 高度的可剪裁性 动态链接与部件增量加载 快速有效的中断和异常事件处理 优化的浮点支持 动态内存管理 系统时钟和定时器,2008年11月23日星期日,7,几种最常见的RTOS,软实时RTOS 嵌入式Linux Win CE Palm OS Sybian 硬实时RTOS VxWorks Nuclear 著名的open RTOS ucOS/IIRTEMS 自主知识产权的RTOS HOPEN

4、Delta OS ASIX OS,2008年11月23日星期日,8,TRON联盟1999年底2000年初关于使用RTOS的主要困难,2008年11月23日星期日,9,TRON联盟2001年关于使用RTOS的主要困难,2008年11月23日星期日,10,使用实时操作系统最大的问题,缺少熟悉RTOS技术的工程师,这个问题几乎是3233左右用户的最大困难; 另外RTOS价格较高也是一个非常重要的因素,这一点占1015; 第三个困难是缺乏开发环境和工具的支持,大概占914左右。 这三个主要困难中,以熟悉RTOS技术工程师为最大,而且在4年中几乎没有任何改变!,2008年11月23日星期日,11,6.2

5、 嵌入式操作系统的基本原理,2008年11月23日星期日,12,堆栈的作用,编译器利用堆栈 传递调用参数(ARM会优先采用寄存器传参) 保存返回地址(对于中断还需要保存程序状态字) 保存被调函数(Callee)中需要用到的寄存器的初始值 被调函数(Callee)中使用到的临时(局部)变量 一般把这种调用栈组织叫做调用栈帧(Stack Frame),堆栈保存了系统运行过程中程序之间的调用顺序(关系)!,2008年11月23日星期日,13,调用栈帧(Stack Frame),不同的编译器对栈帧的处理不完全相同,但是大同小异 一般CISC处理器的参数完全靠堆栈传递,而RISC处理器的参数可以靠专门的

6、寄存器传递 在不同的编译器中往往规定的不同寄存器的不同用途(返回值,返回地址,参数,临时变量),有些被调函数可以直接使用,有些必须在使用前保存原值,并在函数返回前恢复。 ARM的栈帧规则:ATPCS,注意:ATPCS规定SP的规则是满递减堆栈,即堆栈指针指向最后压入的数据,且由高地址向低地址生成(SP),2008年11月23日星期日,14,调用栈帧(Stack Frame),U32 Func1(U32 arg1, void *ptr, U16 arg3); Main() I = func1(a, p, c); U32 func1(U32 arg1, void *ptr, U16 arg3) U

7、32 x;Return x; ,c,p,a,Return Addr,Saved Regs,Local vars,High,Low,2008年11月23日星期日,15,中断的分类,硬件中断 (Hardware Interrupt):一般是由外部(相对CPU内核而言)的硬件引起的事件,比如串口来数据,键盘击键等; 软件中断(Soft Interrupt):通过在程序中执行的中断指令引起的中断,又叫软陷; 80X86:int 指令 68000:trap 指令 ARM: SWI 指令 软中断指令一般用于操作系统的系统调用入口; 异常(Exception):由于CPU内部在运行过程中引起的事件,比如指令

8、预取错,数据中止,未定义指令等等,异常事件一般由操作系统接管。,2008年11月23日星期日,16,中断的处理过程,虽然中断产生的原因不同,但是中断响应的硬件过程基本上是相同的。 拷贝CPSR到SPSR_ 设置正确的CPSR位 切换到ARM状态 切换到异常模式 禁止中断 保存返回地址在LR_ 设置PC到异常向量地址中断服务程序可能保存需要使用的寄存器(堆栈中) 用户服务程序可以打开中断,以接受中断嵌套 恢复保存的寄存器 通过调用Reti(或其他相应指令)指令将PSR和PC出栈,从而恢复原来的执行流程。,硬件完成,中断服务 程序完成,2008年11月23日星期日,17,中断的重要性!,理解处理器

9、对中断的管理以及这其中的堆栈管理对于理解操作系统是至关重要的! 中断是操作系统的入口,用户访问操作系统提供的服务的唯一途径是依靠中断来实现的。 实时系统对异步事件的处理,依靠的是中断! 任务的调度靠的是中断 系统调用的实现靠的是中断 在有MMU的系统中,虚存的管理也是依靠中断! 中断是理解操作系统的入口!,如何强调中断的重要性都 不过份,我们将在内核的 实现中详细介绍!,2008年11月23日星期日,18,调用栈和中断栈的不同,Last arg,First arg,Return Address,Automatic or Scratch Vars,Automatic or Scratch Var

10、s,Saved Regs,Return Address,PSR,Saved Regs,调用栈,中断栈,2008年11月23日星期日,19,实时操作系统的概念,实时系统:系统的正确运行要同时满足特定的逻辑和时间关系。 实时操作系统RTOS(real time operation system):是指能支持实时控制系统工作的操作系统 硬实时 软实时,2008年11月23日星期日,20,任 务Task,从代码中去看,任务(TASK)就是一个拥有自己堆栈的函数 。从任务的角度看,任务可以认为自己独自拥有CPU;在进行实时应用设计时通常要把工作分割成多个任务,每个任务处理一部分问题,并被赋予一定的优先级

11、、一套自己的CPU寄存器及堆栈。 实时系统中的大部分任务是周期的,体现在编程上每个任务则是一个典型的无限循环。 任务的状态:睡眠、就绪、运行、延迟、等待,2008年11月23日星期日,21,任务虚拟的CPU,TASK1,TASK2,TASK N,SP,Status,优先级,其他,SP,Status,优先级,其他,SP,Status,优先级,其他,High,LOW,TCB,STACK Frame,r1,r0,r4,r3,r13,r14,r15,PSR,CPU Register,Memory,CPU,操作系统通过堆栈 保存上下文和任务中 函数的调用顺序 (还记得栈帧吗?),2008年11月23日星

12、期日,22,Task Status,Ready, Wait和Run这三个状态是一个多任务系统中必不可少的! 其他的状态应各个OS的不同而不同,2008年11月23日星期日,23,任务:example,手持数据采集终端的打印 creatTASK(myprintf, priority) ; void myprintf( ) while(1) 等待接收队列信息; 往打印机发送打印信息; ,这里myprintf 任务将调用操作系统提供的系统调用,如果接受队列中没有数据,操作系统将挂起该任务,并将控制权交给另一个就绪的任务,当接受队列中有数据从而激活myprintf任务,使其进入就绪态,等待内核的再次调

13、度,2008年11月23日星期日,24,进程,线程和任务的关系,进程一般都拥有自己的独立内存空间,进程间的内存空间彼此隔离,以此实现保护。所以进程的实现有赖于硬件的支持(MMU)在多线程的系统中,进程更像是一个容器的概念,这个容器规定了线程运行的内存空间,每个线程拥有自己独立的堆栈,是最小的可调度单元对于嵌入式系统而言,由于很多嵌入式处理器没有MMU,所以每个可调度单元虽然拥有自己的堆栈,但是却运行在同一内存空间,我们称其为任务,内存空间,任务,多进程,单线程,多进程,多线程,单进程,多线程,2008年11月23日星期日,25,互斥(mutual exclusion),资源的使用必须独占,叫做

14、互斥。 解决办法:开关中断,使用硬件指令,使用信号量,A Task,B Task,使用中,只能等待A完成后才能使用,这种资源就叫做临界资源,2008年11月23日星期日,26,代码临界区(Critical Section),指一段不可分割的代码,一旦执行,不能被中断。 实现代码临界区的方法有:一是屏蔽中断,通常在代码执行前关闭中断,执行后打开中断,只能用于单处理机的情形;二是通过信号量机制。 代码临界区可以看成是代码执行过程中的互斥!,2008年11月23日星期日,27,函数调用与系统调用,系统调用从用户的角度上看与函数调用没有什么区别,但实际上系统调用一般都是在内部通过软陷的方法使CPU进入

15、特权状态,从而实现对全部资源的访问。,Syscall(args) init and arg trans;SWI; ,2008年11月23日星期日,28,内核(kernel),多任务系统的一部分,负责管理任务。 占先式(preemptive)与非占先式 微内核(Micro kernel)与单内核 对于微核系统主要功能: 任务管理(创建,调度等) 任务间通信 中断管理,任务管理 任务间通信 中断管理,系统任务,系统任务,系统任务,硬 件,应用任务,应用任务,2008年11月23日星期日,29,优先级(Priority),每个任务按其重要性被赋予一定的优先级。 静态优先级与动态优先级。 基于优先级的

16、系统会出现优先级倒置的问题,一个好的实时内核应该提供解决倒置的方法。 已开发出多种算法用于实时任务的优先级分配,基本的有单调执行率调度法RMS和最早期限优先法EDF等,2008年11月23日星期日,30,调度Scheduler,内核的主要职责之一,决定任务运行的次序。 基本的调度算法有先来先服务FCFS,最短周期优先SBF,优先级法(Priority),轮转法(Round-Robin),多级队列法(multi-level queues),多级反馈队列(multi-level feedback queues)等。 调度的基本方式有可占先式和非占先式。 多数实时内核是基于优先级调度的多种方法的复合

17、。,2008年11月23日星期日,31,Task Scheduler - 2,2008年11月23日星期日,32,非抢占式,低优先级任务,ISR使高优先 任务就绪,低优先级任务,高优先级任务,相应中断快 内核可以非重入 不需要额外的保护 最大缺陷是相应慢,时间,2008年11月23日星期日,33,抢占式,高优先级任务可以随时运行 任务的切换可以发生在中断中 函数应该可重入,低优先级任务,ISR使高优先 任务就绪,低优先级任务,高优先级任务,时间,2008年11月23日星期日,34,函数调度与中断调度,对于抢占式内核调度只会发生在 系统调用和中断的返回处!,2008年11月23日星期日,35,优

18、先级反转,优先级,时间,A 任务使用临界资源S,C 任务等待临界资源S,中断激活B任务,B任务运行,中断激活D任务,D任务运行,高优先级的C任务由于一直在等待临界资源的释放,而总是被低优先级的B和D任务抢占,2008年11月23日星期日,36,优先级翻转的解决优先级继承,优先级,时间,A 任务使用临界资源S,C 任务等待临界资源S,A 任务继续运行,C 任务得到S并运行,2008年11月23日星期日,37,任务间通信(inter task com),在多任务系统中,任务之间存在相互制约的关系,或者任务之间需要交换信息,称为任务间通信。 方式:邮箱,队列,事件标记等,2008年11月23日星期日

19、,38,Task Synchronization & Communication - 1,MailBox,2008年11月23日星期日,39,Task Synchronization & Communication - 2,Event Flag,2008年11月23日星期日,40,Task Synchronization & Communication - 3,Semaphore,2008年11月23日星期日,41,什么是好的RTOS?,实时操作系统(RTOS)必须采用多线程和抢占式多任务 操作系统中的线程应该是具备优先级的 操作系统应该支持可预测的线程同步机制 操作系统应该拥有防止优先级反转的机制 操作系统的行为应该是可预知的,2008年11月23日星期日,42,操作系统的性能参数,中断延时 对于每个系统调用,最长的时间值 操作系统或驱动程序屏蔽中断的最大时间 系统的中断级别数 设备驱动的中断级别以及所需的最大时间,2008年11月23日星期日,43,其他,系统内核的大小 系统运行时所需要的RAM的大小 系统中对内存的管理方法 好的RTOS还必须拥有好的文档 开发和优化应用程序的好的工具,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 职业教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报