电子科技大学嵌入式软件工程中心嵌入式系统及应用电子科技大学嵌入式软件工程中心第九章嵌入式系统软件的开发电子科技大学嵌入式软件工程中心主要内容•嵌入式软件开发工具•嵌入式系统开发模式•实时软件分析设计方法电子科技大学嵌入式软件工程中心第一节嵌入式软件开发工具嵌入式软件开发工具的分类嵌入式软件的交叉开发环境嵌入式软件实现阶段的开发过程嵌入式软件开发工具的发展趋势电子科技大学嵌入式软件工程中心嵌入式软件开发工具“工欲善其事,必先利其器”嵌入式软件开发工具的集成度和可用性将直接关系到嵌入式系统的开发效率。电子科技大学嵌入式软件工程中心嵌入式软件开发工具的分类嵌入式软件开发阶段电子科技大学嵌入式软件工程中心嵌入式软件开发工具的分类•根据不同的阶段,嵌入式软件开发工具可以分为:–需求分析工具(RequirementAnalysisTools)–软件设计工具(SoftwareDesignTools)–编码、调试工具(CodingTools)–测试工具(TestingTools)–配置管理工具、维护工具等电子科技大学嵌入式软件工程中心主要嵌入式软件开发工具产品RequirementAnalysisSoftwareDesignCodingTestReleasePhasesTAUObjectGeodeRationalRoseRealTimeRhapsodyTornadopRISM+SpectraWinCEPlatformBuilderCodeWarriorXrayDebuggerLogiscopeCodeTESTLambdaTOOL电子科技大学嵌入式软件工程中心嵌入式软件开发工具的分类•嵌入式软件的开发可以分为以下几种:–编写简单的板级测试软件,主要是辅助硬件的调试–开发基本的驱动程序–开发特定嵌入式操作系统的驱动程序(板级支持包)–开发嵌入式系统软件,如:嵌入式操作系统等–开发应用软件电子科技大学嵌入式软件工程中心嵌入式软件开发工具的分类•从以上嵌入式软件开发分类来看,嵌入式软件开发工具可以分为:–与嵌入式OS相关的开发工具,用于开发:•基于嵌入式OS的应用•部分驱动程序等–与嵌入式OS无关的开发工具,用于开发:•基本的驱动程序•辅助硬件调试程序•系统软件等电子科技大学嵌入式软件工程中心嵌入式软件的交叉开发环境•交叉开发环境是指用于嵌入式软件开发的所有工具软件的集合,一般包括:–文本编辑器–交叉编译器–交叉调试器–仿真器–下载器等•交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。电子科技大学嵌入式软件工程中心交叉开发环境目标机硬件目标机应用系统—应用软件—应用中间件—目标机OS宿主机硬件宿主机OS调试代理运行库宿主机开发环境—编辑—编译—连接—调试运行平台Target开发平台Host电子科技大学嵌入式软件工程中心嵌入式软件的交叉开发环境•宿主机(Host):是用于开发嵌入式系统的计算机。一般为PC机(或者工作站),具备丰富的软硬件资源,为嵌入式软件的开发提供全过程支持。•目标机(Target):即所开发的嵌入式系统,是嵌入式软件的运行环境,其硬件软件是为特定应用定制的。•在开发过程中,目标机端需接收和执行宿主机发出的各种命令如设置断点、读内存、写内存等,将结果返回给宿主机,配合宿主机各方面的工作。电子科技大学嵌入式软件工程中心嵌入式软件的交叉开发环境•物理连接和逻辑连接–物理连接是指宿主机与目标机通过物理线路连接在一起,连接方式主要有三种:•串口•以太口•OCD(OnChipDebug)方式,如JTAG、BDM等–物理连接是逻辑连接的基础。–逻辑连接指宿主机与目标机间按某种通信协议建立起来的通信连接,目前逐步形成了一些通信协议的标准。电子科技大学嵌入式软件工程中心嵌入式软件实现阶段的开发过程•设计完成后,嵌入式软件的开发进入实现阶段,可分为三个步骤:生成、调试和固化运行。–软件的生成主要是在宿主机上进行,利用各种工具完成对应用程序的编辑、交叉编译和链接工作,生成可供调试或固化的目标程序。–调试是通过交叉调试器完成软件的调试工作。调试完成后还需进行必要的测试工作。–固化运行是先用一定的工具将应用程序固化到目标机上,然后启动目标机,在没有任何工具干预的情况下应用程序能自动地启动运行。电子科技大学嵌入式软件工程中心嵌入式软件生成阶段•三个过程–源代码程序的编写–编译成各个目标模块–链接成可供下载调试或固化的目标程序编辑器交叉编译器交叉链接器源程序目标模块可供调试/固化库文件电子科技大学嵌入式软件工程中心交叉编译•把在宿主机上编写的高级语言程序编译成可以运行在目标机上的代码,即在宿主机上能够编译生成另一种CPU(嵌入式微处理器)上的二进制程序。电子科技大学嵌入式软件工程中心嵌入式软件的调试•交叉调试器–是指调试程序和被调试程序运行在不同机器上的调试器–调试器通过某种方式能控制目标机上被调试程序的运行方式–通过调试器能查看和修改目标机上的内存、寄存器以及被调试程序中的变量等电子科技大学嵌入式软件工程中心交叉调试非交叉调试调试器和被调试程序运行在不同的计算机上调试器和被调试程序运行在同一台计算机上可独立运行,无需操作系统支持需要操作系统的支持被调试程序的装载由调试器完成被调试程序的装载由专门的Loader程序完成需要通过外部通信的方式来控制被调试程序不需要通过外部通信的方式来控制被调试程序可以直接调试不同指令集的程序只能直接调试相同指令集的程序电子科技大学嵌入式软件工程中心嵌入式软件的调试•交叉调试方式–CrashandBurn–RomMonitor–RomEmulator–InCircuitEmulator–OnChipDebugging•Simulator方式(非交叉)电子科技大学嵌入式软件工程中心CrashandBurn最早的嵌入式应用软件调试方法。在宿主机上编写代码反复检查代码,直到编译通过,生成可执行程序将程序固化(Burn)到目标机的非易失性存储器(E2PROM、FLASH等)中在宿主机上反复检查码,查找问题根源改写代码启动目标机运行,观察程序是否正常工作NY结束电子科技大学嵌入式软件工程中心ROMMonitor•ROMMonitor是被固化且运行在目标机上的一段程序,负责监控目标机上被调试程序的运行,与宿主机端的调试器一起完成对应用程序的调试。•调试器与ROMMonitor之间的通信遵循远程调试协议。电子科技大学嵌入式软件工程中心ROMMonitor调试方式调试器Windows或其它桌面操作系统PC机等硬件嵌入式硬件监控程序(ROMMonitor)被调试程序宿主机目标机逻辑上的连接物理上的连接电子科技大学嵌入式软件工程中心ROMMonitor•在目标机上电或复位后首先执行的就是ROMMonitor,它对目标机进行一些必要的初始化–初始化要求的外围设备,如最基本的串口和用于内存刷新的系统计时器芯片;–初始化用于下载映像的内存系统;–初始化中断控制器和安装中断处理程序。•初始化自己的程序空间•等待宿主机端的命令电子科技大学嵌入式软件工程中心ROMMonitor•ROMMonitor能配合调试器完成:–程序映像下载–对目标机系统内存的读写–对寄存器的读写–设置和清除不同类型的断点–单步执行指令–复位系统–…等调试功能电子科技大学嵌入式软件工程中心ROMMonitor调试过程(1)启动目标机,监控器掌握对目标机的控制,等待和调试器建立连接;(2)启动调试器,并和监控器建立起通信连接;(3)使用调试器将应用程序下载到目标机上的RAM空间中;(4)使用调试器进行调试,发出各种调试命令,监控器解释并执行这些命令,通过目标机上的各种异常来获取对目标机的控制,将命令执行结果回传给调试器;(5)如果程序有问题,在调试器的帮助下定位错误;修改之后再重新编译链接并下载程序,开始新的调试,如此反复直至程序正确运行为止。电子科技大学嵌入式软件工程中心ROMMonitor优点1)提高调试程序的效率,缩短开发周期,降低成本2)简单、方便3)可扩展性强,可支持许多高级调试功能4)成本低廉,不需专门的调试硬件支持5)几乎所有的交叉调试器都支持这种方式电子科技大学嵌入式软件工程中心ROMMonitor缺点1)DebugMonitor需要用CrashandBurn方法开发。2)当ROMMonitor占用CPU时,应用程序不响应外部的中断,因此不便调试有时间特性的程序。3)某些调试功能依赖于CPU硬件的支持(如硬件断点功能)4)ROMMonitor要占用目标机一定数量的资源,如CPU、RAM、ROM和通信设备等资源。5)调试环境不同于实际目标环境。电子科技大学嵌入式软件工程中心仿真开发方式嵌入式应用的开发经常会遭遇缺少目标机环境、缺乏目标机芯片等资源的问题,而开发过程又不可能停止,因此自然就提出了根据不同的应用需要,利用仿真器件、仿真环境进行开发的方法。硬件仿真开发ROMEmulatorICEOCD软件仿真开发电子科技大学嵌入式软件工程中心ROMEmulatorROMEmulator是一种用于替代目标机上的ROM芯片的设备,即ROM仿真器。利用这种设备,目标机可以没有ROM芯片,但目标机的CPU可以读取ROMEmulator设备上ROM芯片的内容:ROMEmulator设备上的ROM芯片的地址可以实时地映射到目标机的ROM地址空间,从而仿真(Emulation)目标机的ROM。电子科技大学嵌入式软件工程中心ROMEmulatorROMEmulator的调试方式是一种不完全的调试方式:ROMEmulator设备只是为目标机提供ROM芯片和在Target和Host间建立一条高速的通信通道,因此它经常和前面两种调试方式结合起来形成一种完备的调试方式。ROMEmulator的典型应用就是和ROMMonitor的调试方式相结合。电子科技大学嵌入式软件工程中心ROMEmulator•优点目标机可以没有ROM芯片、可以使用ROMEmulator提供的ROM空间且不需要用别的工具来写ROM。•缺点目标机必须能支持外部ROM存储空间,而且由于其通常要和ROMMonitor配合使用,因此它拥有ROMMonitor的所有缺点。电子科技大学嵌入式软件工程中心ICE•ICE(In-CircuitEmulator)是一种用于替代目标机上CPU的设备,即在线仿真器。•它比一般的CPU有更多的引出线,能够将内部的信号输出到被控制的目标机。•ICE上的Memory也可以被映射到用户的程序空间,这样即使目标机不存在的情形下也可以进行代码的调试。电子科技大学嵌入式软件工程中心宿主开发平台目标平台ICEICE调试结构•连接ICE和目标机时,一般是将目标机的CPU取下,而将ICE的CPU引出线接到目标机的CPU插槽。•用ICE进行调试时,在Host端运行的调试器通过ICE来控制目标机上运行的程序。ICE电子科技大学嵌入式软件工程中心ICE功能特点•同时支持软断点和硬件断点的设置•设置各种复杂的断点和触发器•实时跟踪目标程序的运行,并可实现选择性的跟踪•支持“TimeStamp”•允许用户设置“Timer”•提供“ShadowRAM”,能在不中断被调试程序的运行下查看内存和变量即非干扰调试查询电子科技大学嵌入式软件工程中心ICE•适用于:1)调试实时的应用系统2)调试设备驱动程序3)对硬件进行功能和性能的测试4)实时性能分析•缺点:1)价格太昂贵,不利于团队开发2)所仿CPU有限电子科技大学嵌入式软件工程中心OCDOCD(OnChipDebugging)是CPU芯片提供的一种调试功能(片上调试),可以认为是一种廉价的ICE功能:OCD的价格只有ICE的20%,但提供了ICE80%的功能。电子科技大学嵌入式软件工程中心OCD调试结构调试器Windows或其它桌面操作系统PC机等硬件被调试程序OCD接口嵌入式硬件宿主机目标机逻辑上的连接物理连接仿真器针形连接器并口、串口或网络接口为特定处理器而建造电子科技大学嵌入式软件工程中心OCD•调试方法1)将CPU的模式分为一