文档介绍:嵌入式软件开发流程
一、嵌入式软件开发流程
  嵌入式系统开发概述
     由嵌入式系统本身特性所影响,嵌入式系统开发与通用系统开发有很大区分。嵌入式系统开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体试器运行在PC机(宿主机),而被调试进程则运行在各种专业调试板上(目的板)。
      调试器通过某种通信方式(串口、并口、网络、JTAG等)限制被调试进程。
      在目的机上一般会具备某种形式调试代理,它负责与调试器共同协作完成对目的机上运行着进程调试。这种调试代理可能是某些支持调试功能硬件设备,也可能是某些特地调试软件(如gdbserver)。
     目的机可能是某种形式系统仿真器,通过在宿主机上运行目的机仿真软件,整个调试过程可以在一台计算机上运行。此时物理上虽然只有一台计算机,但逻辑上照旧存在着宿主机和目的机区分。
下面分别就软件调试桩方式和硬件片上调试两种方式进展详细介绍。
(1)软件方式。
     软件调试主要是通过插入调试桩方式来进展。调试桩方式进展调试是通过目的操作系统和调试器内分别参与某些功能模块,二者互通信息来进展调试。该方式典型调试器有gdb调试器。
     gdb
穿插调试器分为GdbServer和GdbClient,其中GdbServer就作为调试桩在安装在目的板上,GdbClient就是驻于本地gdb调试器。。
  gdb远程调试原理图
     gdb调试工作流程。
     首先,建立调试器(本地gdb)与目的操作系统通信连接,可通过串口、网卡、并口等多种方式。
     然后,在目的机上开启GdbServer进程,并监听对应端口。
     在宿主机上运行调试器gdb,这时,gdb就会自动找寻远端通信进程,也就是GdbServer所在进程。
     在宿主机上gdb通过GdbServer请求对目的机上程序发出限制叮嘱。这时,GdbServer将请求转化为程序地址空间或目的平台某些存放器访问,这对于没有虚拟存储器简洁嵌入式操作系统而言,是特殊简洁。
     GdbServer把目的操作系统全部异样处理转向通信模块,并告知宿主机上gdb当前有异样。
     宿主机上gdb向用户显示被调试程序产生了哪一类异样。
     这样就完成了调试整个过程。这个方案本质是用软件接收目的机全部异样处理及部分中断处理,并在其中插入调试端口通信模块,与主机调试器进展交互。但是它只能在目的机系统初始化完毕、调试通信端口初始化完成后才能起作用,因此,一般只能用于调试运行于目的操作系统之上应用程序,而不宜用来调试
目的操作系统内核代码及启动代码。而且,它必需变更目的操作系统,因此,也就多了一个不用于正式发布调试版。
(2)硬件调试。
     相对于软件调试而言,运用硬件调试器可以获得更强大调试功能和更优秀调试性能。硬件调试器根本原理是通过仿真硬件执行过程,让开发者在调试时可以随时理解到系统当前执行状况。目前嵌入式系统开发中最常用到硬件调试器是ROMMonitor、ROMEmulator、In-CircuitEmulator和In-CircuitDebugger。
     接受ROMMonitor方式进展穿插调试需要在宿主机上运行调试器,在宿主机上运行ROM监视器(ROMMonitor)和被调试程序,宿主机通过调试器与目的机上ROM监视器遵循远程调试协议建立通信连接。ROM监视器可以是一段运行在目的机ROM上可执行程序,也可以是一个特地硬件调试设备,它负责监控目的机上被调试程序运行状况,可以与宿主机端调试器一同完成对应用程序调试。
     在运用这种调试方式时,被调试程序首先通过ROM监视器下载到目的机,然后在ROM监视器监控下完成调试。
     优点:ROM监视器功能强大,可以完成设置断点、单步执行、查看存放器、修改内存空间等各项调试功能。
     确定:同软件调试一样,运用ROM监视器目的机和宿主机必需建立通信连接。
     。
  ROMMonitor调试方式
     接受ROMEmulator方式进展穿插调试时需要运用ROM仿真器,并且它通常被插入到目的机上ROM插槽中,特地用于仿真目的机上ROM芯片。
     在运用这种调试方式时,被调试程序首先下载到ROM仿真器中,因此等效于下载到目的机ROM芯片上,然后在ROM仿真器中完成对目的程序调试。
     优点:避开了每次修改程序后都必需重新烧写到目的机ROM中。
     缺点:ROM仿真器本身比较昂贵,功能相对来讲又比较单一,只适应于某些