嵌入式软件开发流程

上传人:re****.1 文档编号:564356695 上传时间:2023-07-04 格式:DOCX 页数:15 大小:528.83KB
返回 下载 相关 举报
嵌入式软件开发流程_第1页
第1页 / 共15页
嵌入式软件开发流程_第2页
第2页 / 共15页
嵌入式软件开发流程_第3页
第3页 / 共15页
嵌入式软件开发流程_第4页
第4页 / 共15页
嵌入式软件开发流程_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《嵌入式软件开发流程》由会员分享,可在线阅读,更多相关《嵌入式软件开发流程(15页珍藏版)》请在金锄头文库上搜索。

1、嵌入式软件开发流程一、嵌入式软件开发流程1.1 嵌入式系统开发概述由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3 大部分,其总 体流程图如图1.1 所示。件腹艮很氷/ + 侵件菲轴很计毎件详酣谡计4+ 、i丿图 1.1 嵌入式系统开发流程图 在系统总体开发中,由于嵌入式系统与的硬件和品的 . . 一 -与硬件件才能实现,因此需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬 软件都可以实现的功能,就需要在成本和性能上做出抉择。往往通过硬件实现会增加产 成本,但能大大提高产品的性能和可靠性

2、。再次,开发环境的选择对于嵌入式系统的食密,往往某些需求只能通过特定入式操作系统的选择以及开发工具的选择等。的影响。这里的开发环境包括嵌 发成本和进度限制较大的产品可以选择嵌入式Linux,对实时性要求非常高的产品可以选择Vxworks等。1.2 嵌入式软件开发概述嵌入式软件开发总体流程为图4.15 中“软件设计实现”部分所示,它同通用计算机软件开 发一样,分为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。其中嵌入式 软件需求分析与硬件的需求分析合二为一,故没有分开画出。 由于在嵌入式软件开发的工具非常多,为了更好地帮助读者选择开发工具,下面首先对嵌入 式软件开发过程中所使用的工具

3、做一简单归纳。嵌入式软件的开发工具根据不同的开发过程而划分,比如在需求分析阶段,可以选择IBM的Rational Rose等软件,而在程序开发阶段可以采用CodeWarrior(下面要介绍的ADS 的一个工具)等,在调试阶段所用的Multi-ICE等。同时,不同的嵌入式操作系统往往会有 配套的开发工具,比如Vxworks有集成开发环境Torn ado, Win dowsCE的集成开发环境 WindowsCE Platform等。此外,不同的处理器可能还有对应的开发工具,比如ARM的常用 集成开发工具ADS、IAR和RealView等。在这里,大多数软件都有比较高的使用费用,但 也可以大大加快产

4、品的开发进度,用户可以根据需求自行选择。图4.16 是嵌入式开发的不 同阶段的常用软件。&i:nXt:RitiiiLilRua JLRealTiiLe _iJbj&ctGmij _ Elc莎边r- TAU-Tizi adi:i -Lauib lT 0 UL _PFLEM+ -Sft CtFL -WiiCE Plitf.im -BuilijrCodeVSnri.T -Kny DEtuggi-LogEcop -MHti-ICE-口 ”私盟iraaent Software CodiizTestHw显如I:好逗Tl图 1.2 嵌入式开发不同阶段的常用软件嵌入式系统的软件开发与通常软件开发的区别主要在于

5、软件实现部分,其中又可以分为编译和调试两 部分,下面分别对这两部分进行讲解。1交叉编译 嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上 执行的代码。在第3章中已经提到,编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的 机器代码,由于不同的体系结构有不同的指令系统。因此,不同的 CPU 需要有相应的编译器,而交叉编译 就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。要注意的是,编译器本身 也是程序,也要在与之对应的某一个CPU平台上运行。嵌入式系统交叉编译环境如图4.17所示。图 4.17 交叉编译环境小知识 与交叉

6、编译相对应,平时常用的编译称为本地编译。这里一般将进行交叉编译的主机称为宿主机,也就是普通的通用PC,而将程序实际的运行环境称为目 标机,也就是嵌入式系统环境。由于一般通用计算机拥有非常丰富的系统资源、使用方便的集成开发环境 和调试工具等,而嵌入式系统的系统资源非常紧缺,无法在其上运行相关的编译工具,因此,嵌入式系统 的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。由于编译的过程包括编译、链接等几个阶段,因此,嵌入式的交叉编译也包括交叉编译、交叉链接等 过程,通常ARM的交叉编译器为arm-elf-gcc、arm-linux-gcc等,交叉链接器为arm-elf-ld、arm-l

7、inux-ld 等,交叉编译过程如图4.18 所示。图 4.18 嵌入式交叉编译过程2交叉调试 嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式 软件开发过程中的交叉调试与通用软件开发过程中的调试方式有很大的差别。在常见软件开发中,调试器 与被调试的程序往往运行在同一台计算机上,调试器是一个单独运行着的进程,它通过操作系统提供的调 试接口来控制被调试的进程。而在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉 调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌 入式操作系统中,调试器和被调试进程通过

8、串口或者网络进行通信,调试器可以控制、访问被调试进程, 读取被调试进程的当前状态,并能够改变被调试进程的运行状态。嵌入式系统的交叉调试有多种方法,主要可分为软件方式和硬件方式两种。它们一般都具有如下一些 典型特点。 调试器和被调试进程运行在不同的机器上,调试器运行在PC机(宿主机),而被调试的进程 则运行在各种专业调试板上(目标板)。 调试器通过某种通信方式(串口、并口、网络、 JTAG 等)控制被调试进程。 在目标机上一般会具备某种形式的调试代理,它负责与调试器共同配合完成对目标机上运行 着的进程的调试。这种调试代理可能是某些支持调试功能的硬件设备,也可能是某些专门的调试 软件(如 gdbs

9、erver)。目标机可能是某种形式的系统仿真器,通过在宿主机上运行目标机的仿真软件,整个调试过程可以在一台计算机上运行。此时物理上虽然只有一台计算机,但逻辑上仍然存在着宿主机和目 标机的区别。下面分别就软件调试桩方式和硬件片上调试两种方式进行详细介绍。1)软件方式。软件调试主要是通过插入调试桩的方式来进行的。调试桩方式进行调试是通过目标操作 系统和调试器内分别加入某些功能模块,二者互通信息来进行调试。该方式的典型调试器有 gdb 调试器。gdb的交叉调试器分为GdbServer和GdbClient,其中的GdbServer就作为调试桩在安 装在目标板上,GdbClient就是驻于本地的gdb调

10、试器。它们的调试原理图如图4.19所示。图 4.19 gdb 远程调试原理图gdb 调试的工作流程。 首先,建立调试器(本地gdb)与目标操作系统的通信连接,可通过串口、网 卡、并口等多种方式。 然后,在目标机上开启GdbServer进程,并监听对应端口。 在宿主机上运行调试器gdb,这时,gdb就会自动寻找远端的通信进程,也就 是 GdbServer 的所在进程。 在宿主机上的gdb通过GdbServer请求对目标机上的程序发出控制命令。这时, GdbServer将请求转化为程序的地址空间或目标平台的某些寄存器的访问,这对 于没有虚拟存储器的简单的嵌入式操作系统而言,是十分容易的。 GdbS

11、erver 把目标操作系统的所有异常处理转向通信模块,并告知宿主机上gdb 当前有异常。 宿主机上的gdb向用户显示被调试程序产生了哪一类异常。这样就完成了调试的整个过程。这个方案的实质是用软件接管目标机的全部异常处理及 部分中断处理,并在其中插入调试端口通信模块,与主机的调试器进行交互。但是它只能在 目标机系统初始化完毕、调试通信端口初始化完成后才能起作用,因此,一般只能用于调试 运行于目标操作系统之上的应用程序,而不宜用来调试目标操作系统的内核代码及启动代 码。而且,它必须改变目标操作系统,因此,也就多了一个不用于正式发布的调试版。 (2)硬件调试。相对于软件调试而言,使用硬件调试器可以获

12、得更强大的调试功能和更优秀的调试性能。硬件调试器的基本原理是通过仿真硬件的执行过程,让开发者在调试时可以随时了解到 系统的当前执行情况。目前嵌入式系统开发中最常用到的硬件调试器是ROMMo ni tor、 ROMEmulator、In-CircuitEmulator 和 In-CircuitDebugger。采用ROMMonitor方式进行交叉调试需要在宿主机上运行调试器,在宿主机上运行ROM 监视器(ROMMonitor)和被调试程序,宿主机通过调试器与目标机上的ROM监视器遵循远 程调试协议建立通信连接。ROM监视器可以是一段运行在目标机ROM上的可执行程序,也 可以是一个专门的硬件调试设

13、备,它负责监控目标机上被调试程序的运行情况,能够与宿主 机端的调试器一同完成对应用程序的调试。在使用这种调试方式时,被调试程序首先通过ROM监视器下载到目标机,然后在ROM 监视器的监控下完成调试。优点:ROM监视器功能强大,能够完成设置断点、单步执行、查看寄存器、修改内存 空间等各项调试功能。确定:同软件调试一样,使用 ROM 监视器目标机和宿主机必须建立通信连接。其原理图如图 4.20 所示。图 4.20 ROMMonitor 调试方式采用ROMEmulator方式进行交叉调试时需要使用ROM仿真器,并且它通常被插入到目 标机上的ROM插槽中,专门用于仿真目标机上的ROM芯片。在使用这种调

14、试方式时,被调试程序首先下载到 ROM 仿真器中,因此等效于下载到目 标机的ROM芯片上,然后在ROM仿真器中完成对目标程序的调试。优点:避免了每次修改程序后都必须重新烧写到目标机的ROM中。缺点: ROM 仿真器本身比较昂贵,功能相对来讲又比较单一,只适应于某些特定场合 其原理如图4.21 所示。图 4.21 ROMEmulator 调试方式采用In-CircuitEmulator (ICE)方式进行交叉调试时需要使用在线仿真器,它是目前最 为有效的嵌入式系统的调试手段。它是仿照目标机上的CPU而专门设计的硬件,可以完全 仿真处理器芯片的行为。仿真器与目标板可以通过仿真头连接,与宿主机可以通

15、过串口、并 口、网线或USB 口等连接方式。由于仿真器自成体系,所以调试时既可以连接目标板,也 可以不连接目标板。在线仿真器提供了非常丰富的调试功能。在使用在线仿真器进行调试的过程中,可以按 顺序单步执行,也可以倒退执行,还可以实时查看所有需要的数据,从而给调试过程带来了 很多的便利。嵌入式系统应用的一个显著特点是与现实世界中的硬件直接相关,并存在各种 异变和事先未知的变化,从而给微处理器的指令执行带来各种不确定因素,这种不确定性在 目前情况下只有通过在线仿真器才有可能发现。优点:功能强大,软硬件都可做到完全实时在线调试。缺点:价格昂贵。其原理如图4.22 所示。图 4.22 ICE 调试方式采用In-CircuitDebugger (ICD)方式进行交叉调试时需要使用在线调试器。由于ICE 的价格非常昂贵,并且每种CPU都需要一种与之对应的ICE,使得开发成本非常高。一个 比

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号