嵌入式系统与软件5.ppt

上传人:sccc 文档编号:5394831 上传时间:2023-07-03 格式:PPT 页数:92 大小:821.53KB
返回 下载 相关 举报
嵌入式系统与软件5.ppt_第1页
第1页 / 共92页
嵌入式系统与软件5.ppt_第2页
第2页 / 共92页
嵌入式系统与软件5.ppt_第3页
第3页 / 共92页
嵌入式系统与软件5.ppt_第4页
第4页 / 共92页
嵌入式系统与软件5.ppt_第5页
第5页 / 共92页
点击查看更多>>
资源描述

《嵌入式系统与软件5.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统与软件5.ppt(92页珍藏版)》请在三一办公上搜索。

1、1,嵌入式系统开发方法和环境,2,嵌入式软件运行流程,上电复位,系统升级,引导/升级系统,系统初始化,应用初始化,多任务应用,板级初始化,远程升级,本地升级,3,嵌入式软件运行流程,上电复位、板级初始化阶段嵌入式系统上电复位后完成板级初始化工作。板级初始化程序具有完全的硬件特性,一般采用汇编语言实现。不同的嵌入式系统,板级初始化时要完成的工作具有一定的特殊性,但以下工作一般是必须完成的:CPU中堆栈指针寄存器的初始化。BSS段(Block Storage Space表示未被初始化的数据)的初始化。CPU芯片级的初始化:中断控制器、内存等的初始化。,4,嵌入式软件运行流程,系统引导/升级阶段根据

2、需要分别进入系统软件引导阶段或系统升级阶段。软件可通过测试通信端口数据或判断特定开关的方式分别进入不同阶段。,5,系统引导阶段系统引导有几种情况:将系统软件从NOR Flash中读取出来加载到RAM中运行:这种方式可以解决成本及Flash速度比RAM慢的问题。软件可压缩存储在Flash中。不需将软件引导到RAM中而是让其直接在NorFlash上运行,进入系统初始化阶段。将软件从外存(如NandFlash、CF卡、MMC等)中读取出来加载到RAM中运行:这种方式的成本更低。,嵌入式软件运行流程,6,嵌入式软件运行流程,系统升级阶段进入系统升级阶段后系统可通过网络进行远程升级或通过串口进行本地升级

3、。远程升级一般支持TFTP、FTP、HTTP等方式。本地升级可通过Console口使用超级终端或特定的升级软件进行。,7,系统初始化阶段 在该阶段进行操作系统等系统软件各功能部分必需的初始化工作,如根据系统配置初始化数据空间、初始化系统所需的接口和外设等。系统初始化阶段需要按特定顺序进行,如首先完成内核的初始化,然后完成网络、文件系统等的初始化,最后完成中间件等的初始化工作。,嵌入式软件运行流程,8,嵌入式软件运行流程,应用初始化阶段在该阶段进行应用任务的创建,信号量、消息队列的创建和与应用相关的其它初始化工作。多任务应用运行阶段各种初始化工作完成后,系统进入多任务状态,操作系统按照已确定的算

4、法进行任务的调度,各应用任务分别完成特定的功能。,9,嵌入式软件开发工具,嵌入式软件开发工具的集成度和可用性将直接关系到嵌入式系统的开发效率。根据不同的阶段,嵌入式软件开发工具可以分为:-需求分析工具(Requirement Analysis Tools)-软件设计工具(Software Design Tools)-编程、调试工具(Coding Tools)-测试工具(Testing Tools)-配置管理工具、维护工具等,10,嵌入式软件的开发可以分为以下几种:编写简单的板级测试软件,主要是辅助硬件的调试)开发基本的驱动程序 开发特定嵌入式操作系统的驱动程序(板级支持包)开发嵌入式系统软件,

5、如:嵌入式操作系统等 开发应用软件,嵌入式软件开发工具,11,从以上嵌入式软件开发分类来看,嵌入式软件开发工具可以分为:与嵌入式OS相关的开发工具,用于开发基 于嵌入式OS的应用和部分的驱动程序等。与嵌入式OS无关的开发工具,用于开发基本的驱动程序、辅助硬件调试,系统软件的开发等。,嵌入式软件开发工具,12,主要嵌入式软件开发工具产品,13,集成开发环境,国外集成开发环境Wind River的TornadoISI公司(目前已被Wind River兼并)的pRISM+Microtec的SpectraMS的VC+嵌入式Toolkit等GNU的GCC/GDB等系列工具国内集成开发环境:Coretek

6、 LambdaTools,14,嵌入式软件的交叉开发环境,交叉开发环境是指用于嵌入式软件开发的所有工具软件的集合,一般包括文本编辑器、交叉编译器、交叉调试器、仿真器、下载器等工具。交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。,15,嵌入式软件的交叉开发环境,16,宿主机:开发平台建立在硬件资源丰富的PC机(或者工作站)上,有通用操作系统等系统软件提供软件开发支持,应用程序的编辑、编译、链接等过程都是在Host上完成的;目标机:运行平台建立在硬件资源相对有限的嵌入式系统硬件平台上,除了调试代理没有其他用于嵌入式软件开发的软件资源;在开发过程中,目标机端需

7、接收和执行宿主机发出的各种命令如设置断点、读内存、写内存等,将结果返回给宿主机,配合宿主机各方面的工作。,宿主机和目标机的差别,17,物理连接和逻辑连接 物理连接是指宿主机与目标机上的一定物理端口通过物理线路连接在一起,连接方式主要有三种:串口、以太口和OCD(On Chip Debug)方式如JTAG、BDM等。物理连接是逻辑连接的基础。逻辑连接指宿主机与目标机间按某种通信协议建立起来的通信连接,目前逐步形成了一些通信协议的标准。,嵌入式软件的交叉开发环境,18,嵌入式软件实现阶段的开发过程,设计完成后,嵌入式软件的开发进入实现阶段,在这个阶段的开发可分为三个步骤:生成、调试和固化运行。软件

8、的生成主要是在宿主机上进行,开发人员利用各种工具完成对应用程序的编辑、交叉编译和链接工作,生成可供调试或固化的目标程序。调试是通过交叉调试器完成软件的调试工作。调试完成后还需进行必要的测试工作,测试完成后进入到最后的固化运行阶段。固化运行是先用一定的工具将应用程序固化到目标机上,然后启动目标机,在没有任何工具干预的情况下应用程序能自动地启动运行。,19,嵌入式软件生成阶段,分为三个阶段源代码程序的编写编译成各个目标模块链接成可供下载调试或固化的目标程序,20,嵌入式软件的调试,交叉调试器 是指调试程序和被调试程序运行在不同机器上的调试器,调试器通过某种方式能控制目标机上被调试程序的运行方式,并

9、且通过调试器能查看和修改目标机上的内存、寄存器以及被调试程序中的变量等。,21,22,嵌入式软件的调试,交叉调试方式Rom Monitor方式 Rom Emulator方式In Circuit Emulator方式On Chip Debugging 方式Simulator方式(非交叉),最早的嵌入式应用软件调试方法Crash and Burn,在宿主机上编写代码在宿主机上编译应用程序,生成可执行程序固化(Burn)到目标机的存储器(EPROM、FLASH等)中启动运行,若正确则转到不正确则在宿主机上改写代码,纠正错误返回重复操作固化成功,结束,ROM Monitor,ROM Monitor是运

10、行在目标机上的一段程序,ROM主要指非易失性记忆体,如FLASH等。ROM Monitor负责监控目标机上被调试程序的运行,通常和宿主机段的程序一起完成对应用程序的调试。ROM Monitor预先被固化到目标机的ROM空间,在目标机复位后首先执行的就是ROM Monitor程序,它对目标机进行一些必要的初始化,然后初始化自己的程序空间,最后等待宿主机段的命令。ROM Monitor能完成被调试程序的下载,目标机内存和寄存器的读写,设置断点,单步执行被调试程序等功能,一些高级的ROM Monitor能完成代码分析、系统分析、ROM空间的写操作以及设置各种非常复杂的断点等功能。,ROM Monit

11、or调试结构,最简便的方法,注意:,采用本方法,在目标机复位后首先执行的就是ROM Monitor,它对目标机进行一些必要的初始化,然后初始化自己的程序空间,最后就等待HOST端的命令。,ROM Monitor能在调试模式下完成程序下载、目标机内存和寄存器的读写、设置断点、单步执行等调试功能。,调试过程:,在宿主机上编写代码在宿主机上使用调试模式交叉编译应用程序,生成可执行程序将代码下载到目标机上的RAM空间用户使用调试器进行交叉调试如果正确转不正确则在调试器帮助下定位错误修改错误,重复将程序固化到目标机上,结束,28,ROM Monitor的优点,简单、方便;支持许多高级的调试功能;可扩展性

12、强;成本低廉;基本上不需要专门的调试硬件支持。,ROM Monitor的缺点,Debug Monitor需要用Crash and Burn方法开发当ROM Monitor占用CPU时,应用程序不响应外部的中断,因此不便调试有时间特性的程序。要求目标机必须有足够的ROM目标机CPU不支持硬件断点时,ROM Monitor无法调试ROM程序和设置数据断点。ROM Monitor要占用目标机一定数量的资源,如:CPU资源、RAM资源和通信设备(如:串口、网卡等)资源。调试环境不同于实际目标环境,ROM Emulator,嵌入式应用的开发经常会遭遇缺少目标机环境、缺乏目标机芯片等资源,而开发过程又不可

13、能停止的问题,因此自然就提出了根据不同的应用需要,利用仿真器件、仿真环境进行开发的方法,ROM Emulator是其中之一,其它还有ICE、OCD等。,ROM Emulator是一种用于替代目标机上的ROM芯片的设备,即ROM仿真器。利用这种设备,目标机可以没有ROM芯片,但目标机的CPU可以读取ROM Emulator设备上ROM芯片的内容:ROM Emulator设备上的ROM芯片的地址可以实时地映射到目标机的ROM地址空间,从而仿真(Emulation)目标机的ROM。,ROM Emulator的调试方式是一种不完全的调试方式:ROM Emulator设备只是为目标机提供ROM芯片和在T

14、arget和Host间建立一条高速的通信通道,因此它经常和前面两种调试方式结合起来形成一种完备的调试方式。ROM Emulator的典型应用就是和ROM Monitor的调试方式相结合。,目标机可以没有ROM芯片、可以使用ROM Emulator提供的ROM空间且不需要用别的工具来写ROM。,优点,目标机必须能支持外部ROM存储空间,而且由于其通常要和ROM Monitor配合使用,因此它拥有ROM Monitor的所有缺点。,缺点,内部电路仿真器(ICE),ICE(In-Circuit Emulator)是一种用于替代目标机上CPU的设备,即在线仿真器。它比一般的CPU有更多的引出线,能够将

15、内部的信号输出到被控制的目标机。ICE上的Memory也可以被映射到用户的程序空间,这样即使目标机不存在的情形下也可以进行代码的调试。ICE是用来仿真CPU核心的设备,它可以在不干扰运算器的正常运行情况下,实时的检测CPU的内部工作情况。,ICE调试结构,连接ICE和目标机时,一般是将目标机的CPU取下,而将ICE的CPU引出线接到目标机的CPU插槽。,用ICE进行调试时,在Host端运行的调试器通过ICE来控制目标机上运行的程序。,功能特点,同时支持软断点和硬件断点的设置设置各种复杂的断点和触发器实时跟踪目标程序的运行选择性的跟踪程序的运行支持“Time Stamp”允许用户设置“Timer

16、”提供“Shadow RAM”,能在不中断被调试程序的运行下查看内存和变量即非干扰调试查询,调试实时的应用系统调试设备驱动程序对硬件进行功能和性能的测试实时性能分析,应用:,价格太昂贵,不利于团队开发所仿CPU有限,缺点:,OCD,OCD(On Chip Debugging)是CPU芯片提供的一种调试功能(片上调试),在处理器内部嵌入额外的控制模块,可以认为是一种廉价的ICE功能:OCD的价格只有ICE的20%,但提供了ICE 80%的功能。最初的OCD是一种仿ROM Monitor的结构,是将ROM Monitor的功能以微码的形式表现。后来的OCD彻底屏弃了这种ROM Monitor的结构

17、,而采用了两级模式的思路,即:将CPU的模式分为一般模式和调试模式。,OCD调试结构,OCD调试方法,将CPU的模式分为一般模式和调试模式一般模式下,CPU从内存读取指令执行调试模式下,CPU首先从调试端口读取指令,通过调试端口可以控制CPU进入和退出调试模式;Host端的调试器可以直接向目标机发送要执行的指令,读写目标机的内存和各种寄存器,控制目标程序的运行以及完成各种复杂的调试功能。,优点,不占用目标机的资源调试环境和最终的程序运行环境基本一致支持软硬断点、Trace功能精确计量程序的执行时间提供时序分析功能,缺点,调试的实时性不如ICE不支持非干扰调试查询CPU必需具有OCD功能OCD存

18、在各种实现、标准不统一-BDM(Backgroud Debugging Mode)-JTAG(Joint Test Access Group)-OnCE(On Chip Emulation),交叉开发的缺点,硬件支持:必须有目标机或评估板,易使用性:普通编程人员不熟悉,廉价性:成本高,可移植性、可扩展性:不高,团队开发:较难,开发周期:较长,仿真开发类型,硬件仿真开发-ICE,软件仿真开发-指令级仿真开发-API级仿真开发,软件仿真开发,在宿主机上创建一个虚拟的目标机环境,再将应用系统下载到这个虚拟目标机上运行调试。,Simulator,一种软件仿真器,相当于在Host上虚拟了一台目标机:,仿

19、真处理器仿真外设仿真环境,软件仿真开发过程,优点,最大好处就是可以不用真正的目标机,可以在目标机环境并不存在的条件下开发目标机上的应用系统,并且在调试时可以利用Host资源提供更详细的错误诊断信息。,缺点,和实际的运行环境差别很大设备模拟的局限性较大实时特性较差对Host的资源要求较高,对时间特性没有严格要求、没有特殊外设、只需要验证逻辑正确的应用程序。,适用范围,50,嵌入式软件的固化运行,当调试完成之后,程序代码需要被完全烧入到目标板的非易失性存储器中,并且在真实的硬件环境上运行,这个过程叫做固化。分析调试环境与固化环境之间的区别是解决固化问题的关键所在代码定位不同初始化部分不同,嵌入式软

20、件开发工具的发展一直落后于主机或台式机系统的软件开发工具的发展。近几年来,随着市场需求的增长,越来越多具有多窗口图形化用户界面、支持面向对象程序设计方法和C/S体系结构的嵌入式软件开发工具被推上市场。,嵌入式软件开发工具技术,嵌入式软件工具技术目前的发展状况:向着开放式、集成化的方向发展。以C/S体系结构为基础,具有运行系统的无关性、连接的无关性、开放的软件接口和环境一致性等特点。具有系统设计、可视化建模、仿真和验证功能。自动生成代码和文档。开发工具可根据系统模型生成C/C+/JAVA语言的源代码,提供完善的、标准化的软件说明文档。具有更高的灵活性。嵌入式系统开发商需要拥有极其灵活的产品架构和

21、开发工具,配备适应于特定行业的工具、操作系统和中间件。,嵌入式软件开发工具技术,53,嵌入式系统开发模式,最大特点:软硬件综合开发。,原因:,嵌入式产品是软硬件的结合体,软件针对硬件开发、固化,54,嵌入式系统开发过程,55,系统总体设计,56,硬件设计制作,57,软件设计实现,58,一种嵌入式多任务软件的开发方法 DARTS方法,DARTS:结构化分析/结构化设计的方法,给出了划分任务的方法以及定义任务间接口的机制.嵌入式实时软件系统的生命周期:需求分析与说明系统设计任务划分原则定义任务间接口任务设计模块构筑任务与系统集成,59,嵌入式实时软件系统的生命周期,需求分析与详细说明系统设计任务分

22、解,定义任务间接口关系任务设计按模块方式设计每个任务,定义模块间接口模块构筑完成每个模块的详细设计、编码和单元测试任务与系统集成系统测试,60,实 例 说 明,61,解 释,控制设备由内部控制器和外部控制面板组成控制器控制六个转轴,并与数字I/O传感器交互作用。转轴和I/O由程序控制该程序由控制面板操作启动执行,62,控制执行过程,按下“上电”按钮,系统进入了上电状态。上电成功后,系统进入了手动状态。此时,操作者可以通过程序选择开关选择程序按下“运行”按钮,则选定的程序开始运行,系统转为运行态。程序运行中如果按下“停止”键,程序被挂起。之后,操作者可以按下“运行”键,使程序恢复执行,也可按下“

23、结束”键,结束程序。按下“结束”键后,系统进入终止态。当程序最终终止执行时,系统返回手动状态。,63,需求说明给出系统功能需求(功能,输入,输出)、外部接口需求(如用户界面)、性能以及诸如文件/数据库安全等其它要求。实时系统常用状态变迁图描述系统,为此需先设计状态变迁图,此图在设计阶段被逐步细化。,需求分析与说明,64,需求分析与说明,65,系 统 设 计,系统设计说明该系统如何被分解成多个任务,如何定义任务间的关系任务划分方法 DARTS(结构化分析/结构化设计)设计方法,此方法给出了划分任务的方法以及定义任务间接口的机制。,66,DARTS设计方法,数据流分析每个数据流图都包含:变换圈,表

24、示系统完成的功能箭头表示变换间的数据流动 数据存储区表示数据的存储场所数据字典定义了数据流和数据存储区所包含的数据项,67,68,DARTS设计方法,划分任务 识别出系统所有功能和它们之间的数据流后,下一步将涉及怎样在数据流图上确定出并发的任务。划分任务原则I/O 依赖性 时间关键性的功能计算量大的功能功能内聚(Functional relations)时间内聚(Temporal relations)周期执行的功能(Cyclic executing function),69,I/O 依赖性,在系统中创建多个与I/O设备相当数目I/O任务I/O任务只实现与设备相关的代码I/O任务的执行只受限于I

25、/O设备的速度,而不是处理器在任务中分离设备相关性,70,时间关键性,将有时间关键性(deadline)的功能分离出来,组成独立运行的任务;赋予这些任务高的优先级,以满足对时间的需要。,71,计算功能占用CPU的时间多,捆绑计算功能成任务,赋予它们较低优先级运行,能被高优先级的任务抢占,消耗CPU的剩余时间;保持高优先级的任务是轻量级的;多个计算任务可安排成同优先级,按时间片循环轮转。,计算内聚,72,功能内聚,各紧密相关的功能,不能分别对应不同的任务,将这些紧密相关的功能组,组成一个任务,使各功能共享资源或相同事件的驱动。组成一个任务会减少通信的开销,而且不仅保证了模块级的功能内聚,也保证了

26、任务级的功能内聚。,73,时间内聚,将在同一时间内完成的各功能,即使这些功能是不相关的,组成功能组,形成一个任务 功能组的各功能是由相同的外部事件驱动的(如:时钟等),这样每次任务接收到一个事件,它们都可以同时执行。组成一个任务,减少了系统的开销,74,周期执行功能,将在相同周期内执行的各功能组成一个任务频率高的赋予高优先级,75,76,定义任务接口,任务间通信模块消息通信模块信息隐藏模块,77,任务同步模块,定义任务接口,78,79,任务设计,任务体系结构 任务执行流程 任务内数据结构 任务内模块间接口 函数设计,详细说明系统中各任务的设计考虑和执行流程,以利于程序员编制程序。,80,任务体

27、系结构,详细定义任务包含的子模块(或类)和模块间(类之间)的关系。,任务执行流程,任务执行流程子模块(类)的执行过程,尽可能详细地描述任务的处理过程:,81,任务设计,82,任务设计,83,函数设计,函数描述:给出对该函数的简要描述,说明设计目的、意义以及特点功能:说明该函数应具有的功能,可采用IPO图(输入一处理一输出图)形式性能:说明对该函数的性能要求,包括精度、灵活性和时间特性等输入:定义每个输入项的特性,包括名称、标识、数据类型和格式、取值范围、输入方式、数据来源、保密方式等输出:定义每个输入项的特性,特征同输入,84,算法:详细说明本函数所选用的算法,具体的计算公式和计算步骤流程:用

28、流程图辅以必要的说明来表示本函数的逻辑流程接口:说明本函数与其他函数的调用关系,包括说明参数赋值和调用方式以及相关数据结构(如数据库、文件)。存储分配:说明本函数的存储分配限制条件:说明本函数运行所受限制 测试计划:说明对本函数的测试计划,包括技术要求、输入数据、预期结果、人员安排等,函数设计,85,模块构筑,系统和任务设计完成后,进行每个模块的详细设计;详细设计完成后才可开始编码;但是在单元测试前不必编完模块全部程序,可以分阶段编码和测试。,86,任务与系统集成,模块逐个连接、测试以构成任务,任务被逐个连接和测试形成最终系统可分两步集成在宿主机上模拟集成(软集成)在目标机上的集成。,87,嵌

29、入式系统设计方法的发展,复杂性单机 网络应用领域广泛;差异大集成度软硬件协同更新速度重用通用方法,多种起因:,88,嵌入式软件设计的一些基本原则,尽量简单使用静态表尽量减少动态性恰当的任务数目使用有限状态自动机辅助设计面向对象设计避免使用复杂算法,89,尽量简单,不存在完善方法任何的设计都只能尽量好,不可能最优。以成本为基准开发计划易实现,成本费用可控制,软件质量有保障。不能过于强调精简软件具有可读性、可移植性、易维护常用模型和方法原型模型、增量模型、组件构件方法,90,使用静态表,系统运行前,根据各任务的实时要求生成一张任务的运行时间表,指明各任务的起始时间及运行长度;运行时间表生成后,在系统运行过程中不再变化;系统运行是,调度器只需要根据这张表在指定的时刻启动相应的实时任务。,91,尽量减少动态性,特点决定嵌入式系统中,时间资源非常宝贵,往往需要以空间换时间采用静态数据结构如静态数组不能绝对禁止动态消息队列可以使用动态链表结构资源丰富系统,92,恰当的任务数目,任务队列变长,任务调度管理复杂化,调度延迟增加,从而降低整个系统的实时性能;任务数目的增多,任务间通信几何级数增长,影响系统的实时性能;原则:在实时性允许的范围内定义适当的任务数目。,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号