




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统开发方法和环境1第1页嵌入式软件运行流程上电复位系统升级引导/升级系统系统初始化应用初始化多任务应用板级初始化远程升级当地升级2第2页嵌入式软件运行流程上电复位、板级初始化阶段嵌入式系统上电复位后完成板级初始化工作。板级初始化程序含有完全硬件特征,普通采取汇编语言实现。不一样嵌入式系统,板级初始化时要完成工作含有一定特殊性,但以下工作普通是必须完成:CPU中堆栈指针存放器初始化。BSS段(BlockStorageSpace表示未被初始化数据)初始化。CPU芯片级初始化:中止控制器、内存等初始化。3第3页嵌入式软件运行流程系统引导/升级阶段依据需要分别进入系统软件引导阶段或系统升级阶段。软件可经过测试通信端口数据或判断特定开关方式分别进入不一样阶段。4第4页系统引导阶段系统引导有几个情况:将系统软件从NORFlash中读取出来加载到RAM中运行:这种方式能够处理成本及Flash速度比RAM慢问题。软件可压缩存放在Flash中。不需将软件引导到RAM中而是让其直接在NorFlash上运行,进入系统初始化阶段。将软件从外存(如NandFlash、CF卡、MMC等)中读取出来加载到RAM中运行:这种方式成本更低。嵌入式软件运行流程5第5页嵌入式软件运行流程系统升级阶段进入系统升级阶段后系统可经过网络进行远程升级或经过串口进行当地升级。远程升级普通支持TFTP、FTP、HTTP等方式。当地升级可经过Console口使用超级终端或特定升级软件进行。6第6页系统初始化阶段
在该阶段进行操作系统等系统软件各功效部分必需初始化工作,如依据系统配置初始化数据空间、初始化系统所需接口和外设等。系统初始化阶段需要按特定次序进行,如首先完成内核初始化,然后完成网络、文件系统等初始化,最终完成中间件等初始化工作。嵌入式软件运行流程7第7页嵌入式软件运行流程应用初始化阶段在该阶段进行应用任务创建,信号量、消息队列创建和与应用相关其它初始化工作。多任务应用运行阶段各种初始化工作完成后,系统进入多任务状态,操作系统按照已确定算法进行任务调度,各应用任务分别完成特定功效。8第8页嵌入式软件开发工具嵌入式软件开发工具集成度和可用性将直接关系到嵌入式系统开发效率。依据不一样阶段,嵌入式软件开发工具能够分为:-
需求分析工具(RequirementAnalysisTools)-
软件设计工具(SoftwareDesignTools)-
编程、调试工具(CodingTools)-
测试工具(TestingTools)-配置管理工具、维护工具等
9第9页嵌入式软件开发能够分为以下几个:编写简单板级测试软件,主要是辅助硬件调试)开发基本驱动程序开发特定嵌入式操作系统驱动程序(板级支持包)开发嵌入式系统软件,如:嵌入式操作系统等开发应用软件嵌入式软件开发工具10第10页从以上嵌入式软件开发分类来看,嵌入式软件开发工具能够分为:与嵌入式OS相关开发工具,用于开发基于嵌入式OS应用和部分驱动程序等。与嵌入式OS无关开发工具,用于开发基本驱动程序、辅助硬件调试,系统软件开发等。嵌入式软件开发工具11第11页主要嵌入式软件开发工具产品RequirementAnalysisSoftwareDesignCodingTestReleasePhasesTAUObjectGeodeRationalRoseRealTimeRhapsodyTornadoLambdaTOOLpRISM+SpectraWinCEPlatformBuilderCodeWarriorXrayDebuggerLogiscopeCodeTEST12第12页集成开发环境国外集成开发环境WindRiverTornadoISI企业(当前已被WindRiver吞并)pRISM+MicrotecSpectraMSVC++嵌入式Toolkit等GNUGCC/GDB等系列工具国内集成开发环境:CoretekLambdaTools13第13页嵌入式软件交叉开发环境交叉开发环境是指用于嵌入式软件开发全部工具软件集合,普通包含文本编辑器、交叉编译器、交叉调试器、仿真器、下载器等工具。交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接基础上建立起逻辑连接。14第14页嵌入式软件交叉开发环境15第15页宿主机:开发平台建立在硬件资源丰富PC机(或者工作站)上,有通用操作系统等系统软件提供软件开发支持,应用程序编辑、编译、链接等过程都是在Host上完成;目标机:运行平台建立在硬件资源相对有限嵌入式系统硬件平台上,除了调试代理没有其它用于嵌入式软件开发软件资源;在开发过程中,目标机端需接收和执行宿主机发出各种命令如设置断点、读内存、写内存等,将结果返回给宿主机,配合宿主机各方面工作。宿主机和目标机差异16第16页物理连接和逻辑连接物理连接是指宿主机与目标机上一定物理端口经过物理线路连接在一起,连接方式主要有三种:串口、以太口和OCD(OnChipDebug)方式如JTAG、BDM等。物理连接是逻辑连接基础。逻辑连接指宿主机与目标机间按某种通信协议建立起来通信连接,当前逐步形成了一些通信协议标准。
嵌入式软件交叉开发环境17第17页嵌入式软件实现阶段开发过程设计完成后,嵌入式软件开发进入实现阶段,在这个阶段开发可分为三个步骤:生成、调试和固化运行。软件生成主要是在宿主机上进行,开发人员利用各种工具完成对应用程序编辑、交叉编译和链接工作,生成可供调试或固化目标程序。调试是经过交叉调试器完成软件调试工作。调试完成后还需进行必要测试工作,测试完成后进入到最终固化运行阶段。固化运行是先用一定工具将应用程序固化到目标机上,然后开启目标机,在没有任何工具干预情况下应用程序能自动地开启运行。18第18页嵌入式软件生成阶段分为三个阶段源代码程序编写编译成各个目标模块链接成可供下载调试或固化目标程序编辑器交叉编译器交叉链接器源程序目标模块可供调试/固化库文件19第19页嵌入式软件调试交叉调试器是指调试程序和被调试程序运行在不一样机器上调试器,调试器经过某种方式能控制目标机上被调试程序运行方式,而且经过调试器能查看和修改目标机上内存、存放器以及被调试程序中变量等。20第20页交叉调试非交叉调试调试器和被调试程序运行在不一样计算机上调试器和被调试程序运行在同一台计算机上可独立运行,无需操作系统支持需要操作系统支持被调试程序装载由调试器完成被调试程序装载由专门Loader程序完成需要经过外部通信方式来控制被调试程序不需要经过外部通信方式来控制被调试程序能够直接调试不一样指令集程序只能直接调试相同指令集程序21第21页嵌入式软件调试交叉调试方式 RomMonitor方式RomEmulator方式 InCircuitEmulator方式 OnChipDebugging方式Simulator方式(非交叉)22第22页最早嵌入式应用软件调试方法CrashandBurn在宿主机上编写代码在宿主机上编译应用程序,生成可执行程序固化(Burn)到目标机存放器(EPROM、FLASH等)中开启运行,若正确则转到⑺不正确则在宿主机上改写代码,纠正错误返回⑵重复操作固化成功,结束23第23页ROMMonitorROMMonitor是运行在目标机上一段程序,ROM主要指非易失性记忆体,如FLASH等。ROMMonitor负责监控目标机上被调试程序运行,通常和宿主机段程序一起完成对应用程序调试。ROMMonitor预先被固化到目标机ROM空间,在目标机复位后首先执行就是ROMMonitor程序,它对目标机进行一些必要初始化,然后初始化自己程序空间,最终等候宿主机段命令。ROMMonitor能完成被调试程序下载,目标机内存和存放器读写,设置断点,单步执行被调试程序等功效,一些高级ROMMonitor能完成代码分析、系统分析、ROM空间写操作以及设置各种非常复杂断点等功效。24第24页ROMMonitor调试结构最简便方法25第25页注意:采取本方法,在目标机复位后首先执行就是ROMMonitor,它对目标机进行一些必要初始化,然后初始化自己程序空间,最终就等候HOST端命令。ROMMonitor能在调试模式下完成程序下载、目标机内存和存放器读写、设置断点、单步执行等调试功效。26第26页调试过程:在宿主机上编写代码在宿主机上使用调试模式交叉编译应用程序,生成可执行程序将代码下载到目标机上RAM空间用户使用调试器进行交叉调试假如正确转⑻不正确则在调试器帮助下定位错误修改错误,重复⑵~⑺将程序固化到目标机上,结束27第27页ROMMonitor优点简单、方便;支持许多高级调试功效;可扩展性强;成本低廉;基本上不需要专门调试硬件支持。28第28页ROMMonitor缺点DebugMonitor需要用CrashandBurn方法开发当ROMMonitor占用CPU时,应用程序不响应外部中止,所以不便调试有时间特征程序。要求目标机必须有足够ROM目标机CPU不支持硬件断点时,ROMMonitor无法调试ROM程序和设置数据断点。ROMMonitor要占用目标机一定数量资源,如:CPU资源、RAM资源和通信设备(如:串口、网卡等)资源。调试环境不一样于实际目标环境29第29页
ROMEmulator嵌入式应用开发经常会遭遇缺乏目标机环境、缺乏目标机芯片等资源,而开发过程又不可能停顿问题,所以自然就提出了依据不一样应用需要,利用仿真器件、仿真环境进行开发方法,ROMEmulator是其中之一,其它还有ICE、OCD等。ROMEmulator是一个用于替换目标机上ROM芯片设备,即ROM仿真器。利用这种设备,目标机能够没有ROM芯片,但目标机CPU能够读取ROMEmulator设备上ROM芯片内容:ROMEmulator设备上ROM芯片地址能够实时地映射到目标机ROM地址空间,从而仿真(Emulation)目标机ROM。30第30页ROMEmulator调试方式是一个不完全调试方式:ROMEmulator设备只是为目标机提供ROM芯片和在Target和Host间建立一条高速通信通道,所以它经常和前面两种调试方式结合起来形成一个完备调试方式。ROMEmulator经典应用就是和ROMMonitor调试方式相结合。31第31页目标机能够没有ROM芯片、能够使用ROMEmulator提供ROM空间且不需要用别工具来写ROM。
优点目标机必须能支持外部ROM存放空间,而且因为其通常要和ROMMonitor配合使用,所以它拥有ROMMonitor全部缺点。缺点32第32页内部电路仿真器(ICE)ICE(In-CircuitEmulator)是一个用于替换目标机上CPU设备,即在线仿真器。它比普通CPU有更多引出线,能够将内部信号输出到被控制目标机。ICE上Memory也能够被映射到用户程序空间,这么即使目标机不存在情形下也能够进行代码调试。ICE是用来仿真CPU关键设备,它能够在不干扰运算器正常运行情况下,实时检测CPU内部工作情况。
33第33页ICE调试结构宿主开发平台目标平台ICE34第34页连接ICE和目标机时,普通是将目标机CPU取下,而将ICECPU引出线接到目标机CPU插槽。用ICE进行调试时,在Host端运行调试器经过ICE来控制目标机上运行程序。35第35页功效特点同时支持软断点和硬件断点设置设置各种复杂断点和触发器实时跟踪目标程序运行选择性跟踪程序运行支持“TimeStamp”允许用户设置“Timer”
提供“ShadowRAM”,能在不中止被调试程序运行下查看内存和变量即非干扰调试查询36第36页调试实时应用系统调试设备驱动程序对硬件进行功效和性能测试实时性能分析应用:价格太昂贵,不利于团体开发所仿CPU有限缺点:37第37页OCDOCD(OnChipDebugging)是CPU芯片提供一个调试功效(片上调试),在处理器内部嵌入额外控制模块,能够认为是一个廉价ICE功效:OCD价格只有ICE20%,但提供了ICE80%功效。最初OCD是一个仿ROMMonitor结构,是将ROMMonitor功效以微码形式表现。以后OCD彻底屏弃了这种ROMMonitor结构,而采取了两级模式思绪,即:将CPU模式分为普通模式和调试模式。38第38页OCD调试结构39第39页OCD调试方法将CPU模式分为普通模式和调试模式普通模式下,CPU从内存读取指令执行调试模式下,CPU首先从调试端口读取指令,经过调试端口能够控制CPU进入和退出调试模式;Host端调试器能够直接向目标机发送要执行指令,读写目标机内存和各种存放器,控制目标程序运行以及完成各种复杂调试功效。40第40页优点不占用目标机资源调试环境和最终程序运行环境基本一致支持软硬断点、Trace功效准确计量程序执行时间提供时序分析功效41第41页缺点调试实时性不如ICE不支持非干扰调试查询CPU必需含有OCD功效OCD存在各种实现、标准不统一--BDM(BackgroudDebuggingMode)--JTAG(JointTestAccessGroup)--OnCE(OnChipEmulation)42第42页交叉开发缺点硬件支持:必须有目标机或评定板易使用性:普通编程人员不熟悉廉价性:成本高可移植性、可扩展性:不高团体开发:较难开发周期:较长43第43页仿真开发类型硬件仿真开发--ICE软件仿真开发--指令级仿真开发--API级仿真开发44第44页软件仿真开发在宿主机上创建一个虚拟目标机环境,再将应用系统下载到这个虚拟目标机上运行/调试。
Simulator一个软件仿真器,相当于在Host上虚拟了一台目标机:仿真处理器仿真外设仿真环境45第45页46第46页软件仿真开发过程47第47页优点最大好处就是能够不用真正目标机,能够在目标机环境并不存在条件下开发目标机上应用系统,而且在调试时能够利用Host资源提供更详细错误诊疗信息。48第48页缺点和实际运行环境差异很大设备模拟不足较大实时特征较差对Host资源要求较高对时间特征没有严格要求、没有特殊外设、只需要验证逻辑正确应用程序。适用范围49第49页嵌入式软件固化运行当调试完成之后,程序代码需要被完全烧入到目标板非易失性存放器中,而且在真实硬件环境上运行,这个过程叫做固化。分析调试环境与固化环境之间区分是处理固化问题关键所在代码定位不一样初始化部分不一样50第50页嵌入式软件开发工具发展一直落后于主机或台式机系统软件开发工具发展。近几年来,伴随市场需求增加,越来越多含有多窗口图形化用户界面、支持面向对象程序设计方法和C/S体系结构嵌入式软件开发工具被推上市场。嵌入式软件开发工具技术
51第51页嵌入式软件工具技术当前发展情况:向着开放式、集成化方向发展。以C/S体系结构为基础,含有运行系统无关性、连接无关性、开放软件接口和环境一致性等特点。含有系统设计、可视化建模、仿真和验证功效。自动生成代码和文档。开发工具可依据系统模型生成C/C++/JAVA语言源代码,提供完善、标准化软件说明文档。含有更高灵活性。嵌入式系统开发商需要拥有极其灵活产品架构和开发工具,配置适应于特定行业工具、操作系统和中间件。嵌入式软件开发工具技术52第52页嵌入式系统开发模式最大特点:软硬件综合开发。原因:嵌入式产品是软硬件结合体软件针对硬件开发、固化53第53页嵌入式系统开发过程54第54页系统总体设计55第55页硬件设计制作56第56页软件设计实现57第57页一个嵌入式多任务软件开发方法
——DARTS方法DARTS:
结构化分析/结构化设计方法,给出了划分任务方法以及定义任务间接口机制.嵌入式实时软件系统生命周期:需求分析与说明系统设计任务划分标准定义任务间接口任务设计模块构筑任务与系统集成58第58页嵌入式实时软件系统生命周期需求分析与详细说明系统设计任务分解,定义任务间接口关系任务设计按模块方式设计每个任务,定义模块间接口模块构筑完成每个模块详细设计、编码和单元测试任务与系统集成系统测试59第59页实例说明60第60页解释控制设备由内部控制器和外部控制面板组成控制器控制六个转轴,并与数字I/O传感器交互作用。转轴和I/O由程序控制该程序由控制面板操作开启执行61第61页控制执行过程按下“上电”按钮,系统进入了上电状态。上电成功后,系统进入了手动状态。此时,操作者能够经过程序选择开关选择程序按下“运行”按钮,则选定程序开始运行,系统转为运行态。程序运行中假如按下“停顿”键,程序被挂起。之后,操作者能够按下“运行”键,使程序恢复执行,也可按下“结束”键,结束程序。按下“结束”键后,系统进入终止态。当程序最终终止执行时,系统返回手动状态。62第62页需求说明给出系统功效需求(功效,输入,输出)、外部接口需求(如用户界面)、性能以及诸如文件/数据库安全等其它要求。实时系统惯用状态变迁图描述系统,为此需先设计状态变迁图,此图在设计阶段被逐步细化。需求分析与说明63第63页需求分析与说明64第64页系统设计系统设计说明该系统怎样被分解成多个任务,怎样定义任务间关系任务划分方法–DARTS(结构化分析/结构化设计)设计方法,此方法给出了划分任务方法以及定义任务间接口机制。65第65页DARTS设计方法
数据流分析每个数据流图都包含:变换圈,表示系统完成功效箭头表示变换间数据流动数据存放区表示数据存放场所数据字典定义了数据流和数据存放区所包含数据项66第66页图机器人控制数据流图程序面板输入有效性检验解释程序各语句读传感器处理面板输入处理I/O指令处理动作命令向传感器输出输出动作轴数据接收确认输出到面板输入轴控制器读面板输入按下按钮面板输入有效面板输入运行开始结束动作命令动作确认I/O命令传感器值输入传感器输入传感器输出输出面板输出显示灯运行停顿重开启轴块轴确认轴输入轴输出动作块67第67页DARTS设计方法划分任务识别出系统全部功效和它们之间数据流后,下一步将包括怎样在数据流图上确定出并发任务。划分任务标准I/O依赖性时间关键性功效计算量大功效功效内聚(Functionalrelations)时间内聚(Temporalrelations)周期执行功效(Cyclicexecutingfunction)68第68页I/O依赖性DeviceI/OTask
App.Task在系统中创建多个与I/O设备相当数目I/O任务I/O任务只实现与设备相关代码I/O任务执行只受限于I/O设备速度,而不是处理器在任务中分离设备相关性69第69页时间关键性将有时间关键性(deadline)功效分离出来,组成独立运行任务;赋予这些任务高优先级,以满足对时间需要。event1event2Task1Task2Task3Task3deadline1deadline270第70页计算功效占用CPU时间多,捆绑计算功效成任务,赋予它们较低优先级运行,能被高优先级任务抢占,消耗CPU剩下时间;保持高优先级任务是轻量级;多个计算任务可安排成同优先级,按时间片循环轮转。计算内聚event1event2Task1Task2event2Task2BackgroundComputationTask71第71页功效内聚各紧密相关功效,不能分别对应不一样任务,将这些紧密相关功效组,组成一个任务,使各功效共享资源或相同事件驱动。组成一个任务会降低通信开销,而且不但确保了模块级功效内聚,也确保了任务级功效内聚。event1F1(x)+F3(x)event2F2(y)72第72页时间内聚将在同一时间内完成各功效,即使这些功效是不相关,组成功效组,形成一个任务功效组各功效是由相同外部事件驱动(如:时钟等),这么每次任务接收到一个事件,它们都能够同时执行。组成一个任务,降低了系统开销ClockTickeventF1(x)+F2(y)+F3(z)F4(x)+F5(y)73第73页周期执行功效将在相同周期内执行各功效组成一个任务频率高赋予高优先级F1F2F110HZ10HZ15HZ15HZF274第74页75第75页定义任务接口任务间通信模块消息通信模块信息隐藏模块
76第76页任务同时模块定义任务接口77第77页78第78页任务设计任务体系结构任务执行流程任务内数据结构任务内模块间接口函数设计详细说明系统中各任务设计考虑和执行流程,以利于程序员编制程序。79第79页任务体系结构详细定义任务包含子模块(或类)和模块间(类之间)关系。任务执行流程任务执行流程子模块(类)执行过程尽可能详细地描述任务处理过程:直到每个详细函数调用80第80页任务设计81第81页任务设计82第82页函数设计函数描述:给出对该函数简明描述,说明设计目标、意义以及特点功效:说明该函数应含有功效,可采取IPO图(输入一处理一输出图)形式性能:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳动合同范本海南
- 2025年硬质橡胶及其制品合作协议书
- 2025年孕产妇保健项目建议书
- 合伙酒店转让合同范本
- epc工程总价合同范本
- 信贷机构合同范本
- 创业魔芋种植合作合同范本
- 合伙奶茶协议合同范本
- 低价手套租赁合同范本
- 南宁个人租房合同范本
- 大班综合《要是你给老鼠玩手机》课件
- DB37-T 5026-2022《居住建筑节能设计标准》
- DN900钢管dn800E管定向钻穿越京杭大运河施工方案
- 全套IECQ QC080000-2017 有害物质过程管理体系程序文件
- 冀教版三年级数学下册《第二单元第2课时 两位数乘两位数(进位)的乘法》教学课件PPT小学公开课
- 成都市入户申请表
- 主题班会:预防流行性感冒课件
- 对外援助成套项目管理办法(试行)
- 铁路工程预算定额标准
- 管道吹扫、试压检验批质量验收记录表
- 教学教案、作业、记录检查记录表
评论
0/150
提交评论