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