嵌入式系统与软件(5)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1嵌入式系统开发方法和环境2嵌入式软件运行流程上电复位系统升级引导/升级系统系统初始化应用初始化多任务应用板级初始化远程升级本地升级3嵌入式软件运行流程上电复位、板级初始化阶段–嵌入式系统上电复位后完成板级初始化工作。–板级初始化程序具有完全的硬件特性,一般采用汇编语言实现。不同的嵌入式系统,板级初始化时要完成的工作具有一定的特殊性,但以下工作一般是必须完成的:CPU中堆栈指针寄存器的初始化。BSS段(BlockStorageSpace表示未被初始化的数据)的初始化。CPU芯片级的初始化:中断控制器、内存等的初始化。4嵌入式软件运行流程系统引导/升级阶段–根据需要分别进入系统软件引导阶段或系统升级阶段。–软件可通过测试通信端口数据或判断特定开关的方式分别进入不同阶段。5系统引导阶段系统引导有几种情况:–将系统软件从NORFlash中读取出来加载到RAM中运行:这种方式可以解决成本及Flash速度比RAM慢的问题。软件可压缩存储在Flash中。–不需将软件引导到RAM中而是让其直接在NorFlash上运行,进入系统初始化阶段。–将软件从外存(如NandFlash、CF卡、MMC等)中读取出来加载到RAM中运行:这种方式的成本更低。嵌入式软件运行流程6嵌入式软件运行流程系统升级阶段–进入系统升级阶段后系统可通过网络进行远程升级或通过串口进行本地升级。–远程升级一般支持TFTP、FTP、HTTP等方式。–本地升级可通过Console口使用超级终端或特定的升级软件进行。7系统初始化阶段–在该阶段进行操作系统等系统软件各功能部分必需的初始化工作,如根据系统配置初始化数据空间、初始化系统所需的接口和外设等。–系统初始化阶段需要按特定顺序进行,如首先完成内核的初始化,然后完成网络、文件系统等的初始化,最后完成中间件等的初始化工作。嵌入式软件运行流程8嵌入式软件运行流程应用初始化阶段–在该阶段进行应用任务的创建,信号量、消息队列的创建和与应用相关的其它初始化工作。多任务应用运行阶段–各种初始化工作完成后,系统进入多任务状态,操作系统按照已确定的算法进行任务的调度,各应用任务分别完成特定的功能。9嵌入式软件开发工具嵌入式软件开发工具的集成度和可用性将直接关系到嵌入式系统的开发效率。根据不同的阶段,嵌入式软件开发工具可以分为:-需求分析工具(RequirementAnalysisTools)-软件设计工具(SoftwareDesignTools)-编程、调试工具(CodingTools)-测试工具(TestingTools)-配置管理工具、维护工具等10嵌入式软件的开发可以分为以下几种:–编写简单的板级测试软件,主要是辅助硬件的调试)–开发基本的驱动程序–开发特定嵌入式操作系统的驱动程序(板级支持包)–开发嵌入式系统软件,如:嵌入式操作系统等–开发应用软件嵌入式软件开发工具11从以上嵌入式软件开发分类来看,嵌入式软件开发工具可以分为:–与嵌入式OS相关的开发工具,用于开发基于嵌入式OS的应用和部分的驱动程序等。–与嵌入式OS无关的开发工具,用于开发基本的驱动程序、辅助硬件调试,系统软件的开发等。嵌入式软件开发工具12主要嵌入式软件开发工具产品RequirementAnalysisSoftwareDesignCodingTestReleasePhasesTAUObjectGeodeRationalRoseRealTimeRhapsodyTornadoLambdaTOOLpRISM+SpectraWinCEPlatformBuilderCodeWarriorXrayDebuggerLogiscopeCodeTEST13集成开发环境国外集成开发环境–WindRiver的Tornado–ISI公司(目前已被WindRiver兼并)的pRISM+–Microtec的Spectra–MS的VC++嵌入式Toolkit等–GNU的GCC/GDB等系列工具国内集成开发环境:CoretekLambdaTools14嵌入式软件的交叉开发环境交叉开发环境是指用于嵌入式软件开发的所有工具软件的集合,一般包括文本编辑器、交叉编译器、交叉调试器、仿真器、下载器等工具。交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。15目标机硬件目标机应用系统  —应用软件  —应用中间件  —目标机OS宿主机硬件宿主机OS调试代理运行库宿主机开发环境  —编辑  —编译  —连接  —调试DownLoad运行平台Target开发平台Host嵌入式软件的交叉开发环境16宿主机:开发平台–建立在硬件资源丰富的PC机(或者工作站)上,有通用操作系统等系统软件提供软件开发支持,应用程序的编辑、编译、链接等过程都是在Host上完成的;目标机:运行平台–建立在硬件资源相对有限的嵌入式系统硬件平台上,除了调试代理没有其他用于嵌入式软件开发的软件资源;在开发过程中,目标机端需接收和执行宿主机发出的各种命令如设置断点、读内存、写内存等,将结果返回给宿主机,配合宿主机各方面的工作。宿主机和目标机的差别17物理连接和逻辑连接–物理连接是指宿主机与目标机上的一定物理端口通过物理线路连接在一起,连接方式主要有三种:串口、以太口和OCD(OnChipDebug)方式如JTAG、BDM等。–物理连接是逻辑连接的基础。–逻辑连接指宿主机与目标机间按某种通信协议建立起来的通信连接,目前逐步形成了一些通信协议的标准。嵌入式软件的交叉开发环境18嵌入式软件实现阶段的开发过程设计完成后,嵌入式软件的开发进入实现阶段,在这个阶段的开发可分为三个步骤:生成、调试和固化运行。–软件的生成主要是在宿主机上进行,开发人员利用各种工具完成对应用程序的编辑、交叉编译和链接工作,生成可供调试或固化的目标程序。–调试是通过交叉调试器完成软件的调试工作。调试完成后还需进行必要的测试工作,测试完成后进入到最后的固化运行阶段。–固化运行是先用一定的工具将应用程序固化到目标机上,然后启动目标机,在没有任何工具干预的情况下应用程序能自动地启动运行。19嵌入式软件生成阶段分为三个阶段–源代码程序的编写–编译成各个目标模块–链接成可供下载调试或固化的目标程序编辑器交叉编译器交叉链接器源程序目标模块可供调试/固化库文件20嵌入式软件的调试交叉调试器是指调试程序和被调试程序运行在不同机器上的调试器,调试器通过某种方式能控制目标机上被调试程序的运行方式,并且通过调试器能查看和修改目标机上的内存、寄存器以及被调试程序中的变量等。21交叉调试非交叉调试调试器和被调试程序运行在不同的计算机上调试器和被调试程序运行在同一台计算机上可独立运行,无需操作系统支持需要操作系统的支持被调试程序的装载由调试器完成被调试程序的装载由专门的Loader程序完成需要通过外部通信的方式来控制被调试程序不需要通过外部通信的方式来控制被调试程序可以直接调试不同指令集的程序只能直接调试相同指令集的程序22嵌入式软件的调试交叉调试方式–RomMonitor方式–RomEmulator方式–InCircuitEmulator方式–OnChipDebugging方式Simulator方式(非交叉)最早的嵌入式应用软件调试方法CrashandBurn1)在宿主机上编写代码2)在宿主机上编译应用程序,生成可执行程序3)固化(Burn)到目标机的存储器(EPROM、FLASH等)中4)启动运行,若正确则转到⑺5)不正确则在宿主机上改写代码,纠正错误6)返回⑵重复操作7)固化成功,结束ROMMonitorROMMonitor是运行在目标机上的一段程序,ROM主要指非易失性记忆体,如FLASH等。ROMMonitor负责监控目标机上被调试程序的运行,通常和宿主机段的程序一起完成对应用程序的调试。ROMMonitor预先被固化到目标机的ROM空间,在目标机复位后首先执行的就是ROMMonitor程序,它对目标机进行一些必要的初始化,然后初始化自己的程序空间,最后等待宿主机段的命令。ROMMonitor能完成被调试程序的下载,目标机内存和寄存器的读写,设置断点,单步执行被调试程序等功能,一些高级的ROMMonitor能完成代码分析、系统分析、ROM空间的写操作以及设置各种非常复杂的断点等功能。ROMMonitor调试结构交叉调试器操作系统硬  件硬  件ROMMonitor被调试程序物理连接逻辑连接宿主机通信连接目标机最简便的方法注意:采用本方法,在目标机复位后首先执行的就是ROMMonitor,它对目标机进行一些必要的初始化,然后初始化自己的程序空间,最后就等待HOST端的命令。ROMMonitor能在调试模式下完成程序下载、目标机内存和寄存器的读写、设置断点、单步执行等调试功能。调试过程:1)在宿主机上编写代码2)在宿主机上使用调试模式交叉编译应用程序,生成可执行程序3)将代码下载到目标机上的RAM空间4)用户使用调试器进行交叉调试5)如果正确转⑻6)不正确则在调试器帮助下定位错误7)修改错误,重复⑵~⑺8)将程序固化到目标机上,结束28ROMMonitor的优点简单、方便;支持许多高级的调试功能;可扩展性强;成本低廉;基本上不需要专门的调试硬件支持。ROMMonitor的缺点1)DebugMonitor需要用CrashandBurn方法开发2)当ROMMonitor占用CPU时,应用程序不响应外部的中断,因此不便调试有时间特性的程序。3)要求目标机必须有足够的ROM4)目标机CPU不支持硬件断点时,ROMMonitor无法调试ROM程序和设置数据断点。5)ROMMonitor要占用目标机一定数量的资源,如:CPU资源、RAM资源和通信设备(如:串口、网卡等)资源。6)调试环境不同于实际目标环境ROMEmulator嵌入式应用的开发经常会遭遇缺少目标机环境、缺乏目标机芯片等资源,而开发过程又不可能停止的问题,因此自然就提出了根据不同的应用需要,利用仿真器件、仿真环境进行开发的方法,ROMEmulator是其中之一,其它还有ICE、OCD等。ROMEmulator是一种用于替代目标机上的ROM芯片的设备,即ROM仿真器。利用这种设备,目标机可以没有ROM芯片,但目标机的CPU可以读取ROMEmulator设备上ROM芯片的内容:ROMEmulator设备上的ROM芯片的地址可以实时地映射到目标机的ROM地址空间,从而仿真(Emulation)目标机的ROM。ROMEmulator的调试方式是一种不完全的调试方式:ROMEmulator设备只是为目标机提供ROM芯片和在Target和Host间建立一条高速的通信通道,因此它经常和前面两种调试方式结合起来形成一种完备的调试方式。ROMEmulator的典型应用就是和ROMMonitor的调试方式相结合。目标机可以没有ROM芯片、可以使用ROMEmulator提供的ROM空间且不需要用别的工具来写ROM。•优点目标机必须能支持外部ROM存储空间,而且由于其通常要和ROMMonitor配合使用,因此它拥有ROMMonitor的所有缺点。•缺点内部电路仿真器(ICE)ICE(In-CircuitEmulator)是一种用于替代目标机上CPU的设备,即在线仿真器。它比一般的CPU有更多的引出线,能够将内部的信号输出到被控制的目标机。ICE上的Memory也可以被映射到用户的程序空间,这样即使目标机不存在的情形下也可以进行代码的调试。ICE是用来仿真CPU核心的设备,它可以在不干扰运算器的正常运行情况下,实时的检测CPU的内部工作情况。ICE调试结构宿主开发平台目标平台ICE连接ICE和目标机时,一般是将目标机的CPU取下,而将ICE的CPU引出线接到目标机的CPU插槽。用ICE进行调试时,在Host端运行的调试器通过ICE来控制目标机上运行的程序。功能特点1)同时支持软断点和硬件断点的设置2)设置各种复杂的断点和触发器3)实时跟踪目标程序的运行4)选择

1 / 92
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功