版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章嵌入式操作系统概述东南大学国家专用集成电路系统工程技术研究中心目录6.1嵌入式操作系统简介6.2嵌入式操作系统的基本原理6.1嵌入式操作系统简介为什么要使用嵌入式操作系统早期的嵌入式系统开发,一般都是由一个工程师完成的,软件开发工作只占全部工作的5%~10%;随着科技的发展,80年代软件开发工作已经占到全部工作的50%;近几年,随着硬件复杂性、多样性和应用复杂性的增加,软件开发工作急剧增长,经常达到全部工作的70%~80%。传统的开发模式已经不能适应系统复杂性的增长,而嵌入式操作系统的引入,极大的方便了嵌入式软件的开发和维护RTOS嵌入式系统开发平台嵌入式操作系统体现了一种新的系统设计思想和一个开放的软件框架,软件工程师只做少量改动,就可以添加或删除一个系统模块。通过操作系统所提供的应用程序编程接口(API)访问系统资源,使得应用软件工程师能够将精力集中于所要解决的问题,而不是烦琐的系统底层操作,提高了开发效率。它解决了嵌入式软件开发标准化的问题,更好地支持了系统协同开发。基于嵌入式操作系统开发出的程序,具有较高的可移植性,能实现90%以上设备独立。嵌入式操作系统的特点.高效的任务管理1.支持多任务2.优先级管理3.任务调度:基于优先级的抢占式调度、时间片轮转调度的算法4.支持快速而确定的上下文切换快速灵活的任务间通信1.信号量:二进制、互斥、计数器2.通信机制:消息队列、管道等高度的可剪裁性动态链接与部件增量加载快速有效的中断和异常事件处理优化的浮点支持动态内存管理系统时钟和定时器几种最常见的RTOS软实时RTOS嵌入式LinuxWinCEPalmOSSybian硬实时RTOSVxWorksNuclear著名的openRTOSucOS/IIRTEMS自主知识产权的RTOSHOPENDeltaOSASIXOSTRON联盟1999年底2000年初关于使用RTOS的主要困难TRON联盟2001年关于使用RTOS的主要困难使用实时操作系统最大的问题缺少熟悉RTOS技术的工程师,这个问题几乎是32%-33%左右用户的最大困难;另外RTOS价格较高也是一个非常重要的因素,这一点占10%-15%;第三个困难是缺乏开发环境和工具的支持,大概占9%-14%左右。这三个主要困难中,以熟悉RTOS技术工程师为最大,而且在4年中几乎没有任何改变!6.2嵌入式操作系统的基本原理堆栈的作用编译器利用堆栈传递调用参数(ARM会优先采用寄存器传参)保存返回地址(对于中断还需要保存程序状态字)保存被调函数(Callee)中需要用到的寄存器的初始值被调函数(Callee)中使用到的临时(局部)变量一般把这种调用栈组织叫做调用栈帧(StackFrame)堆栈保存了系统运行过程中程序之间的调用顺序(关系)!调用栈帧(StackFrame)不同的编译器对栈帧的处理不完全相同,但是大同小异一般CISC处理器的参数完全靠堆栈传递,而RISC处理器的参数可以靠专门的寄存器传递在不同的编译器中往往规定的不同寄存器的不同用途(返回值,返回地址,参数,临时变量),有些被调函数可以直接使用,有些必须在使用前保存原值,并在函数返回前恢复。ARM的栈帧规则:ATPCS注意:ATPCS规定SP的规则是满递减堆栈,即堆栈指针指向最后压入的数据,且由高地址向低地址生成(SP--)调用栈帧(StackFrame)U32Func1(U32arg1,void*ptr,U16arg3);Main(){… I=func1(a,p,c);…}U32func1(U32arg1,void*ptr,U16arg3){ U32x; …… Returnx;}cpaReturnAddrSPSavedRegsLocalvarsHighLow中断的分类硬件中断(HardwareInterrupt):一般是由外部(相对CPU内核而言)的硬件引起的事件,比如串口来数据,键盘击键等;软件中断(SoftInterrupt):通过在程序中执行的中断指令引起的中断,又叫软陷;80X86:int
指令68000:trap指令ARM:SWI指令软中断指令一般用于操作系统的系统调用入口;异常(Exception):由于CPU内部在运行过程中引起的事件,比如指令预取错,数据中止,未定义指令等等,异常事件一般由操作系统接管。中断的处理过程虽然中断产生的原因不同,但是中断响应的硬件过程基本上是相同的。拷贝CPSR到SPSR_<mode>设置正确的CPSR位切换到ARM状态切换到异常模式禁止中断保存返回地址在LR_<mode>设置PC到异常向量地址中断服务程序可能保存需要使用的寄存器(堆栈中)用户服务程序可以打开中断,以接受中断嵌套恢复保存的寄存器通过调用Reti(或其他相应指令)指令将PSR和PC出栈,从而恢复原来的执行流程。硬件完成中断服务程序完成中断的重要性!!理解处理器对中断的管理以及这其中的堆栈管理对于理解操作系统是至关重要的!中断是操作系统的入口,用户访问操作系统提供的服务的唯一途径是依靠中断来实现的。实时系统对异步事件的处理,依靠的是中断!任务的调度靠的是中断系统调用的实现靠的是中断在有MMU的系统中,虚存的管理也是依靠中断!中断是理解操作系统的入口!!如何强调中断的重要性都不过份,我们将在内核的实现中详细介绍!调用栈和中断栈的不同LastargFirstargReturnAddressAutomaticorScratchVarsAutomaticorScratchVarsSavedRegs…………HighLowReturnAddressPSRSavedRegsHighLow调用栈中断栈实时操作系统的概念实时系统:系统的正确运行要同时满足特定的逻辑和时间关系。实时操作系统RTOS(realtimeoperationsystem):是指能支持实时控制系统工作的操作系统硬实时软实时任务-Task从代码中去看,任务(TASK)就是一个拥有自己堆栈的函数。从任务的角度看,任务可以认为自己独自拥有CPU;
在进行实时应用设计时通常要把工作分割成多个任务,每个任务处理一部分问题,并被赋予一定的优先级、一套自己的CPU寄存器及堆栈。实时系统中的大部分任务是周期的,体现在编程上每个任务则是一个典型的无限循环。任务的状态:睡眠、就绪、运行、延迟、等待任务-虚拟的CPUTASK1TASK2TASKNSPStatus优先级其他SPStatus优先级其他SPStatus优先级其他HighLOWTCBSTACKFramer1r0r4r3r13r14r15PSRCPURegisterMemoryCPU操作系统通过堆栈保存上下文和任务中函数的调用顺序(还记得栈帧吗?)TaskStatusWAITREADYRUNWAIT-SUSPENDSUSPENDDORMANTReady,Wait和Run这三个状态是一个多任务系统中必不可少的!其他的状态应各个OS的不同而不同任务:example手持数据采集终端的打印……creatTASK(myprintf,priority);……voidmyprintf(){ while(1) {
等待接收队列信息; 往打印机发送打印信息;
}}这里myprintf
任务将调用操作系统提供的系统调用,如果接受队列中没有数据,操作系统将挂起该任务,并将控制权交给另一个就绪的任务,当接受队列中有数据从而激活myprintf任务,使其进入就绪态,等待内核的再次调度进程,线程和任务的关系进程一般都拥有自己的独立内存空间,进程间的内存空间彼此隔离,以此实现保护。所以进程的实现有赖于硬件的支持(MMU)在多线程的系统中,进程更像是一个容器的概念,这个容器规定了线程运行的内存空间,每个线程拥有自己独立的堆栈,是最小的可调度单元对于嵌入式系统而言,由于很多嵌入式处理器没有MMU,所以每个可调度单元虽然拥有自己的堆栈,但是却运行在同一内存空间,我们称其为任务内存空间任务多进程,单线程多进程,多线程单进程,多线程互斥(mutualexclusion)
资源的使用必须独占,叫做互斥。解决办法:开关中断,使用硬件指令,使用信号量ATaskBTask使用中只能等待A完成后才能使用这种资源就叫做临界资源代码临界区(CriticalSection)
指一段不可分割的代码,一旦执行,不能被中断。实现代码临界区的方法有:一是屏蔽中断,通常在代码执行前关闭中断,执行后打开中断,只能用于单处理机的情形;二是通过信号量机制。代码临界区可以看成是代码执行过程中的互斥!函数调用与系统调用系统调用从用户的角度上看与函数调用没有什么区别,但实际上系统调用一般都是在内部通过软陷的方法使CPU进入特权状态,从而实现对全部资源的访问。Syscall(args){ initandargtrans; SWI;}
内核(kernel)
多任务系统的一部分,负责管理任务。占先式(preemptive)与非占先式微内核(Microkernel)与单内核对于微核系统主要功能:任务管理(创建,调度等)任务间通信中断管理任务管理任务间通信中断管理系统任务系统任务系统任务硬件应用任务应用任务优先级(Priority)每个任务按其重要性被赋予一定的优先级。静态优先级与动态优先级。基于优先级的系统会出现优先级倒置的问题,一个好的实时内核应该提供解决倒置的方法。已开发出多种算法用于实时任务的优先级分配,基本的有单调执行率调度法RMS和最早期限优先法EDF等调度Scheduler内核的主要职责之一,决定任务运行的次序。基本的调度算法有先来先服务FCFS,最短周期优先SBF,优先级法(Priority),轮转法(Round-Robin),多级队列法(multi-levelqueues),多级反馈队列(multi-levelfeedbackqueues)等。调度的基本方式有可占先式和非占先式。多数实时内核是基于优先级调度的多种方法的复合。TaskScheduler-2非抢占式低优先级任务ISR使高优先任务就绪低优先级任务高优先级任务低优先任务主动放弃CPU相应中断快内核可以非重入不需要额外的保护最大缺陷是相应慢时间抢占式高优先级任务可以随时运行任务的切换可以发生在中断中函数应该可重入低优先级任务ISR使高优先任务就绪低优先级任务高优先级任务时间函数调度与中断调度对于抢占式内核调度只会发生在系统调用和中断的返回处!优先级反转优先级时间A任务使用临界资源SC任务等待临界资源S中断激活B任务B任务运行中断激活D任务D任务运行高优先级的C任务由于一直在等待临界资源的释放,而总是被低优先级的B和D任务抢占优先级翻转的解决-优先级继承优先级时间A任务使用临界资源SC任务等待临界资源S中断激活B任务A任务继续运行A释放SC任务得到S并运行任务间通信(intertaskcom)
在多任务系统中,任务之间存在相互制约的关系,或者任务之间需要交换信息,称为任务间通信。方式:邮箱,队列,事件标记等TaskSynchronization&Communication-1MailBox
MailBoxtasktaskT_MSGT_MSGmsgcont[10]msgcont[10]TaskSynchronization&Communication-2EventFlagEventFlagtaskflag_patternwait_patternwait_flag_modeTaskSynchronization&Communication-3SemaphoreSemaphoretasktasktask
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客户服务满意度调查问卷设计指南提升客户体验
- 新材料研发行业科研项目管理方案
- 跨平台协作编辑模板与实时同步功能
- 企业行政事务操作手册模板
- 多功能销售业绩分析模板
- 北京市第七中学2025-2026学年初三一诊模拟考试(一)英语试题含解析
- 四川省遂宁第二中学2026届初三下第二次阶段(期中)数学试题含解析
- 山西省(大同)重点名校2026届宁夏银川二中下学期初三年级统练三英语试题含解析
- 流程化管理工具在人力资源配置中的实践
- 内蒙古包头市青山区重点中学2026年初三5月第一次单元测试-语文试题试卷含解析
- 达芬奇油画解读
- 环境微生物学课件 02第二章原核生物
- 中日粗糙度对照表
- SMT炉后检查作业指导书V1.0
- 胸膜疾病讲解
- 高二物理竞赛弗兰克-赫兹实验课件
- GB 6000-1999主要造林树种苗木质量分级
- 发电企业安全生产标准化规范及达标评级标准解读下课件
- 中国个省级行政区轮廓图
- 人格与健康的关系
- 灵芝孢子油课件
评论
0/150
提交评论