版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统开发方法和环境1嵌入式软件运行流程上电复位系统升级引导/升级系统系统初始化应用初始化多任务应用板级初始化远程升级本地升级2嵌入式软件运行流程上电复位、板级初始化阶段嵌入式系统上电复位后完成板级初始化工作。板级初始化程序具有完全的硬件特性,一般采用汇编语言实现。不同的嵌入式系统,板级初始化时要完成的工作具有一定的特殊性,但以下工作一般是必须完成的:CPU中堆栈指针寄存器的初始化。BSS段(Block Storage Space表示未被初始化的数据)的初始化。CPU芯片级的初始化:中断控制器、内存等的初始化。3嵌入式软件运行流程系统引导/升级阶段根据需要分别进入系统软件引导阶段或系统升级
2、阶段。软件可通过测试通信端口数据或判断特定开关的方式分别进入不同阶段。 4系统引导阶段系统引导有几种情况:将系统软件从NOR Flash中读取出来加载到RAM中运行:这种方式可以解决成本及Flash速度比RAM慢的问题。软件可压缩存储在Flash中。不需将软件引导到RAM中而是让其直接在NorFlash上运行,进入系统初始化阶段。将软件从外存(如NandFlash、CF卡、MMC等)中读取出来加载到RAM中运行:这种方式的成本更低。嵌入式软件运行流程5嵌入式软件运行流程系统升级阶段进入系统升级阶段后系统可通过网络进行远程升级或通过串口进行本地升级。远程升级一般支持T、HTTP等方式。本地升级可
3、通过Console口使用超级终端或特定的升级软件进行。6系统初始化阶段 在该阶段进行操作系统等系统软件各功能部分必需的初始化工作,如根据系统配置初始化数据空间、初始化系统所需的接口和外设等。系统初始化阶段需要按特定顺序进行,如首先完成内核的初始化,然后完成网络、文件系统等的初始化,最后完成中间件等的初始化工作。 嵌入式软件运行流程7嵌入式软件运行流程应用初始化阶段在该阶段进行应用任务的创建,信号量、消息队列的创建和与应用相关的其它初始化工作。多任务应用运行阶段各种初始化工作完成后,系统进入多任务状态,操作系统按照已确定的算法进行任务的调度,各应用任务分别完成特定的功能。 8嵌入式软件开发工具
4、嵌入式软件开发工具的集成度和可用性将直接关系到嵌入式系统的开发效率。根据不同的阶段,嵌入式软件开发工具可以分为:- 需求分析工具(Requirement Analysis Tools)- 软件设计工具(Software Design Tools)- 编程、调试工具(Coding Tools)- 测试工具(Testing Tools)- 配置管理工具、维护工具等 9嵌入式软件的开发可以分为以下几种 :编写简单的板级测试软件,主要是辅助硬件的调试 ) 开发基本的驱动程序 开发特定嵌入式操作系统的驱动程序(板级支持包) 开发嵌入式系统软件,如:嵌入式操作系统等 开发应用软件 嵌入式软件开发工具 10
5、从以上嵌入式软件开发分类来看,嵌入式软件开发工具可以分为:与嵌入式OS相关的开发工具,用于开发基 于嵌入式OS的应用和部分的驱动程序等。与嵌入式OS无关的开发工具,用于开发基本的驱动程序、辅助硬件调试,系统软件的开发等。 嵌入式软件开发工具 11主要嵌入式软件开发工具产品RequirementAnalysisSoftwareDesignCodingTestReleasePhasesTAUObjectGeodeRational Rose RealTimeRhapsodyTornadoLambdaTOOLpRISM+SpectraWin CE PlatformBuilderCodeWarriorX
6、ray DebuggerLogiscopeCodeTEST12集成开发环境国外集成开发环境Wind River的TornadoISI公司(目前已被Wind River兼并)的pRISM+Microtec的SpectraMS的VC+嵌入式Toolkit等GNU的GCC/GDB等系列工具国内集成开发环境:Coretek LambdaTools13嵌入式软件的交叉开发环境 交叉开发环境是指用于嵌入式软件开发的所有工具软件的集合,一般包括文本编辑器、交叉编译器、交叉调试器、仿真器、下载器等工具。交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。14嵌入式软件的交叉开
7、发环境 15宿主机:开发平台建立在硬件资源丰富的PC机(或者工作站)上,有通用操作系统等系统软件提供软件开发支持,应用程序的编辑、编译、链接等过程都是在Host上完成的;目标机:运行平台建立在硬件资源相对有限的嵌入式系统硬件平台上,除了调试代理没有其他用于嵌入式软件开发的软件资源;在开发过程中,目标机端需接收和执行宿主机发出的各种命令如设置断点、读内存、写内存等,将结果返回给宿主机,配合宿主机各方面的工作。 宿主机和目标机的差别 16物理连接和逻辑连接 物理连接是指宿主机与目标机上的一定物理端口通过物理线路连接在一起,连接方式主要有三种:串口、以太口和OCD(On Chip Debug)方式如
8、JTAG、BDM等。物理连接是逻辑连接的基础。逻辑连接指宿主机与目标机间按某种通信协议建立起来的通信连接,目前逐步形成了一些通信协议的标准。 嵌入式软件的交叉开发环境 17嵌入式软件实现阶段的开发过程 设计完成后,嵌入式软件的开发进入实现阶段,在这个阶段的开发可分为三个步骤:生成、调试和固化运行。软件的生成主要是在宿主机上进行,开发人员利用各种工具完成对应用程序的编辑、交叉编译和链接工作,生成可供调试或固化的目标程序。调试是通过交叉调试器完成软件的调试工作。调试完成后还需进行必要的测试工作,测试完成后进入到最后的固化运行阶段。固化运行是先用一定的工具将应用程序固化到目标机上,然后启动目标机,在
9、没有任何工具干预的情况下应用程序能自动地启动运行。18嵌入式软件生成阶段分为三个阶段源代码程序的编写编译成各个目标模块链接成可供下载调试或固化的目标程序编辑器交叉编译器交叉链接器源程序目标模块可供调试/固化库文件19嵌入式软件的调试 交叉调试器 是指调试程序和被调试程序运行在不同机器上的调试器, 调试器通过某种方式能控制目标机上被调试程序的运行方式,并且通过调试器能查看和修改目标机上的内存、寄存器以及被调试程序中的变量等。 20交叉调试非交叉调试调试器和被调试程序运行在不同的计算机上调试器和被调试程序运行在同一台计算机上可独立运行,无需操作系统支持需要操作系统的支持被调试程序的装载由调试器完成
10、被调试程序的装载由专门的Loader程序完成需要通过外部通信的方式来控制被调试程序不需要通过外部通信的方式来控制被调试程序可以直接调试不同指令集的程序只能直接调试相同指令集的程序21嵌入式软件的调试 交叉调试方式Rom Monitor方式 Rom Emulator方式In Circuit Emulator方式On Chip Debugging 方式Simulator方式(非交叉)22最早的嵌入式应用软件调试方法Crash and Burn在宿主机上编写代码在宿主机上编译应用程序,生成可执行程序固化(Burn)到目标机的存储器(EPROM、FLASH等)中启动运行,若正确则转到不正确则在宿主机上
11、改写代码,纠正错误返回重复操作固化成功,结束23ROM MonitorROM Monitor是运行在目标机上的一段程序,ROM主要指非易失性记忆体,如FLASH等。ROM Monitor负责监控目标机上被调试程序的运行,通常和宿主机段的程序一起完成对应用程序的调试。ROM Monitor预先被固化到目标机的ROM空间,在目标机复位后首先执行的就是ROM Monitor程序,它对目标机进行一些必要的初始化,然后初始化自己的程序空间,最后等待宿主机段的命令。ROM Monitor能完成被调试程序的下载,目标机内存和寄存器的读写,设置断点,单步执行被调试程序等功能,一些高级的ROM Monitor能
12、完成代码分析、系统分析、ROM空间的写操作以及设置各种非常复杂的断点等功能。24ROM Monitor调试结构最简便的方法25注意:采用本方法,在目标机复位后首先执行的就是ROM Monitor,它对目标机进行一些必要的初始化,然后初始化自己的程序空间,最后就等待HOST端的命令。 ROM Monitor能在调试模式下完成程序下载、目标机内存和寄存器的读写、设置断点、单步执行等调试功能。26调试过程:在宿主机上编写代码在宿主机上使用调试模式交叉编译应用程序,生成可执行程序将代码下载到目标机上的RAM空间用户使用调试器进行交叉调试如果正确转不正确则在调试器帮助下定位错误修改错误,重复将程序固化到
13、目标机上,结束27ROM Monitor的优点简单、方便;支持许多高级的调试功能;可扩展性强;成本低廉;基本上不需要专门的调试硬件支持。28ROM Monitor的缺点Debug Monitor需要用Crash and Burn方法开发当ROM Monitor占用CPU时,应用程序不响应外部的中断,因此不便调试有时间特性的程序。要求目标机必须有足够的ROM目标机CPU不支持硬件断点时,ROM Monitor无法调试ROM程序和设置数据断点。ROM Monitor要占用目标机一定数量的资源,如:CPU资源、RAM资源和通信设备(如:串口、网卡等)资源。调试环境不同于实际目标环境29ROM Emu
14、lator 嵌入式应用的开发经常会遭遇缺少目标机环境、缺乏目标机芯片等资源,而开发过程又不可能停止的问题,因此自然就提出了根据不同的应用需要,利用仿真器件、仿真环境进行开发的方法,ROM Emulator是其中之一,其它还有ICE、OCD等。 ROM Emulator是一种用于替代目标机上的ROM芯片的设备,即ROM仿真器。利用这种设备,目标机可以没有ROM芯片,但目标机的CPU可以读取ROM Emulator设备上ROM芯片的内容:ROM Emulator设备上的ROM芯片的地址可以实时地映射到目标机的ROM地址空间,从而仿真(Emulation)目标机的ROM。 30 ROM Emulat
15、or的调试方式是一种不完全的调试方式:ROM Emulator设备只是为目标机提供ROM芯片和在Target和Host间建立一条高速的通信通道,因此它经常和前面两种调试方式结合起来形成一种完备的调试方式。ROM Emulator的典型应用就是和ROM Monitor的调试方式相结合。31目标机可以没有ROM芯片、可以使用ROM Emulator提供的ROM空间且不需要用别的工具来写ROM。 优点目标机必须能支持外部ROM存储空间,而且由于其通常要和ROM Monitor配合使用,因此它拥有ROM Monitor的所有缺点。 缺点32内部电路仿真器(ICE) ICE(In-Circuit Emu
16、lator)是一种用于替代目标机上CPU的设备,即在线仿真器。它比一般的CPU有更多的引出线,能够将内部的信号输出到被控制的目标机。ICE上的Memory也可以被映射到用户的程序空间,这样即使目标机不存在的情形下也可以进行代码的调试。 ICE是用来仿真CPU核心的设备,它可以在不干扰运算器的正常运行情况下,实时的检测CPU的内部工作情况。 33ICE调试结构宿主开发平台目标平台ICE34连接ICE和目标机时,一般是将目标机的CPU取下,而将ICE的CPU引出线接到目标机的CPU插槽。 用ICE进行调试时,在Host端运行的调试器通过ICE来控制目标机上运行的程序。 35功能特点同时支持软断点和
17、硬件断点的设置设置各种复杂的断点和触发器实时跟踪目标程序的运行选择性的跟踪程序的运行支持“Time Stamp” 允许用户设置“Timer” 提供“Shadow RAM”,能在不中断被调试程序的运行下查看内存和变量即非干扰调试查询 36调试实时的应用系统调试设备驱动程序对硬件进行功能和性能的测试实时性能分析应用:价格太昂贵,不利于团队开发所仿CPU有限缺点:37OCDOCD(On Chip Debugging)是CPU芯片提供的一种调试功能(片上调试),在处理器内部嵌入额外的控制模块,可以认为是一种廉价的ICE功能:OCD的价格只有ICE的20%,但提供了ICE 80%的功能。最初的OCD是一
18、种仿ROM Monitor的结构,是将ROM Monitor的功能以微码的形式表现。后来的OCD彻底屏弃了这种ROM Monitor的结构,而采用了两级模式的思路,即:将CPU的模式分为一般模式和调试模式。38OCD调试结构39OCD调试方法将CPU的模式分为一般模式和调试模式一般模式下, CPU从内存读取指令执行调试模式下,CPU首先从调试端口读取指令,通过调试端口可以控制CPU进入和退出调试模式;Host端的调试器可以直接向目标机发送要执行的指令,读写目标机的内存和各种寄存器,控制目标程序的运行以及完成各种复杂的调试功能。40优点不占用目标机的资源调试环境和最终的程序运行环境基本一致支持软
19、硬断点、Trace功能精确计量程序的执行时间提供时序分析功能41缺点调试的实时性不如ICE不支持非干扰调试查询CPU必需具有OCD功能OCD存在各种实现、标准不统一-BDM(Backgroud Debugging Mode)-JTAG(Joint Test Access Group)-OnCE(On Chip Emulation)42交叉开发的缺点硬件支持:必须有目标机或评估板易使用性:普通编程人员不熟悉廉价性:成本高可移植性、可扩展性:不高团队开发:较难开发周期:较长43仿真开发类型 硬件仿真开发- ICE 软件仿真开发-指令级仿真开发-API级仿真开发44软件仿真开发在宿主机上创建一个虚拟
20、的目标机环境,再将应用系统下载到这个虚拟目标机上运行调试。 Simulator一种软件仿真器,相当于在Host上虚拟了一台目标机:仿真处理器仿真外设仿真环境4546软件仿真开发过程 47优点最大好处就是可以不用真正的目标机,可以在目标机环境并不存在的条件下开发目标机上的应用系统,并且在调试时可以利用Host资源提供更详细的错误诊断信息。48缺点和实际的运行环境差别很大设备模拟的局限性较大实时特性较差对Host的资源要求较高对时间特性没有严格要求、没有特殊外设、只需要验证逻辑正确的应用程序。适用范围49嵌入式软件的固化运行 当调试完成之后,程序代码需要被完全烧入到目标板的非易失性存储器中,并且在
21、真实的硬件环境上运行,这个过程叫做固化。分析调试环境与固化环境之间的区别是解决固化问题的关键所在代码定位不同初始化部分不同50嵌入式软件开发工具的发展一直落后于主机或台式机系统的软件开发工具的发展。近几年来,随着市场需求的增长,越来越多具有多窗口图形化用户界面、支持面向对象程序设计方法和C/S体系结构的嵌入式软件开发工具被推上市场。 嵌入式软件开发工具技术 51嵌入式软件工具技术目前的发展状况:向着开放式、集成化的方向发展。以C/S体系结构为基础,具有运行系统的无关性、连接的无关性、开放的软件接口和环境一致性等特点。具有系统设计、可视化建模、仿真和验证功能。自动生成代码和文档。开发工具可根据系
22、统模型生成C/C+/JAVA语言的源代码,提供完善的、标准化的软件说明文档。具有更高的灵活性。嵌入式系统开发商需要拥有极其灵活的产品架构和开发工具,配备适应于特定行业的工具、操作系统和中间件。嵌入式软件开发工具技术 52嵌入式系统开发模式 最大特点:软硬件综合开发。 原因:嵌入式产品是软硬件的结合体 软件针对硬件开发、固化53嵌入式系统开发过程 54系统总体设计55硬件设计制作56软件设计实现57一种嵌入式多任务软件的开发方法 DARTS方法DARTS: 结构化分析/结构化设计的方法,给出了划分任务的方法以及定义任务间接口的机制.嵌入式实时软件系统的生命周期:需求分析与说明系统设计任务划分原则
23、定义任务间接口任务设计模块构筑任务与系统集成58嵌入式实时软件系统的生命周期需求分析与详细说明系统设计任务分解, 定义任务间接口关系任务设计按模块方式设计每个任务,定义模块间接口模块构筑完成每个模块的详细设计、编码和单元测试任务与系统集成系统测试59实 例 说 明60解 释控制设备由内部控制器和外部控制面板组成控制器控制六个转轴,并与数字I/O传感器交互作用。转轴和I/O由程序控制该程序由控制面板操作启动执行61控制执行过程按下“上电”按钮,系统进入了上电状态。上电成功后,系统进入了手动状态。此时,操作者可以通过程序选择开关选择程序按下“运行”按钮,则选定的程序开始运行,系统转为运行态。程序运
24、行中如果按下“停止”键,程序被挂起。之后,操作者可以按下“运行”键,使程序恢复执行,也可按下“结束”键,结束程序。按下“结束”键后,系统进入终止态。当程序最终终止执行时,系统返回手动状态。 62需求说明给出系统功能需求(功能,输入,输出)、外部接口需求(如用户界面)、性能以及诸如文件/数据库安全等其它要求。实时系统常用状态变迁图描述系统,为此需先设计状态变迁图,此图在设计阶段被逐步细化。需求分析与说明63需求分析与说明64系 统 设 计系统设计说明该系统如何被分解成多个任务, 如何定义任务间的关系任务划分方法 DARTS(结构化分析/结构化设计)设计方法,此方法给出了划分任务的方法以及定义任务
25、间接口的机制。65DARTS设计方法 数据流分析每个数据流图都包含:变换圈, 表示系统完成的功能箭头表示变换间的数据流动 数据存储区表示数据的存储场所数据字典定义了数据流和数据存储区所包含的数据项66图 机器人控制数据流图程序面板输入有效性检查解释程序各语句读传感器处理面板输入 处理I/O指令处理动作命令向传感器输出输出动作轴数据接收确认输出到面板 输入轴控制器读面板 输入按下按钮面板输入 有效的面板输入 运行开始 结束动作命令动作确认I/O命令传感器值输入传感器输入传感器输出输出面板输出显示灯 运行 停止重启动轴块轴确认轴输入轴输出动作块67DARTS设计方法划分任务 识别出系统所有功能和它
26、们之间的数据流后,下一步将涉及怎样在数据流图上确定出并发的任务。划分任务原则I/O 依赖性 时间关键性的功能计算量大的功能功能内聚(Functional relations)时间内聚(Temporal relations)周期执行的功能(Cyclic executing function)68 I/O 依赖性 DeviceI/O Task App.Task在系统中创建多个与I/O设备相当数目I/O任务I/O任务只实现与设备相关的代码I/O任务的执行只受限于I/O设备的速度,而不是处理器在任务中分离设备相关性69 时间关键性将有时间关键性(deadline)的功能分离出来,组成独立运行的任务;赋
27、予这些任务高的优先级,以满足对时间的需要。event 1event 2Task 1Task 2Task 3Task 3deadline 1deadline 270计算功能占用CPU的时间多,捆绑计算功能成任务,赋予它们较低优先级运行, 能被高优先级的任务抢占,消耗CPU的剩余时间;保持高优先级的任务是轻量级的;多个计算任务可安排成同优先级,按时间片循环轮转。 计算内聚event 1event 2Task1Task2 event 2Task2BackgroundComputation Task71功能内聚各紧密相关的功能,不能分别对应不同的任务,将这些紧密相关的功能组,组成一个任务, 使各功能共
28、享资源或相同事件的驱动。组成一个任务会减少通信的开销,而且不仅保证了模块级的功能内聚, 也保证了任务级的功能内聚。event 1F1(x) + F3(x)event 2F2(y)72时间内聚将在同一时间内完成的各功能,即使这些功能是不相关的,组成功能组,形成一个任务 功能组的各功能是由相同的外部事件驱动的(如:时钟等),这样每次任务接收到一个事件, 它们都可以同时执行。 组成一个任务,减少了系统的开销Clock TickeventF1(x) + F2(y)+F3(z)F4(x)+F5(y)73周期执行功能将在相同周期内执行的各功能组成一个任务频率高的赋予高优先级F1F2F110HZ10HZ15HZ15HZF27475定义任务接口任务间通信模块消息通信模块信息隐藏模块 76任务同步模块定义任务接口7778 任务设计 任务体系结构 任务执行流程 任务内数据结构 任务内模块间接口 函数设计详细说明系统中各任务的设计考虑和执行流程,以利于程序员编制程序。 79 任务体系结构详细定义任务包含的子模块(或类)和模块间(类之间)的关系。 任务执行流程任务执行流程子模块(类)的执行过程尽可能详细地描述任务的处理过程:直到每个具体的函数调用80 任务设计81 任务设计82函数设计函数描述:给出对该函数的简要描述,说明设计目的、意义以及特点功能:说明该函数应具有的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年高中政治第3单元思想方法与创新意识课时作业18用对立统一的观点看问题含解析新人教版必修4
- 2024-2025学年新教材高中历史第三单元辽宋夏金多民族政权的并立与元朝的统一单元评估课后作业含解析新人教版必修中外历史纲要上
- 2025年度盘扣建筑构件质量控制检测合同4篇
- 2025年度汽车制造企业总经理聘请及智能制造合同范本4篇
- 二零二五年度智慧社区安防系统安装施工合同范本3篇
- 二零二五年度窗帘产业园区建设与管理合同3篇
- 二零二五年度四人合伙企业股权投资合同3篇
- 2025年度餐饮多人合伙经营营销推广合同范本3篇
- 二手房购买补充合同:2024年定制版版B版
- 二零二五年度2025版二手设备存量买卖服务协议2篇
- 产品共同研发合作协议范本5篇
- 风水学的基础知识培训
- 2024年6月高考地理真题完全解读(安徽省)
- 吸入疗法在呼吸康复应用中的中国专家共识2022版
- 1-35kV电缆技术参数表
- 信息科技课程标准测(2022版)考试题库及答案
- 施工组织设计方案针对性、完整性
- 2002版干部履历表(贵州省)
- DL∕T 1909-2018 -48V电力通信直流电源系统技术规范
- 2024年服装制版师(高级)职业鉴定考试复习题库(含答案)
- 门诊部缩短就诊等候时间PDCA案例-课件
评论
0/150
提交评论