您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 9嵌入式软件开发环境
课程名称:嵌入式系统理论及应用muchunyang@126.com主讲:穆春阳电气信息工程学院Agenda:9.1概述9.2交叉开发技术9.3仿真开发技术9.4开发环境提供的主要工具9.5GNU的嵌入式开发环境9.6WindRiverSystem公司开发的集成开发环境9.7仿真开发工具ARMulatormuchunyang@126.com29.1概述1、嵌入式软件的特性嵌入式系统以应用为中心,嵌埋在系统运行环境中,软件特性嵌入式软件开发与通用的软件开发具有许多共同点:9具有相同的开发过程:例如,系统定义、可行性分析、需求分析、概要设计、详细设计、编程实现、软件测试、软件维护等阶段;9具有类似的开发工具:例如,相同分析工具、编程开发工具、软件调试和测试工具、软件维护工具等;9具有类似的辅助工具:例如,项目管理工具、版本管理工具等。嵌入式软件系统通常只为软件提供运行环境,而不提供也没必要提供软件的开发环境;嵌入式软件具有专用性,只能为指定的、更大的系统工作,无法运行于其他系统中;嵌入式软件的正确性不仅由系统功能和行为特性决定,还依赖于系统的时间特性(或时间约束):9出于不同的考虑,嵌入式软件的时间约束既可以针对嵌入式软件本身也可以针对其中的任务。muchunyang@126.com39.1概述2、嵌入式软件开发及其支持工具的特点嵌入式软件特性给其开发提出了新的挑战,其特点:需要协调管理特殊的硬件资源;软件具有可配置/裁剪特性;需要交叉编译环境;需要交叉调试环境;需要交叉测试环境;需要软件固化工具。与通用软件相比,嵌入式软件开发工具的特殊性主要体现在软件编译、调试等软件编码实现和测试方面。课程名称:嵌入式系统理论及应用muchunyang@126.com主讲:穆春阳电气信息工程学院Agenda:9.1概述9.2交叉开发技术9.3仿真开发技术9.4开发环境提供的主要工具9.5GNU的嵌入式开发环境9.6WindRiverSystem公司开发的集成开发环境9.7仿真开发工具ARMulatormuchunyang@126.com59.2交叉开发技术0、交叉开发(CrossDeveloping)模式大多数嵌入式系统软硬件资源是按照系统运行时的要求配置的交叉开发的模式:①开发系统是建立在软硬件资源均比较丰富的PC机或工作站(一般称为宿主机或Host)上,嵌入式软件的编辑、编译、连接等过程在宿主机上完成;②嵌入式软件的昀终运行平台是嵌入式设备(一般称为目标机或Target),与宿主机有很大差别的;③宿主机与目标机通过串口、并口、网口或其他通信端口相连,嵌入式软件的调试和测试是由宿主机和目标机之间的协作来共同完成。muchunyang@126.com69.2交叉开发技术0、交叉开发(CrossDeveloping)模式宿主机与目标机的主要差别硬件的差别:昀主要是二者的处理器不同。软件环境的差异①在宿主机上,通用操作系统等系统软件可以对软件开发提供支持;②在目标机上,除了调试代理外几乎没有其他用于嵌入式软件开发的软件资源,其上的嵌入式操作系统仅作为嵌入式软件运行时的支撑。muchunyang@126.com79.2交叉开发技术1、常用的交叉开发方法交叉开发方法的发展现状交叉开发的发展过程实质上就是嵌入式应用开发技术发展的过程;交叉开发技术随嵌入式应用开发技术的发展,其开发方法不断更新,开发工具的功能越来越强,性价比越来越高;但是,在实际软件开发中,各种交叉开发方法都有一定的使用范围,没有一种方式可以适用所有的嵌入式软件开发;在同一个嵌入式软件的不同开发阶段也经常采用不同的开发方式。常见的交叉开发方法,如:9CrashandBurn方式;9ROMMonitor方式:存储器监控方式;9ROMEmulator方式:存储器仿真器方式;9ICE方式:在线仿真器(InCircuitEmulator)方式;9OCD方式:片上调试器(OnChipDebugging)方式。muchunyang@126.com89.2交叉开发技术1、常用的交叉开发方法CrashandBurn方式基本思想:①在Host上编写代码;②在Host上编译应用程序,生成可执行程序;③固化(Burn)到Target的非易失存储器(如ROM、EPROM、Flash)中;④启动运行,若正常则转到⑦;⑤若不正确(Crash),则根据目标板上的信号显示,估计错误位置,改写代码,纠正错误;⑥返回②重复操作;⑦固化完成。早期的嵌入式软件开发,大多数采用此种方式,严格讲不属于交叉开发;这种手工作坊式的开发方式,所采用的工具只有处理器厂商提供的专用编译器或汇编器,以及固化用的烧写设备;软件调试借助用户编写的、嵌在应用程序中的调试代码实现,支持的功能很有限,效率地下;目前,仅在较小规模的嵌入式系统开发时采用。muchunyang@126.com99.2交叉开发技术1、常用的交叉开发方法ROMMonitor方式即存储器监控的开发方式;基本思想:①将一段称为ROMMonitor的程序固化在目标机上,负责监控目标机上被调试程序的运行;②ROMMonitor程序与宿主机的调试程序一起完成对应用程序的调试;ROMMonitor方式的基本结构如下图所示:muchunyang@126.com109.2交叉开发技术1、常用的交叉开发方法ROMMonitor方式目前昀广泛使用的调试方法之一,几乎所有的主流交叉开发环境都支持。ROMMonitor程序的工作过程:①被预先固化到Target的ROM空间;②在Target复位后首先被执行,对Target进行必要的初始化;③然后,初始化自身的程序空间;④昀后,等待Host的命令。ROMMonitor程序的主要功能:①它能完成对Target的内存和寄存器的读写、断点设置、单步执行等调试命令;②一些高级的ROMMonitor程序还能统计代码的性能参数。muchunyang@126.com119.2交叉开发技术1、常用的交叉开发方法ROMMonitor方式采用ROMMonitor方式进行嵌入式软件开发的步骤:①编写代码;②编译应用程序;③启动Target,建立Host调试程序与Target上ROMMonitor程序的通信连接;④将可执行目标代码下载到Target上;⑤用户进行跟踪调试;⑥如果一切正常,则转至步骤⑨;⑦若发现错误,则在调试器帮助下定位错误;⑧修改错误,重新编译后返回步骤④;⑨将程序固化到Target上。ROMMonitor方式的优点①用户可以实时控制Target上的内存单元、寄存器、断点设置等,调试效率明显提高,可以缩短产品开发周期;②Target与Host通信可以借助Target自身的串口、网口等,不需专门的调试硬件支持,成本低。muchunyang@126.com129.2交叉开发技术1、常用的交叉开发方法ROMMonitor方式ROMMonitor方式的缺点①ROMMonitor程序驻留在Target内存中,要求Target有足够的内存空间,而且导致Target调试时的内存使用与运行时不一致,从而可能隐藏一些内存使用方面的软件错误;②ROMMonitor程序是在Target上运行,可以导致Target调试时的CPU运行与正常情况下的运行不一致,如干扰外部事件中断响应等,因此,不便用来调试有时间特性的软件;③ROMMonitor程序与Host通信要占用Target的一个通信端口,因此无法调试该端口相关的代码;④若Target的CPU不支持硬件断点,则ROMMonitor程序无法调试设置数据断点;⑤调试时,ROMMonitor程序负责Target的启动初始化,因此,无法调试系统启动初始化过程,例如,ROMMonitor程序本身的调试无法采用这种方法。muchunyang@126.com139.2交叉开发技术1、常用的交叉开发方法ROMEmulator方式基本思想:①ROMEmulator是一种替代Target上ROM芯片的设备,可以插接到Target的ROM插座上,取代Target的ROM存储器;②用户将被调试程序下载到ROMEmulator中,等效于下载到Target的ROM中;③通过ROMEmulator可以了解Target运行时的内存变化,可以修改内存单元的值,从而实现软件错误的定位。ROMEmulator方式的优点:①可以保证被调试软件的调试版本与昀终发布版本一致;②调试时不需要其他ROM烧写工具。ROMEmulator方式的缺点:①它必须插接到Target的ROM插座上,这要求Target必须支持外接ROM存储空间,因而此方式不适用于Target仅使用CPU片内存储资源的情形;②其功能相对单一,通常与ROMMonitor配合适用,故带有ROMMonitor的所有缺点。muchunyang@126.com149.2交叉开发技术1、常用的交叉开发方法ICE方式嵌入式系统领域使用得昀多、功能昀强大的调试器之一;基本思想:①是一种用于替代Target上CPU的设备;②可以执行Target上CPU的指令;③能够将内部的信号输出到被控制的Target;④ICE上的内存可以被映射到用户的程序空间;⑤即使Target不存在,也可以进行代码调试,而且表现与被代替的Target处理器完全一样;⑥允许用户查看处理器内的数据或代码,并控制CPU的运行。muchunyang@126.com159.2交叉开发技术1、常用的交叉开发方法ICE方式ICE组成:①仿真探头(ProbePod):通过一条电缆与仿真器主板相连;②仿真器主板:包含经过特殊处理的、与被替代CPU完全相同的处理器。muchunyang@126.com169.2交叉开发技术1、常用的交叉开发方法ICE方式采用ICE可完成的特殊调试功能:①同时支持软件断点和硬件断点的设置;②设置各种复杂的断点和触发器;③实时跟踪目标程序的运行,并可实现选择性的跟踪;④支持“TimeStamp”;⑤允许用户设置“Timer”;⑥提供“ShadowRAM”,能在不中断被调试程序运行的情况下查看内存和变量,即非干扰性(不占用运行时钟周期)调试查询。ICE方式的优点:ICE能够检测Target系统硬件的时间响应特性,特别适合调试实时性强的嵌入式软件和设备驱动程序,并进行一些实时性能分析。ICE方式的缺点:①一个ICE一般仅能仿真一个或一个系列的CPU,通用性不高;②随着CPU越来越复杂,对应的ICE技术难度越来越大;③成本高,不适合团队开发,一般仅用于普通调试工具解决不了的场合。muchunyang@126.com179.2交叉开发技术1、常用的交叉开发方法OCD方式为了克服ICE实现越来越困难、降低成本。基本思想:①在CPU芯片内部内嵌一个调试模块,如BDM;②内嵌的调试模块以基于微码的监控器或纯硬件资源的形式存在,包括一些提供给用户的接口,如断点寄存器等;③当满足一定的触发条件时CPU进入某种特殊状态,此时被调试程序停止运行,主机的调试器可以通过处理器外部特设的通信端口,如JTAG,访问各种资源,如寄存器、存储器等,并执行命令。特点:①将ICE提供的实时跟踪和运行控制分开,使用很少的实时跟踪功能被放弃,而大量使用的运行控制被放到Target系统的CPU核内,由一个专门的调试控制逻辑模块来实现,并用一个专用的串行信号接口开放给用户;②OCD可以提供ICE80%的功能,成本还不到ICE的20%实现方法:①仿ROMMonitor的结构,效率低,已被逐渐淘汰;②两级CPU模式,即正常运行模式和调试模式。muchunyang@126.com189.2交叉开发技术1、常用的交叉开发方法OCD方式OCD方式的优点:①性价比高;②不占用Target硬件资源;③调试环境和昀终程序运行环境基本一致,对被调试程序性能影响小,从硬件上监控程序运行状态,免去了软件监控不可避免的开销;④既能调试应用程序,也能调试底层系统软件。OCD方式的
本文标题:9嵌入式软件开发环境
链接地址:https://www.777doc.com/doc-903538 .html