No.1Sep2006第七讲嵌入式操作系统概述东南大学国家专用集成电路系统工程技术研究中心嵌入式系统概论No.2Sep2006目录¾复习嵌入式系统硬件设计概述¾OS概述¾嵌入式操作系统的基本原理任务和调度任务同步和通信中断,时钟及其他¾嵌入式操作系统ASIXOS举例No.3Sep2006复习-嵌入式系统硬件设计¾电源设计LDO:低压差线性稳压器,输出纹波小,效率较低;DC-DC:开关稳压电源,效率高,产生噪声;¾存储器设计NORFLASH:SRAM总线接口,程序存储器,容量小,价格高NANDFLASH:I/O接口,数据存储器,容量大而便宜,存在位反转和坏区;SDRAM:同步动态RAM,时序比SRAM总线接口复杂,行列交叉地址,需要动态刷新。¾人机接口LCD:STN/TFT液晶显示屏,LCD控制器-LCD驱动器-液晶屏键盘设计:N*N键盘使用N+1接口实现的方法No.4Sep2006复习-嵌入式系统硬件设计¾通信和接口UART:通用异步串口古老的协议:RS232/RS485SPI:同步串行接口I2CSDA、SCL两线制串行总线USB:通用串行总线¾可编程器件基于乘积项(Product-Term)的PLD结构/CPLD基于查找表(Look-Up-Table)的PLD结构/FPGACPLD和FPGA的区别可编程器件的设计流程z硬件描述语言z逻辑仿真z逻辑综合z布局布线z后仿真No.5Sep2006目录¾复习嵌入式系统硬件设计概述¾OS概述¾嵌入式操作系统的基本原理任务和调度任务同步和通信中断,时钟及其他¾嵌入式操作系统ASIXOS举例No.6Sep2006操作系统概述¾OS是位于计算机硬件系统之上,控制和管理计算机软硬件资源,为用户提供便捷使用计算机的程序集合¾OS的作用:管理计算机:OS用来更有效的管理和分配系统的硬、软件资源,使得其能够发挥更大的作用。使用计算机:OS通过内部复杂的综合处理,为用户提供友好、快捷的操作界面,以便用户无需了解计算机软、硬件的细节就能方便地使用计算机¾OS的主要功能进程管理存储管理设备管理文件管理用户接口/作业管理No.7Sep2006OS的功能¾进程管理程序及其数据在计算机上的一次执行过程,是操作系统进行资源分配和调度有的一个独立单位。主要是按照某种原则分配进程资源。(正在执行的程序的管理,单线程和多线程)线程:线程ID,程序计数器,寄存器集合,堆栈和属于同一进程的其他线程共享其代码段,数据段和其他资源)¾存储管理主要是管理内存资源,提高内存的利用率¾设备管理制定分配和使用设备的策略,最大限度的实现并行操作¾文件管理,有效管理文件的存储空间¾用户接口:用户界面No.8Sep2006进程,线程和任务的关系¾进程一般都拥有自己的独立内存空间,进程间的内存空间彼此隔离,以此实现保护。所以进程的实现有赖于硬件的支持(MMU)¾在多线程的系统中,进程更像是一个容器的概念,这个容器规定了线程运行的内存空间,每个线程拥有自己独立的堆栈,是最小的可调度单元¾对于嵌入式系统而言,由于很多嵌入式处理器没有MMU,所以每个可调度单元虽然拥有自己的堆栈,但是却运行在同一内存空间,我们称其为任务内存空间任务多进程,单线程多进程,多线程单进程,多线程No.9Sep2006嵌入式软件的发展-循环轮询系统¾单线程程序Single-threadedprogram也称为顺序程序Sequentialprogram,它分为两种:¾循环轮询系统:(PollingLoop)最简单的软件结构是循环轮询,程序依次检查系统的每一个输入条件,一旦条件成立就进行相应的处理其通常的软件结构如下优点:z对于简单的系统而言便于编程和理解z没有中断的机制程序运行良好不会出现随机的问题缺点:z有限的应用领域(由于不可确定性)z对于大量的I/O服务的应用不易实现;z大的程序不便于调试,Dosomework……CheckforminputRepeatinitialize()While(true){if(condition_1)action_1();if(condition_2)action_2();……if(condition_n)acition_n();}No.10Sep2006嵌入式软件的发展-前后台系统¾单线程程序第二种:前后台系统(Foreground/Background),这种系统可称为或超循环系统(Super-Loops)。应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看成后台行为(background)。中断服务程序处理异步事件,这部分可以看成前台行为(foreground)。后台也可以叫做任务级。前台也叫中断级。时间相关性很强的关键操作(Criticaloperation)一定是靠中断服务来保证的。因为中断服务提供的信息一直要等到后台程序走到该处理这个信息这一步时才能得到处理,这种系统在处理信息的及时性上,比实际可以做到的要差。很多基于微处理器的产品采用前后台系统设计,例如微波炉、电话机、玩具等。极端情况下,后台只是一个简单的循环不做任何事情所有其它工作都是由中断处理程序完成的No.11Sep2006嵌入式软件的发展——多任务操作系统¾问题的提出:对于一个复杂的嵌入式实时系统来说当采用中断处理程序加后台主程序这种软件结构难以实时的准确的可靠的完成时存在一些互不相关的过程需要在一个计算机中同时处理时,¾多任务嵌入式实时操作系统的实质特点:多个顺序执行的程序并行运行,宏观上看所有的程序同时运行每个程序运行在自己独立的CPU上,实际上不同的程序是共享同一个CPU和其它硬件RTOS来对这些共享的设备和数据进行管理每个程序都被编制成无限循环的程序等待特定的输入执行相应的任务等这种程序模型将系统分成相对简单的相互合作的模块¾主要优点:将复杂的系统分解为相对独立的多个线程达到分而制之的目的,从而降低系统的复杂性保证系统的实时性系统的模块化好提高系统的可维护性¾缺点:需要采用一些新的软件设计方法需要增加功能:线程间的协调同步和通信功能需要对每一个共享资源互斥导致线程间的竞争需要使用RTOS,RTOS要增加系统的开销No.12Sep2006多任务嵌入式操作系统的实质¾实时多任务系统实际上是由多个任务和多个中断处理过程组成的有机的整体。¾每个任务是顺序执行的,并行性通过操作系统来完成¾任务间的相互通信和同步也需要操作系统的支持¾RTOS的需求足够的快(上下文切换和系统调用等)可确定的性能任务调度机制是基于优先级的最小的中断延迟可伸缩可配置的体系结构可靠健壮¾操作系统主要完成:任务切换和调度任务间通信同步互斥实时时钟管理中断管理内存管理No.13Sep2006实时操作系统的概念¾实时系统:系统的正确运行要同时满足特定的逻辑和时间关系。¾实时操作系统RTOS(realtimeoperationsystem):是指能支持实时控制系统工作的操作系统硬实时:所谓硬实时是指如果系统对某个实时任务的处理未能在某个截止时间开始或者结束的话,最终的结果将是灾难性的,这就意味着即便是处理结果合乎逻辑但是仍然毫无意义;软实时:而在软实时系统中,处理任务启动或者结束的截止时间只是一个期望值,并不见得必须满足;即便是处理时间超过了截止时间,也是有意义的。No.14Sep2006几种最常见的RTOS¾软实时RTOS嵌入式LinuxWinCEPalmOSSybian¾硬实时RTOSVxWorksNuclear¾著名的openRTOSucOS/II¾自主知识产权的RTOSHOPENDeltaOSASIXOSNo.15Sep2006复习2个概念—堆栈的作用和调用栈帧¾堆栈的作用传递调用参数(ARM会优先采用寄存器传参)保存返回地址(对于中断还需要保存程序状态字)保存被调函数(Callee)中需要用到的寄存器的初始值被调函数(Callee)中使用到的临时(局部)变量¾一般把这种调用栈组织叫做调用栈帧(StackFrame)¾不同的编译器对栈帧的处理不完全相同,但是大同小异一般CISC处理器的参数完全靠堆栈传递,而RISC处理器的参数可以靠专门的寄存器传递在不同的编译器中往往规定的不同寄存器的不同用途(返回值,返回地址,参数,临时变量),有些被调函数可以直接使用,有些必须在使用前保存原值,并在函数返回前恢复。¾ARM的栈帧规则:ATPCS堆栈保存了系统运行过程中程序之间的调用顺序(关系)!堆栈保存了系统运行过程中程序之间的调用顺序(关系)!注意:注意:ATPCSATPCS规定规定SPSP的规则是满递减堆栈,即堆栈指针指向的规则是满递减堆栈,即堆栈指针指向最后压入的数据,且由高地址向低地址生成(最后压入的数据,且由高地址向低地址生成(SPSP--)--)No.16Sep2006复习2个概念-中断及其处理过程¾硬件中断(HardwareInterrupt):一般是由外部(相对CPU内核而言)的硬件引起的事件,比如串口来数据,键盘击键等;¾软件中断(SoftInterrupt):通过在程序中执行的中断指令引起的中断,又叫软陷;80X86:int指令68000:trap指令ARM:SWI指令软中断指令一般用于操作系统的系统调用入口;¾异常(Exception):由于CPU内部在运行过程中引起的事件,比如指令预取错,数据中止,未定义指令等等,异常事件一般由操作系统接管。¾虽然中断产生的原因不同,但是中断响应的硬件过程基本上是相同的。拷贝CPSR到SPSR_mode设置正确的CPSR位z切换到ARM状态z切换到异常模式z禁止中断保存返回地址在LR_mode设置PC到异常向量地址中断服务程序可能保存需要使用的寄存器(堆栈中)服务程序可以打开中断,以接受中断嵌套恢复保存的寄存器通过调用Reti(或其他相应指令)指令将PSR和PC出栈,从而恢复原来的执行流程。No.17Sep2006目录¾复习嵌入式系统硬件设计概述¾OS概述¾嵌入式操作系统的基本原理OS内核,任务和调度任务同步和通信中断,时钟及其他¾嵌入式操作系统ASIXOS举例No.18Sep2006内核的概念(Kernel)¾多任务系统中,操作系统内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通讯。内核的作用z内核提供的基本服务是任务切换。z之所以使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。z通过提供必不可缺少的系统服务,诸如信号量管理,邮箱、消息队列、延时等,实时内核使得CPU的利用更为有效。内核的代价z内核本身也增加了应用程序的额外负荷,代码空间增加ROM的用量,内核本身的数据结构增加了RAM的用量。z但更主要的是,每个任务要有自己的栈空间,这一块吃起内存来是相当厉害的。内核本身对CPU的占用时间一般在2到5个百分点之间。No.19Sep2006任务的概念¾一个任务,也被称作一个线程;嵌入式操作系统分配资源的基本单位;任务是具有一定属性的运行中的程序每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间;每个任务都是一个无限的循环;任务具有优先级,任务通过控制块TCB描述每个任务都处在以下5种状态之一的状态下,这5种状态是休眠态,就绪态、运行态、挂起态(等待某一事件发生)和被中断态¾实时应用程序的设计过程,包括如何把问题分割成多个任务;No.20Sep2006任务:example¾手持数据采集终端的打印¾……creatTASK(myprintf,priority);……voidmyprintf(){while(1){等待接收队列信息;往打印机发送打印信息;}}这里myprintf任务将调用操作系统提供的系统调用,如果接受队列中没有数据,操作系统将挂起该任务,并将控制权交给另一