《嵌入式系统的软件系统.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统的软件系统.ppt(44页珍藏版)》请在三一办公上搜索。
1、1,嵌入式系统原理、设计与应用,6 嵌入式系统的软件系统,2,软件系统,软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括程序(program)、相关数据(data)及其说明文档(document)。其中:程序是按照事先设计的功能和性能要求执行的指令序列;数据是程序能正常操纵信息的数据结构;文档是与程序开发维护和使用有关的各种图文资料。,3,软件系统,软件是一种逻辑实体,具有抽象性。这个特点使它与其它工程对象有着明显的差异。人们可以把它记录在纸上、内存、和磁盘、光盘上,但却无法看到软件本身的形态,必须通过观察、分析、思考、判断,才能了解它的功能、性能等特
2、性。,软件产品的特性,软件没有明显的制造过程。一旦研制开发成功,就可以大量拷贝同一内容的副本。所以对软件的质量控制,必须着重在软件开发方面下工夫。,软件在使用过程中,没有磨损、老化的问题。软件在生存周期后期不会因为磨损而老化,但会为了适应硬件、环境以及需求的变化而进行修改,而这些修改有不可避免的引入错误,导致软件失效率升高,从而使的软件退化。当修改的成本变得难以接受时,软件就被抛弃。,软件对硬件和环境有着不同程度的依赖性。这导致了软件移植的问题。,软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低。,软件是复杂的,而且以后会更加复杂。软件是人类有史以来生产的复杂度最高的工业产品。软件涉
3、及人类社会的各行各业、方方面面,软件开发常常涉及其它领域的专门知识,这对软件工程师提出了很高的要求。,软件的成本相当昂贵。软件开发需要投入大量、高强度的脑力劳动,成本非常高,风险也大。现在软件的开销已大大超过了硬件的开销。,软件工作牵涉到很多社会因素。许多软件的开发和运行涉及机构、体制和管理方式等问题,还会涉及到人们的观念和心理。这些人的因素,常常成为软件开发的困难所在,直接影响到项目的成败。,4,嵌入式软件系统的分类,嵌入式软件,系统软件,支撑软件,应用软件,控制、管理计算机系统的资源,嵌入式操作系统嵌入式中间件(CORBA、Java)等等,辅助软件开发的工具,系统分析设计工具仿真开发工具交
4、叉开发工具测试工具配置管理工具维护工具等,面向应用领域,手机软件路由器软件交换机软件飞控软件等,5,嵌入式软件系统的分类,从运行平台来分,嵌入式软件可以分为运行在开发平台上的软件:设计、开发、测试工具等。运行在嵌入式系统上的软件:嵌入式操作系统、应用程序、驱动程序及部分开发工具。,6,嵌入式软件系统的体系结构,硬件,应用层,驱动层,操作系统层,中间件层,7,嵌入式软件系统的体系结构,驱动层 驱动层是直接与硬件打交道的一层,它对操作系统和应用提供所需的驱动的支持。该层主要包括三种类型的程序。,板级初始化程序 这些程序在嵌入式系统上电后初始化系统的硬件环境,包括嵌入式微处理器、存储器、中断控制器、
5、DMA、定时器等的初始化。,与系统软件相关的驱动这类驱动是操作系统和中间件等系统软件所需的驱动程序,它们的开发要按照系统软件的要求进行。目前操作系统内核所需的硬件支持一般都已集成在嵌入式微处理器中了,因此操作系统厂商提供的内核驱动一般不用修改。,与应用软件相关的驱动 与应用软件相关的驱动不一定需要与操作系统连接,这些驱动的设计和开发由应用决定。,8,嵌入式软件系统的体系结构,操作系统层操作系统层包括嵌入式内核、嵌入式TCP/IP网络系统、嵌入式文件系统、嵌入式GUI系统和电源管理等部分。其中嵌入式内核是基础和必备的部分,其他部分要根据嵌入式系统的需要来确定。,9,嵌入式软件系统的体系结构,中间
6、件层 目前在一些复杂的嵌入式系统中也开始采用中间件技术,主要包括嵌入式CORBA、嵌入式Java、嵌入式DCOM和面向应用领域的中间件软件。如基于嵌入式CORBA的应用于软件无线电台的应用中间件SCA(Software Core Architecture)等。,10,嵌入式软件系统的体系结构,应用层 应用层软件主要由多个相对独立的应用任务组成每个应用任务完成特定的工作,如I/O任务、计算的任务、通信任务等,由操作系统调度各个任务的运行。,11,嵌入式软件运行流程,上电复位,系统升级,引导/升级系统,系统初始化,应用初始化,多任务应用,板级初始化,远程升级,本地升级,基于多任务操作系统的嵌入式软
7、件的主要运行流程该运行流程主要分为5个阶段,12,嵌入式软件运行流程,上电复位、板级初始化阶段嵌入式系统上电复位后完成板级初始化工作。板级初始化程序具有完全的硬件特性,一般采用汇编语言实现。不同的嵌入式系统,板级初始化时要完成的工作具有一定的特殊性,但以下工作一般是必须完成的:CPU中堆栈指针寄存器的初始化。BSS段(Block Storage Space表示未被初始化的数据)的初始化。CPU芯片级的初始化:中断控制器、内存等的初始化。,返回,13,嵌入式软件运行流程,系统引导/升级阶段根据需要分别进入系统软件引导阶段或系统升级阶段。软件可通过测试通信端口数据或判断特定开关的方式分别进入不同阶
8、段。,14,嵌入式软件运行流程,系统引导阶段系统引导有几种情况:将系统软件从NOR Flash中读取出来加载到RAM中运行:这种方式可以解决成本及Flash速度比RAM慢的问题。软件可压缩存储在Flash中。不需将软件引导到RAM中而是让其直接在NorFlash上运行,进入系统初始化阶段。将软件从外存(如NandFlash、CF卡、MMC等)中读取出来加载到RAM中运行:这种方式的成本更低。,15,嵌入式软件运行流程,系统升级阶段进入系统升级阶段后系统可通过网络进行远程升级或通过串口进行本地升级。远程升级一般支持TFTP、FTP、HTTP等方式。本地升级可通过Console口使用超级终端或特定
9、的升级软件进行。,返回,16,嵌入式软件运行流程,系统初始化阶段 在该阶段进行操作系统等系统软件各功能部分必需的初始化工作,如根据系统配置初始化数据空间、初始化系统所需的接口和外设等。系统初始化阶段需要按特定顺序进行,如首先完成内核的初始化,然后完成网络、文件系统等的初始化,最后完成中间件等的初始化工作。,返回,17,嵌入式软件运行流程,应用初始化阶段在该阶段进行应用任务的创建,信号量、消息队列的创建和与应用相关的其它初始化工作。多任务应用运行阶段各种初始化工作完成后,系统进入多任务状态,操作系统按照已确定的算法进行任务的调度,各应用任务分别完成特定的功能。,18,嵌入式系统的软件开发问题,嵌
10、入式操作系统。操作系统与应用软件的集成。软件的结构。嵌入式系统的软件是没有出口的,程序不能“退出”,整个程序的结构应该是无限的循环。嵌入式系统的软件设计需要考虑硬件的支持、操作系统的支持、程序的初始化和引导等诸多的方面。嵌入式系统的软件可能没有操作系统,在裸机上直接开发。,19,4 软件系统的设计方法,无操作系统的嵌入式软件设计有操作系统的嵌入式软件设计单处理器多任务系统多处理器多任务系统,20,4.1 无操作系统的嵌入式软件设计,前后台系统中断(事件)驱动系统巡回服务系统基于定时器的巡回服务系统,21,按嵌入式系统软件复杂程度来分类,循环轮询系统,有限状态机系统,前后台系统,单处理器多任务系
11、统,多处理器多任务系统,22,循环轮询系统,initialize()while(true)if(condition_1)action_1();if(condition_2)action_2();.if(condition_n)acition_n();,Check for Input,Do Something,23,优点对于简单的系统而言,便于编程和理解。没有中断的机制,程序运行良好,不会出现随机的问题。缺点有限的应用领域。对于大量的I/O服务的应用,不容易实现。大的程序不便于调试。,适合于慢速和非常快速的简单系统,循环轮询系统,24,巡回服务系统,应用:嵌入式处理器/控制器的中断源不多解决方案
12、增加中断源-需要硬件,成本高软件方案-软件巡回服务main()/*to do:系统初始化*/while(1)action_1();/*巡回检测事件1并处理事件*/action_2();/*巡回检测事件2并处理事件*/action_n();/*巡回检测事件n并处理事件*/,25,定时器中断服务例程,Isr_timer()/*定时器的中断服务程序*/action_1();/*执行事件1的处理*/action_2();/*执行事件2的处理*/action_n();/*执行事件n的处理*/,26,前后台系统,是中断驱动系统的一种后台是一个循环轮询系统一直在运行。前台是由一些中断处理过程组成的。当有一前
13、台事件(外部事件)发生时,引起中断,进行前台处理,处理完成后又回到后台(通常又称主程序)。,中断1,中断2,27,ISR1,ISR2,前台处理,后台处理,ISR3,28,前后台系统,需要考虑的是中断的现场保护和恢复,中断嵌套,中断处理过程与主程序的协调(共享资源)问题。系统的性能主要由中断延迟时间(Interrupt latency time),响应时间(response time)和恢复时间(recovery time)来刻画。,29,中断请求,数据传送,响应时间,主程序,现场保护,和恢复,中断服务,|,中断延迟时间,恢复时间,前后台系统,30,前后台系统,后台:应用程序是一个无限循环,巡回
14、地执行多个事件,完成相应的操作。这一部分软件称为后台。通常在主程序main()中被调用。前台:中断服务程序处理异步事件,这一部分可以看成是前台。后台可以称为任务级,前台可以称为中断级。强实时性的的关键操作一定要用中断来实现。,31,程序框架-后台,main()/*硬件初始化*/while(1)/*后台程序*/action1();action2();action3();,action_1()/*执行动作n*/action_n()/*执行动作n*/,32,程序框架-前台,Isr_1()/*中断1的中断服务程序*/Isr_n()/*中断2的中断服务程序*/,33,前后台系统的特点,实时性问题中断服务
15、程序提供的数据(实时性数据)只有在后台轮询到的时候才能得到运行应用小系统:微波炉电话机玩具等,34,中断(事件)驱动系统,原理整个嵌入式系统软件由中断服务程序构成主程序完成系统的初始化工作应用低功耗系统设计事件驱动系统构成主程序-完成系统的初始化中断服务例程-完成事务处理,35,中断驱动系统-主程序,main()/*完成系统的硬件初始化和数据结构的初始化(如果必要的话)*/*to do:系统的初始化*/while(1)。其它代码或 enter_low_power();/*进入低功耗状态*/,36,中断驱动系统-中断程序,Isr_n()/*其中的一个中断服务程序*/*to do:处理中断事件*/
16、,37,基于定时器的巡回服务系统,普通巡回服务系统的缺点处理器全速运行,开销大-功耗高-电池供电系统降低处理器的工作时间-基于定时器的巡回服务系统构成主程序定时器中断服务程序,38,主程序,main()/*to do:系统初始化*/*to do:设置定时器*/while(1)。其它代码或 enter_low_power();,39,单处理器多任务系统,对于一个复杂的嵌入式实时系统来说,当采用中断处理程序加一个后台主程序这种软件结构难以实时的、准确的、可靠的完成时存在一些互不相关的过程需要在一个计算机中同时处理时,需要采用实时多任务系统!,40,结构,由多个任务,多个中断处理过程,实时操作系统组
17、成的有机的整体。,每个任务是顺序执行的,并行性通过操作系统来完成,任务间的相互通信和同步也需要操作系统的支持。,单处理器多任务系统,41,流程,并发多任务,:,:,后台,前台,ISRs,Tasks,42,多任务系统多个顺序执行的程序并行运行。宏观上看,所有的程序同时运行,每个程序运行在自己独立的CPU上。实际上,不同的程序是共享同一个CPU和其它硬件。因此,需要RTOS来对这些共享的设备和数据进行管理。每个程序都被编制成无限循环的程序,等待特定的输入,执行相应的任务等。这种程序模型将系统分成相对简单的,相互合作的模块。,单处理器多任务系统,43,优点将复杂的系统分解为相对独立的多个线程,达到“分而制之”的目的,从而降低系统的复杂性。保证系统的实时性。系统的模块化好,提高系统的可维护性。缺点需要采用一些新的软件设计方法。需要增加功能:线程间的协调,同步和通信功能。需要对每一个共享资源互斥。导致线程间的竞争。需要使用RTOS,RTOS要增加系统的开销。,单处理器多任务系统,44,多处理器多任务系统,多任务可运行在多个处理器上,由操作系统统一调度,处理。宏观上看是并发的,微观上看也是并发的。多处理机系统分为紧耦合系统(tightly-coupled system)和松耦合系统(loosely-coupled system)两种。多处理多任务系统目前还不成熟。,