资源描述
嵌入式系统及应用嵌入式系统及应用第九章第九章嵌入式系统软件的开发嵌入式系统软件的开发主要内容主要内容 嵌入式软件开发工具嵌入式软件开发工具 嵌入式系统开发模式嵌入式系统开发模式 实时软件分析设计方法实时软件分析设计方法第一节第一节嵌入式软件开发工具嵌入式软件开发工具嵌入式软件开发工具的分类嵌入式软件开发工具的分类嵌入式软件的交叉开发环境嵌入式软件的交叉开发环境嵌入式软件实现阶段的开发过程嵌入式软件实现阶段的开发过程嵌入式软件开发工具的发展趋势嵌入式软件开发工具的发展趋势嵌入式软件开发工具嵌入式软件开发工具“工欲善其事,必先利其器工欲善其事,必先利其器” 嵌入式软件开发工具的嵌入式软件开发工具的集成度集成度和和可用性可用性将直接关将直接关系到嵌入式系统的开发效系到嵌入式系统的开发效率。率。嵌入式软件开发工具的分类嵌入式软件开发工具的分类嵌入式软件开发阶段嵌入式软件开发阶段 嵌入式软件开发工具的分类嵌入式软件开发工具的分类根据不同的阶段,嵌入式软件开发工具根据不同的阶段,嵌入式软件开发工具可以分为:可以分为:需求分析工具(Requirement Analysis Tools)软件设计工具(Software Design Tools)编码、调试工具(Coding Tools)测试工具(Testing Tools)配置管理工具、维护工具等主要嵌入式软件开发工具产品主要嵌入式软件开发工具产品RequirementAnalysisSoftwareDesignCodingTestReleasePhasesTAUObjectGeodeRational Rose RealTimeRhapsodyTornadopRISM+SpectraWin CE PlatformBuilderCodeWarriorXray DebuggerLogiscopeCodeTESTLambdaTOOL嵌入式软件开发工具的分类嵌入式软件开发工具的分类 嵌入式软件的开发可以分为以下几种嵌入式软件的开发可以分为以下几种 :编写简单的板级测试软件,主要是辅助硬件的调试 开发基本的驱动程序 开发特定嵌入式操作系统的驱动程序(板级支持包) 开发嵌入式系统软件,如:嵌入式操作系统等 开发应用软件嵌入式软件开发工具的分类嵌入式软件开发工具的分类 从以上嵌入式软件开发分类来看,嵌入式从以上嵌入式软件开发分类来看,嵌入式软件开发工具可以分为:软件开发工具可以分为:与嵌入式OS相关的开发工具,用于开发: 基于嵌入式OS的应用 部分驱动程序等与嵌入式OS无关的开发工具,用于开发: 基本的驱动程序 辅助硬件调试程序 系统软件等嵌入式软件的交叉开发环境嵌入式软件的交叉开发环境 交叉开发环境交叉开发环境是指用于嵌入式软件开发的是指用于嵌入式软件开发的所有工具软件的集合,一般包括:所有工具软件的集合,一般包括:文本编辑器交叉编译器交叉调试器仿真器下载器等 交叉开发环境由交叉开发环境由宿主机宿主机和和目标机目标机组成,宿组成,宿主机与目标机之间在主机与目标机之间在物理连接物理连接的基础上建的基础上建立起立起逻辑连接逻辑连接。交叉开发环境交叉开发环境目标机硬件目标机硬件目标机应用系统目标机应用系统 应用软件 应用中间件 目标机OS宿主机硬件宿主机硬件宿主机宿主机OS调调试试代代理理运运行行库库宿主机开发环境宿主机开发环境 编辑 编译 连接 调试运行平台TargetTarget开发平台Host嵌入式软件的交叉开发环境嵌入式软件的交叉开发环境 宿主机(宿主机(HostHost) :是用于开发嵌入式系统的计算:是用于开发嵌入式系统的计算机。一般为机。一般为PCPC机(或者工作站),具备丰富的软机(或者工作站),具备丰富的软硬件资源,为嵌入式软件的开发提供全过程支持。硬件资源,为嵌入式软件的开发提供全过程支持。 目标机(目标机(TargetTarget):即所开发的嵌入式系统,是:即所开发的嵌入式系统,是嵌入式软件的运行环境,其硬件软件是为特定应嵌入式软件的运行环境,其硬件软件是为特定应用定制的。用定制的。 在开发过程中,目标机端需接收和执行宿主机发在开发过程中,目标机端需接收和执行宿主机发出的各种命令如设置断点、读内存、写内存等,出的各种命令如设置断点、读内存、写内存等,将结果返回给宿主机,配合宿主机各方面的工作。将结果返回给宿主机,配合宿主机各方面的工作。嵌入式软件的交叉开发环境嵌入式软件的交叉开发环境 物理连接和逻辑连接物理连接和逻辑连接 物理连接物理连接是指宿主机与目标机通过物理线路连接在一起,连接方式主要有三种: 串口 以太口 OCD(On Chip Debug)方式,如JTAG、BDM等物理连接是逻辑连接的基础。 逻辑连接逻辑连接指宿主机与目标机间按某种通信协议建立起来的通信连接,目前逐步形成了一些通信协议的标准。嵌入式软件实现阶段的开发过程嵌入式软件实现阶段的开发过程 设计完成后,嵌入式软件的开发进入实现阶段,设计完成后,嵌入式软件的开发进入实现阶段,可分为三个步骤:生成、调试和固化运行。可分为三个步骤:生成、调试和固化运行。 软件的生成软件的生成主要是在宿主机上进行,利用各种工具完成对应用程序的编辑、交叉编译和链接工作,生成可供调试或固化的目标程序。 调试调试是通过交叉调试器完成软件的调试工作。调试完成后还需进行必要的测试工作。 固化运行固化运行是先用一定的工具将应用程序固化到目标机上,然后启动目标机,在没有任何工具干预的情况下应用程序能自动地启动运行。嵌入式软件生成阶段嵌入式软件生成阶段 三个过程三个过程 源代码程序的编写 编译成各个目标模块 链接成可供下载调试或固化的目标程序编辑器编辑器交叉编交叉编译器译器交叉链交叉链接器接器源程序源程序目标目标模块模块可供调可供调试试/ /固固化化库文件库文件交叉编译交叉编译 把在宿主机上编写的高级语言程序编译成把在宿主机上编写的高级语言程序编译成可以运行在目标机上的代码,即在宿主机可以运行在目标机上的代码,即在宿主机上能够编译生成另一种上能够编译生成另一种CPUCPU(嵌入式微处理(嵌入式微处理器)上的二进制程序。器)上的二进制程序。 嵌入式软件的调试嵌入式软件的调试 交叉调试器交叉调试器是指调试程序和被调试程序运行在不同机器上的调试器调试器通过某种方式能控制目标机上被调试程序的运行方式通过调试器能查看和修改目标机上的内存、寄存器以及被调试程序中的变量等交叉调试交叉调试非交叉调试非交叉调试调试器和被调试程序运行在不同调试器和被调试程序运行在不同的计算机上的计算机上调试器和被调试程序运行在同一调试器和被调试程序运行在同一台计算机上台计算机上可独立运行,无需操作系统支持可独立运行,无需操作系统支持需要操作系统的支持需要操作系统的支持被调试程序的装载由调试器完成被调试程序的装载由调试器完成被调试程序的装载由专门的被调试程序的装载由专门的LoaderLoader程序完成程序完成需要通过外部通信的方式来控制需要通过外部通信的方式来控制被调试程序被调试程序不需要通过外部通信的方式来控不需要通过外部通信的方式来控制被调试程序制被调试程序可以直接调试不同指令集的程序可以直接调试不同指令集的程序只能直接调试相同指令集的程序只能直接调试相同指令集的程序嵌入式软件的调试嵌入式软件的调试 交叉调试方式交叉调试方式 Crash and Burn Rom Monitor Rom Emulator In Circuit Emulator On Chip Debugging SimulatorSimulator方式(非交叉)方式(非交叉)Crash and Burn 最早的最早的嵌入式嵌入式应用软应用软件调试件调试方法。方法。在宿主机上编写代码在宿主机上编写代码反复检查代码,直到编译反复检查代码,直到编译通过,生成可执行程序通过,生成可执行程序将程序固化(将程序固化(Burn)到目标机的非易失)到目标机的非易失性存储器(性存储器(E2PROM、FLASH等)中等)中在宿主机上反复检查在宿主机上反复检查码,查找问题根源码,查找问题根源改写代码改写代码启动目标机运行,观启动目标机运行,观察程序是否正常工作察程序是否正常工作NY结束结束ROM Monitor ROM MonitorROM Monitor是被固化且运行在目标机上的是被固化且运行在目标机上的一段程序,负责监控目标机上被调试程序一段程序,负责监控目标机上被调试程序的运行,与宿主机端的调试器一起完成对的运行,与宿主机端的调试器一起完成对应用程序的调试。应用程序的调试。 调试器与调试器与ROM MonitorROM Monitor之间的通信遵循远程之间的通信遵循远程调试协议。调试协议。ROM Monitor调试方式调试方式调试器调试器Windows或其它桌或其它桌面操作系统面操作系统PC机等硬件机等硬件嵌入式嵌入式硬件硬件监控程监控程序序(ROM Monitor)被调试被调试程序程序宿主机宿主机目标机目标机逻辑上的连接逻辑上的连接物理上的连接物理上的连接ROM Monitor 在目标机上电或复位后首先执行的就是在目标机上电或复位后首先执行的就是ROM ROM MonitorMonitor,它对目标机进行一些必要的初始,它对目标机进行一些必要的初始化化 初始化要求的外围设备,如最基本的串口和用于内存刷新的系统计时器芯片; 初始化用于下载映像的内存系统; 初始化中断控制器和安装中断处理程序。 初始化自己的程序空间初始化自己的程序空间 等待宿主机端的命令等待宿主机端的命令ROM Monitor ROM MonitorROM Monitor能配合调试器完成:能配合调试器完成: 程序映像下载 对目标机系统内存的读写 对寄存器的读写 设置和清除不同类型的断点 单步执行指令 复位系统 等调试功能ROM Monitor调试过程调试过程(1 1)启动目标机,监控器掌握对目标机的控制,等待和)启动目标机,监控器掌握对目标机的控制,等待和调试器建立连接;调试器建立连接;(2 2)启动调试器,并和监控器建立起通信连接;)启动调试器,并和监控器建立起通信连接;(3 3)使用调试器将应用程序下载到目标机上的)使用调试器将应用程序下载到目标机上的RAMRAM空间空间中;中;(4 4)使用调试器进行调试,发出各种调试命令,监控器)使用调试器进行调试,发出各种调试命令,监控器解释并执行这些命令,通过目标机上的各种异常来解释并执行这些命令,通过目标机上的各种异常来获取对目标机的控制,将命令执行结果回传给调试获取对目标机的控制,将命令执行结果回传给调试器;器; (5 5)如果程序有问题,在调试器的帮助下定位错误;修)如果程序有问题,在调试器的帮助下定位错误;修改之后再重新编译链接并下载程序,开始新的调试,改之后再重新编译链接并下载程序,开始新的调试,如此反复直至程序正确运行为止。如此反复直至程序正确运行为止。 ROM Monitor优点优点1)1)提高调试程序的效率提高调试程序的效率 ,缩短开发周期,缩短开发周期,降低成本降低成本2)2)简单、方便简单、方便3)3)可扩展性强,可支持许多高级调试功能可扩展性强,可支持许多高级调试功能4)4)成本低廉,不需专门的调试硬件支持成本低廉,不需专门的调试硬件支持5)5)几乎所有的交叉调试器都支持这种方式几乎所有的交叉调试器都支持这种方式 ROM Monitor缺点缺点1)1)Debug MonitorDebug Monitor需要用需要用Crash and BurnCrash and Burn方法开发。方法开发。2)2)当当ROM MonitorROM Monitor占用占用CPUCPU时,应用程序不响应外部的中断,时,应用程序不响应外部的中断,因此不便调试有时间特性的程序。因此不便调试有时间特性的程序。3)3)某些调试功能依赖于某些调试功能依赖于CPUCPU硬件的支持(如硬件断点功能)硬件的支持(如硬件断点功能)4)4)ROM MonitorROM Monitor要占用目标机一定数量的资源,如要占用目标机一定数量的资源,如CPUCPU、RAMRAM、ROMROM和通信设备等资源。和通信设备等资源。5)5)调试环境不同于实际目标环境。调试环境不同于实际目标环境。仿真开发方式仿真开发方式嵌入式应用的开发经常会遭遇缺少目标嵌入式应用的开发经常会遭遇缺少目标机环境、缺乏目标机芯片等资源的问题,机环境、缺乏目标机芯片等资源的问题,而开发过程又不可能停止,因此自然就而开发过程又不可能停止,因此自然就提出了根据不同的应用需要,利用仿真提出了根据不同的应用需要,利用仿真器件、仿真环境进行开发的方法。器件、仿真环境进行开发的方法。硬件仿真开发硬件仿真开发ROM EmulatorICEOCD软件仿真开发软件仿真开发ROM EmulatorROM EmulatorROM Emulator是一种用于替代目标机上的是一种用于替代目标机上的ROMROM芯片的设备,即芯片的设备,即ROMROM仿真器。利用这种仿真器。利用这种设备,目标机可以没有设备,目标机可以没有ROMROM芯片,但目标机芯片,但目标机的的CPUCPU可以读取可以读取ROM EmulatorROM Emulator设备上设备上ROMROM芯芯片的内容:片的内容:ROM EmulatorROM Emulator设备上的设备上的ROMROM芯片芯片的地址可以实时地映射到目标机的的地址可以实时地映射到目标机的ROMROM地址地址空间,从而仿真(空间,从而仿真(EmulationEmulation)目标机的)目标机的ROMROM。ROM EmulatorROM EmulatorROM Emulator的调试方式是一种不完全的的调试方式是一种不完全的调试方式:调试方式:ROM EmulatorROM Emulator设备只是为目标设备只是为目标机提供机提供ROMROM芯片和在芯片和在TargetTarget和和HostHost间建立一间建立一条高速的通信通道,因此它经常和前面两条高速的通信通道,因此它经常和前面两种调试方式结合起来形成一种完备的调试种调试方式结合起来形成一种完备的调试方式。方式。ROM EmulatorROM Emulator的典型应用就是和的典型应用就是和ROM ROM MonitorMonitor的调试方式相结合。的调试方式相结合。ROM Emulator 优点优点目标机可以没有目标机可以没有ROMROM芯片、可以使用芯片、可以使用ROM ROM EmulatorEmulator提供的提供的ROMROM空间且不需要用别的工空间且不需要用别的工具来写具来写ROMROM。 缺点缺点目标机必须能支持外部目标机必须能支持外部ROMROM存储空间,而且存储空间,而且由于其通常要和由于其通常要和ROM MonitorROM Monitor配合使用,因配合使用,因此它拥有此它拥有ROM MonitorROM Monitor的所有缺点。的所有缺点。ICE ICEICE(In-Circuit EmulatorIn-Circuit Emulator)是一种用于)是一种用于替代目标机上替代目标机上CPUCPU的设备,即在线仿真器。的设备,即在线仿真器。 它比一般的它比一般的CPUCPU有更多的引出线,能够将内有更多的引出线,能够将内部的信号输出到被控制的目标机。部的信号输出到被控制的目标机。 ICEICE上的上的MemoryMemory也可以被映射到用户的程序也可以被映射到用户的程序空间,这样即使目标机不存在的情形下也空间,这样即使目标机不存在的情形下也可以进行代码的调试。可以进行代码的调试。宿主开发平台目标平台ICEICE调试结构调试结构 连接连接ICEICE和目标机时,一般是将目标机的和目标机时,一般是将目标机的CPUCPU取取下,而将下,而将ICEICE的的CPUCPU引出线接到目标机的引出线接到目标机的CPUCPU插插槽。槽。 用用ICEICE进行调试时,在进行调试时,在HostHost端运行的调试器通端运行的调试器通过过ICEICE来控制目标机上运行的程序。来控制目标机上运行的程序。ICEICE功能特点功能特点同时支持同时支持软断点软断点和和硬件断点硬件断点的设置的设置设置各种复杂的断点和触发器设置各种复杂的断点和触发器实时跟踪目标程序的运行,并可实现选择性的实时跟踪目标程序的运行,并可实现选择性的跟踪跟踪支持支持“Time StampTime Stamp” 允许用户设置允许用户设置“TimerTimer” 提供提供“Shadow RAMShadow RAM”,能在不中断被调试程序,能在不中断被调试程序的运行下查看内存和变量即非干扰调试查询的运行下查看内存和变量即非干扰调试查询ICE适用于:适用于:1)1)调试实时的应用系统调试实时的应用系统2)2)调试设备驱动程序调试设备驱动程序3)3)对硬件进行功能和性能的测试对硬件进行功能和性能的测试4)4)实时性能分析实时性能分析缺点:缺点:1)1)价格太昂贵,不利于团队开发价格太昂贵,不利于团队开发2)2)所仿所仿CPUCPU有限有限OCDOCDOCD(On Chip DebuggingOn Chip Debugging)是)是CPUCPU芯片提供芯片提供的一种调试功能(片上调试),可以认为的一种调试功能(片上调试),可以认为是一种廉价的是一种廉价的ICEICE功能:功能:OCDOCD的价格只有的价格只有ICEICE的的20%20%,但提供了,但提供了ICE 80%ICE 80%的功能。的功能。OCD调试结构调试结构调试器调试器Windows或其它桌或其它桌面操作系统面操作系统PC机等硬件机等硬件被调试程序被调试程序OCD接接口口嵌入式嵌入式硬件硬件宿主机宿主机目标机目标机逻辑上的连接逻辑上的连接物理连接物理连接仿真器仿真器针形连接器针形连接器并口、串口并口、串口或网络接口或网络接口为特定处理为特定处理器而建造器而建造OCD调试方法调试方法1)1)将将CPUCPU的模式分为的模式分为一般模式一般模式和和调试模式调试模式2)2)一般模式下,一般模式下, CPUCPU从内存读取指令执行从内存读取指令执行3)3)调试模式下,调试模式下,CPUCPU首先从首先从调试端口调试端口读取指令,通过调试读取指令,通过调试端口可以控制端口可以控制CPUCPU进入和退出调试模式;进入和退出调试模式;HostHost端的调试端的调试器可以直接向目标机发送要执行的指令,读写目标机的器可以直接向目标机发送要执行的指令,读写目标机的内存和各种寄存器,控制目标程序的运行以及完成各种内存和各种寄存器,控制目标程序的运行以及完成各种复杂的调试功能。复杂的调试功能。OCD优点优点1)1)不占用目标机的资源不占用目标机的资源2)2)调试环境和最终的程序运行环境基本一致调试环境和最终的程序运行环境基本一致3)3)支持软硬断点、支持软硬断点、TraceTrace功能功能4)4)精确计量程序的执行时间精确计量程序的执行时间5)5)提供时序分析功能提供时序分析功能OCD缺点缺点1)1)调试的实时性不如调试的实时性不如ICEICE2)2)不支持非干扰调试查询不支持非干扰调试查询3)3)CPUCPU必需具有必需具有OCDOCD功能功能OCD存在各种实现存在各种实现BDM(Background Debugging Mode)JTAG(Joint Test Access Group)(主流方式)(主流方式)OnCE(On Chip Emulation)各种各种OCD仿真器实例仿真器实例边界扫描技术(边界扫描技术(JTAGJTAG) JTAGJTAG标准测试访问接口与边界扫描结构标准测试访问接口与边界扫描结构(Standard Test Access Port and Boundary Standard Test Access Port and Boundary Scan ArchitectureScan Architecture),已被),已被IEEE1149.1IEEE1149.1标准标准所采纳,是面向用户的测试接口。所采纳,是面向用户的测试接口。 该接口一般由该接口一般由4 4个引脚组成:个引脚组成: 测试数据输入(TDI) 测试数据输出(TDO) 测试时钟(TCK) 测试模式选择引脚(TMS) 异步测试复位引脚(TRST,可选)边界扫描技术(边界扫描技术(JTAGJTAG) 优点优点 可以通过边界扫描操作测试整个板的电气连接,特别为表面贴元件提供方便 各个引脚信号的采样,并可强制引脚输出用以测试外围芯片 可以软件下载、执行、调试和控制,为复杂的实时跟踪调试提供路径 可以进行多内核和多处理器的板级和芯片级的调试,通过串接 ,为芯片制造商提供芯片生产、测试的途径 不占用系统资源,能够调试没有外部总线的芯片,代价非常小 边界扫描技术(边界扫描技术(JTAGJTAG) 缺点缺点 通过串口依次传递数据,速度比较慢 只能进行软件断点级别的调试 不能完成实时跟踪和多种事件触发等复杂调试功能 几种增强版本几种增强版本 ARM芯片的实时调试方案(E-TRACE) 背景调试模式BDM 片上仿真OnCE NexusNexus标准标准 提出一个在提出一个在JTAGJTAG之上的嵌入式处理器调试的统一之上的嵌入式处理器调试的统一标准标准 将调试开发分成四级将调试开发分成四级 第一级使用JTAG的简单静态调试; 第二级支持编程跟踪和实时多任务的跟踪,并允许用户用I/O引脚作为多路复用辅助调试口; 第三级包括处理器运行时的数据写入跟踪和存储器的读写跟踪; 第四级增加了存储替换并触发复杂的硬件断点。 NexusNexus标准标准 通过通过Nexus Nexus 标准可以解决以下问题标准可以解决以下问题 调试内部总线没有引出的处理器,如含有片内存储器的芯片 传统在线仿真器无法实现的高速调试 深度流水线和有片上Cache的芯片,能够探测具体哪条指令被取指和最终执行 可以稳定地进行多内核处理器的调试 Simulator交叉开发方式存在如下缺点:交叉开发方式存在如下缺点: 硬件支持硬件支持 必须有目标机或评估板必须有目标机或评估板 易使用性易使用性普通编程人员不熟悉普通编程人员不熟悉 廉价性廉价性成本高成本高 可移植性、可扩展性可移植性、可扩展性不高不高 团队开发团队开发较难较难 开发周期开发周期较长较长Simulator 一种软件仿真器,在宿主机上创建一个虚拟的一种软件仿真器,在宿主机上创建一个虚拟的目标机环境,再将应用系统下载到这个虚拟目目标机环境,再将应用系统下载到这个虚拟目标机上运行调试。标机上运行调试。 软件仿真的对象软件仿真的对象仿真处理器仿真外设仿真环境软件仿真的级别软件仿真的级别指令级仿真开发API级仿真开发宿主机 OS编辑 :C、C+编译、链接应用仿真开发环境示意图调试目标操作系统库TOSLib应用编程接口API仿真调试代理EDA应用系统通信用户虚拟目标硬件V-Target虚虚拟拟目目标标环环境境IDE应用仿真开发环境示意图应用仿真开发环境示意图设计编码测试运行维护下载调试固化交叉调试固化运行仿真编译仿真调试正确N仿真库编译链接Y运行库结合了仿真的软件开发过程结合了仿真的软件开发过程Simulator 优点优点最大好处就是可以不用真正的目标机,可最大好处就是可以不用真正的目标机,可以在目标机环境并不存在的条件下开发目以在目标机环境并不存在的条件下开发目标机上的应用系统,并且在调试时可以利标机上的应用系统,并且在调试时可以利用用HostHost资源提供更详细的错误诊断信息。资源提供更详细的错误诊断信息。Simulator缺点缺点1)1)和实际的运行环境差别很大和实际的运行环境差别很大2)2)设备模拟的局限性较大设备模拟的局限性较大3)3)实时特性较差实时特性较差4)4)对对HostHost的资源要求较高的资源要求较高适用范围适用范围对时间特性没有严格要求、没有特殊外设、只对时间特性没有严格要求、没有特殊外设、只需要验证逻辑正确的应用程序。需要验证逻辑正确的应用程序。嵌入式软件的测试嵌入式软件的测试 测试工具测试工具:能够用来辅助测试的工具,主要用:能够用来辅助测试的工具,主要用来支持测试人员的工作,本身不能直接用来进来支持测试人员的工作,本身不能直接用来进行测试。测试工具一般都是通用工具,测试人行测试。测试工具一般都是通用工具,测试人员应该根据实际情况对它们进行适当的调整。员应该根据实际情况对它们进行适当的调整。 嵌入式软件测试中经常用到的测试工具有:嵌入式软件测试中经常用到的测试工具有: 内存分析工具 性能分析工具 覆盖分析工具 缺陷跟踪工具等 嵌入式软件的测试嵌入式软件的测试内存分析工具内存分析工具 嵌入式系统的内存资源通常是受限的,内存分嵌入式系统的内存资源通常是受限的,内存分析工具可以用来处理在进行动态内存分配时产析工具可以用来处理在进行动态内存分配时产生的缺陷。当动态分配的内存被错误地引用时,生的缺陷。当动态分配的内存被错误地引用时,产生的错误通常难以再现,出现的失效难以追产生的错误通常难以再现,出现的失效难以追踪,使用内存分析工具可以很好地检测出这类踪,使用内存分析工具可以很好地检测出这类缺陷。缺陷。 目前常用的内存分析工具有软件和硬件两种:目前常用的内存分析工具有软件和硬件两种: 基于软件的内存分析工具可能会对代码的执行性能基于软件的内存分析工具可能会对代码的执行性能带来很大影响,从而影响系统的实时性;带来很大影响,从而影响系统的实时性; 基于硬件的内存分析工具对系统性能影响小,但价基于硬件的内存分析工具对系统性能影响小,但价格昂贵,并且只能在特定的环境中使用。格昂贵,并且只能在特定的环境中使用。 嵌入式软件的测试嵌入式软件的测试性能分析工具性能分析工具 嵌入式系统的性能通常是一个非常关键嵌入式系统的性能通常是一个非常关键的因素,开发人员一般需要对系统的某的因素,开发人员一般需要对系统的某些关键代码进行优化来改进性能。些关键代码进行优化来改进性能。 性能分析工具性能分析工具 可以提供有关数据,帮助确定哪些任务消耗可以提供有关数据,帮助确定哪些任务消耗了过多的执行时间,从而可以决定如何优化了过多的执行时间,从而可以决定如何优化软件,以获得更好的时间性能。软件,以获得更好的时间性能。 引导开发人员发现在系统调用中存在的错误引导开发人员发现在系统调用中存在的错误以及程序结构上的缺陷。以及程序结构上的缺陷。 嵌入式软件的测试嵌入式软件的测试覆盖分析工具覆盖分析工具 在进行白盒测试时,可以使用代码覆盖分析工在进行白盒测试时,可以使用代码覆盖分析工具追踪哪些代码被执行过具追踪哪些代码被执行过 分析过程一般通过插桩来完成,插桩可以是在分析过程一般通过插桩来完成,插桩可以是在测试环境中嵌入硬件,也可以是在可执行代码测试环境中嵌入硬件,也可以是在可执行代码中加入软件,或者是两者的结合。中加入软件,或者是两者的结合。 开发人员通过对分析结果进行总结,可以确定开发人员通过对分析结果进行总结,可以确定哪些代码被执行过,哪些代码被遗漏了。哪些代码被执行过,哪些代码被遗漏了。 目前常用的覆盖分析工具一般都提供有关功能目前常用的覆盖分析工具一般都提供有关功能覆盖、分支覆盖、条件覆盖等信息。覆盖、分支覆盖、条件覆盖等信息。 覆盖分析工具实例覆盖分析工具实例测试工具实例:逻辑分析仪测试工具实例:逻辑分析仪 工作机理:在工作机理:在不打断被测程序运行流程不打断被测程序运行流程的基础上,对程序运行中的相关信息进的基础上,对程序运行中的相关信息进行采集和分析,然后通过真实再现程序行采集和分析,然后通过真实再现程序运行的逻辑流程和分析程序运行数据,运行的逻辑流程和分析程序运行数据,帮助用户优化系统设计和解决出现的问帮助用户优化系统设计和解决出现的问题。题。 与调试工具的对比与调试工具的对比 调试器:照相机调试器:照相机 逻辑分析仪:逻辑分析仪:摄像机摄像机测试工具实例:逻辑分析仪测试工具实例:逻辑分析仪 主要功能:主要功能: 真实再现程序运行流程 发现系统死锁及软件造成的死机 发现系统内存泄漏 指导对任务的合理划分 指导关键路径设计与验证 指导合理分配任务堆栈 CPU使用率统计 指导合理设计中断服务程序测试工具实例:逻辑分析仪测试工具实例:逻辑分析仪嵌入式应用软件运行的逻辑流程嵌入式应用软件运行的逻辑流程测试工具实例:逻辑分析仪测试工具实例:逻辑分析仪系统堆栈使用率分析系统堆栈使用率分析嵌入式软件的固化运行嵌入式软件的固化运行 当调试完成之后,程序代码需要被完全烧当调试完成之后,程序代码需要被完全烧入到目标板的非易失性存储器(如入到目标板的非易失性存储器(如ROMROM或闪或闪存)中,并且在真实的硬件环境上运行,存)中,并且在真实的硬件环境上运行,这个过程叫做固化。这个过程叫做固化。 调试环境与固化环境的区别:调试环境与固化环境的区别:代码定位不同代码定位不同初始化部分不同初始化部分不同嵌入式软件的固化运行嵌入式软件的固化运行阶段阶段调试环境调试环境固化环境固化环境编译编译目标文件需要调试信息目标文件需要调试信息目标文件不需要调试信息目标文件不需要调试信息链接链接应用系统目标代码不需要应用系统目标代码不需要BootBoot模块,此模块已由目标板上的模块,此模块已由目标板上的监控器程序实现。监控器程序实现。应用系统目标代码必须以应用系统目标代码必须以BootBoot模块作为入口模块。模块作为入口模块。定位定位程序的所有代码段、数据段都程序的所有代码段、数据段都依次被定位到调试空间的依次被定位到调试空间的RAMRAM中。中。程序的各逻辑段按照其不同的程序的各逻辑段按照其不同的属性分别定位到非易失性存储属性分别定位到非易失性存储空间(空间(ROMROM)或)或RAMRAM中。中。下载下载宿主机上的调试器读入被调试文件,宿主机上的调试器读入被调试文件,并将其下载到目标机上的调试空间并将其下载到目标机上的调试空间中,目标机掉电后所有信息全部丢中,目标机掉电后所有信息全部丢失。失。在宿主机上利用固化工具将可固化在宿主机上利用固化工具将可固化的应用程序写入目标机的非易失性的应用程序写入目标机的非易失性存储器中,目标机掉电后信息不丢存储器中,目标机掉电后信息不丢失。失。运行运行被调试程序在目标监控器的控制下被调试程序在目标监控器的控制下运行,并与后者共享某些资源,如运行,并与后者共享某些资源,如CPUCPU资源、资源、RAMRAM资源以及通信设备资源以及通信设备(如串口、网口等)资源。(如串口、网口等)资源。程序在真实的目标硬件环境上程序在真实的目标硬件环境上运行运行嵌入式软件的固化运行嵌入式软件的固化运行 BootBoot模块:当应用程序在真实的目标环境下运行模块:当应用程序在真实的目标环境下运行时将首先执行该程序,它至少由系统加电时执行时将首先执行该程序,它至少由系统加电时执行的代码组成。的代码组成。 BootBoot模块的主要功能:初始化模块的主要功能:初始化CPUCPU环境,使目标机环境,使目标机硬件到已知的状态硬件到已知的状态 初始化芯片的引脚 初始化系统外部控制寄存器 初始化基本输入输出设备 初始化MMU,包括片选控制寄存器等 执行数据拷贝 嵌入式软件开发工具发展趋势嵌入式软件开发工具发展趋势 向着开放的、集成化的方向发展向着开放的、集成化的方向发展 具有系统设计、可视化建模、仿真和验证功能具有系统设计、可视化建模、仿真和验证功能 自动生成代码和文档自动生成代码和文档 具有更高的灵活性具有更高的灵活性 第二节第二节嵌入式系统开发模式嵌入式系统开发模式概述概述处理器及硬件开发平台的选定处理器及硬件开发平台的选定操作系统选定操作系统选定开发环境选定开发环境选定嵌入式系统开发模式概述嵌入式系统开发模式概述 最大特点:最大特点:软硬件综合开发。软硬件综合开发。原因:原因:1)1)嵌入式产品是软硬件的结合体嵌入式产品是软硬件的结合体2)2)软件针对硬件开发、固化,不能软件针对硬件开发、固化,不能进行任意修改进行任意修改嵌嵌入入式式系系统统开开发发过过程程 系统定义时期系统定义时期符合要求符合要求硬件设计制作硬件设计制作软件设计实现软件设计实现软硬件集成软硬件集成功能性能测试功能性能测试产品产品YesYes系统总体设计系统总体设计NoNo系统总体设计软硬件划分系统总体框架处理器选定操作系统选定开发环境选定硬件设计制作硬件设计制作硬件概要设计硬件概要设计硬件详细设计硬件详细设计硬件制作硬件制作硬件测试硬件测试功能模块图设计功能模块图设计逻辑电路图设计逻辑电路图设计PCBPCB设计与制作设计与制作PCBPCB 测试测试软件设计实现软件设计实现软件概要设计软件详细设计软件实现软件测试软硬件协同开发软硬件协同开发 通常的嵌入通常的嵌入式系统开发式系统开发 软软/ /硬件协硬件协同开发同开发嵌入式嵌入式软件开发软件开发嵌入式嵌入式硬件开发硬件开发嵌入式系统嵌入式系统集成、测试、集成、测试、验证验证嵌入式软件开发嵌入式软件开发嵌入式硬件开发嵌入式硬件开发嵌入式系统嵌入式系统协同设计、测试、验证协同设计、测试、验证处理器及硬件开发平台的选定处理器及硬件开发平台的选定选择依据:选择依据: 应用的类型及应用的类型及I/OI/O接口接口 主频及功耗主频及功耗 对不同类型存储器的支持对不同类型存储器的支持 封装封装 产品生命力和厂家实力、技术支持及第三产品生命力和厂家实力、技术支持及第三方软件的支持方软件的支持 硬件开发平台的选择硬件开发平台的选择操作系统选定操作系统选定选择依据:选择依据: 选择嵌入式选择嵌入式OSOS的必要性的必要性 自建、购买或使用开源软件自建、购买或使用开源软件 对嵌入式操作系统的功能、性能要求对嵌入式操作系统的功能、性能要求 与硬件平台和开发工具的关系与硬件平台和开发工具的关系 行业标准行业标准 技术支持技术支持 版税或服务费版税或服务费操作系统与硬件平台的关系操作系统与硬件平台的关系 操作系统应支持选定的硬件平台操作系统应支持选定的硬件平台 如果不支持,需考虑移植工作如果不支持,需考虑移植工作 不同类型嵌入式微处理器之间的移植:任务上下文切换、时钟、中断等 同类型微处理器但不同类型硬件板之间的移植:硬件接口及设备驱动程序操作系统与开发工具的关系操作系统与开发工具的关系 工具是否能为基于特定操作系统的应用开工具是否能为基于特定操作系统的应用开发提供最大支持:发提供最大支持: 运行库与OS相结合 提供应用工程创建和管理功能,构建基于特定操作系统的应用框架 对操作系统的剪裁与配置 提供高级调试功能 提供配套的应用逻辑分析工具、覆盖测试工具等开发环境及工具选定开发环境及工具选定 对硬件平台的支持对硬件平台的支持 所使用的编程语言所使用的编程语言 C/C+ 汇编语言 JAVA 与嵌入式操作系统的关系与嵌入式操作系统的关系第三节第三节实时软件分析设计方法实时软件分析设计方法DARTS分析设计方法分析设计方法DARTS分析设计方法分析设计方法 嵌入式实时软件系统的生存周期嵌入式实时软件系统的生存周期 需求分析与说明需求分析与说明 系统设计系统设计DARTSDARTS设计方法设计方法 数据流分析数据流分析 划分任务划分任务 定义任务接口定义任务接口 任务设计任务设计 模块构筑模块构筑 任务与系统集成任务与系统集成嵌入式实时软件系统的生命周期嵌入式实时软件系统的生命周期 需求分析与详细说明需求分析与详细说明 系统设计系统设计 任务分解任务分解, , 定义任务间接口关系定义任务间接口关系 任务设计任务设计 按模块方式设计每个任务,定义模块间接口按模块方式设计每个任务,定义模块间接口 模块构筑模块构筑 完成每个模块的详细设计、编码和单元测试完成每个模块的详细设计、编码和单元测试 任务与系统集成任务与系统集成 系统测试系统测试实实 例例 说说 明明机器人控制器系统机器人控制器系统上电手动停止结束断电运行程序选择控制面板控制面板控制设备由内部控控制设备由内部控制器和外部控制面制器和外部控制面板组成板组成控制器控制六个转控制器控制六个转轴,并与数字轴,并与数字I/OI/O传感器交互作用。传感器交互作用。转轴和转轴和I/OI/O由程序由程序控制控制该程序由控制面板该程序由控制面板操作启动执行操作启动执行按下按下“上电上电”按钮,系统进入了上电状态。按钮,系统进入了上电状态。上电成功后,系统进入了手动状态。此时,操上电成功后,系统进入了手动状态。此时,操作者可以通过作者可以通过程序选择开关程序选择开关选择程序选择程序按下按下“运行运行”按钮,则选定的程序开始运行,按钮,则选定的程序开始运行,系统转为运行态。系统转为运行态。程序运行中如果按下程序运行中如果按下“停止停止”键,程序被挂起。键,程序被挂起。之后,操作者可以按下之后,操作者可以按下“运行运行”键,使程序恢键,使程序恢复执行,也可按下复执行,也可按下“结束结束”键,结束程序。键,结束程序。按下按下“结束结束”键后,系统进入终止态。当程序键后,系统进入终止态。当程序最终终止执行时,系统返回手动状态。最终终止执行时,系统返回手动状态。 控制执行过程控制执行过程需求分析与说明需求分析与说明断电态断电态通电态通电态手动态手动态运行态运行态终止态终止态挂起态挂起态上电上电上电上电 成功成功断电断电启动启动程序程序选择选择程序程序 终止终止结束结束启动启动停止停止状态变迁图状态变迁图系系 统统 设设 计计 系统设计说明该系统如何被分解成多个系统设计说明该系统如何被分解成多个任务,如何定义任务间的关系任务,如何定义任务间的关系 任务划分方法任务划分方法 DARTS DARTS设计方法设计方法DARTS设计方法设计方法 数据流分析:每个数据流图都包含:数据流分析:每个数据流图都包含: 变换圈, 表示系统完成的功能 箭头,表示变换间的数据流动 数据存储区,表示数据的存储场所 数据字典,定义了数据流和数据存储区所包含的数据项机器人控制器数据流图机器人控制器数据流图程序程序面板输入有面板输入有效效性检查性检查解释程序解释程序各语句各语句读传读传感器感器处理面板处理面板输入输入 处理处理I/O命令命令处理动处理动作命令作命令向传感向传感器输出器输出输出动作输出动作轴数据轴数据接收接收确认确认输出到输出到面板面板轴控制轴控制器器读面板读面板 输入输入按下按下按钮按钮面板输入面板输入 有效的有效的面板输入面板输入 运行运行开始开始 结束结束动作动作命令命令动作动作确认确认I/O命令命令传感器值传感器值输入输入传感器输入传感器输入传感器传感器输出输出输出输出面板面板输出输出显示灯显示灯 运行运行 停止停止重启动重启动轴块轴块轴确认轴确认轴输入轴输入轴输出轴输出动作块动作块 划分任务就是识别出并行性的功能划分任务就是识别出并行性的功能 需要考虑的是系统内功能的异步性。分需要考虑的是系统内功能的异步性。分析数据流图中的变换,确定哪些变换可析数据流图中的变换,确定哪些变换可以并行,哪些变换本质上是顺序的。以并行,哪些变换本质上是顺序的。 一个任务可对应一个变换,也可对应多一个任务可对应一个变换,也可对应多个变换。个变换。DARTS设计方法设计方法 划分任务原则划分任务原则 I/O 依赖性 功能的时间关键性计算需求功能内聚 时间内聚 周期执行DARTS设计方法设计方法 I/O 依赖性依赖性 DeviceI/O Task App.Task 如果变换依赖于如果变换依赖于I/OI/O,速度受限,速度受限I/OI/O,可独立成,可独立成任务任务 在系统中创建与在系统中创建与I/OI/O设备数目相当的设备数目相当的I/OI/O任务任务 I/OI/O任务只实现与设备相关的代码任务只实现与设备相关的代码 I/OI/O任务的执行只受限于任务的执行只受限于I/OI/O设备的速度,而不设备的速度,而不是处理器是处理器 在任务中分离设备相关性在任务中分离设备相关性 功能的时间关键性功能的时间关键性 将有时间关键性(将有时间关键性(deadlinedeadline)的功能分离出来,)的功能分离出来, 组成独立运行的任务组成独立运行的任务 赋予这些任务高的优先级,以满足对时间的需要赋予这些任务高的优先级,以满足对时间的需要event 1event 2Task 1Task 2Task 3Task 3deadline 1deadline 2 计算量大的功能占用计算量大的功能占用CPUCPU的时间多,把计算功能的时间多,把计算功能捆捆绑成任务,绑成任务,以消耗以消耗CPUCPU的剩余时间的剩余时间 赋予计算任务赋予计算任务较低优先级较低优先级, , 能被高优先级的任务能被高优先级的任务抢占,抢占,保持高优先级的任务是轻量级的保持高优先级的任务是轻量级的 多个计算任务可安排成同优先级,按时间片循环多个计算任务可安排成同优先级,按时间片循环轮转轮转 计算需求计算需求功能内聚功能内聚将紧密相关的功能变换将紧密相关的功能变换组成一个任务,减少通组成一个任务,减少通信的开销信的开销把每个变换都作为同一任务中一个个独立的模把每个变换都作为同一任务中一个个独立的模块,不仅保证了模块级的功能内聚,也保证了块,不仅保证了模块级的功能内聚,也保证了任务级的功能内聚任务级的功能内聚event 1F1(x) + F3(x)event 2F2(x)时间内聚时间内聚将在同一时间内完成的各功能(即使这些功能将在同一时间内完成的各功能(即使这些功能是不相关的)形成一个任务是不相关的)形成一个任务功能组的各功能是由相同的外部事件驱动的功能组的各功能是由相同的外部事件驱动的(如时钟等),(如时钟等),这样每次任务接收到一个事件,这样每次任务接收到一个事件,它们都可以同时执行它们都可以同时执行由于减少了任务调度及切换的次数,减少了系由于减少了任务调度及切换的次数,减少了系统的开销统的开销Clock TickeventF1(x) + F2(y)+F3(z)F4(x)+F5(y)周期执行周期执行一个需要周期执行的变换可以作为一个独一个需要周期执行的变换可以作为一个独立的任务,按一定的时间间隔被激活立的任务,按一定的时间间隔被激活将在相同周期内执行的各功能组成一个任将在相同周期内执行的各功能组成一个任务务频率高的任务赋予高优先级频率高的任务赋予高优先级F1F2F110HZ10HZ15HZ15HZF2I/O时间时间内聚内聚功能功能内聚内聚时间时间内聚内聚 定义任务接口定义任务接口 任务间通信模块TCM(Task Communication Module) 任务同步模块TSM(Task Synchronization Module)DARTS设计方法设计方法 消息通信模块 信息隐藏模块 任务间通信模块任务间通信模块数据数据存储存储区区写数据写数据读数据读数据读数据读数据任务任务A任务任务B信息隐藏模块信息隐藏模块任务同步模块任务同步模块源源S:发事件信号:发事件信号(E)S目标目标D:等待事件:等待事件(E)D 任务设计任务设计任务体系结构:任务体系结构:详细定义任务包含的子详细定义任务包含的子模块和模块间的关系模块和模块间的关系任务执行流程:任务执行流程:尽可能详细地描述任务尽可能详细地描述任务的处理过程的处理过程任务内数据结构任务内数据结构任务内模块间接口任务内模块间接口详细说明系统中各任务的设计考虑和执详细说明系统中各任务的设计考虑和执行流程,以利于程序员编制程序。行流程,以利于程序员编制程序。任务设计任务设计任务设计任务设计模块构筑模块构筑 系统和任务设计完成后,进行每个模块系统和任务设计完成后,进行每个模块的详细设计,直到每个具体的函数的详细设计,直到每个具体的函数 在单元测试前不必编完模块全部程序,在单元测试前不必编完模块全部程序,可以分阶段编码和测试可以分阶段编码和测试 模块的详细设计应一气呵成,避免系统模块的详细设计应一气呵成,避免系统以非结构化方式形成以非结构化方式形成函数设计函数设计函数描述函数描述给出对该函数的简要描述,说明设给出对该函数的简要描述,说明设计目的、意义以及特点计目的、意义以及特点功能功能说明该函数应具有的功能,可采用说明该函数应具有的功能,可采用IPOIPO图图(输入一处理一输出图)形式(输入一处理一输出图)形式性能性能说明对该函数的性能要求,包括精度、说明对该函数的性能要求,包括精度、灵活性和时间特性等灵活性和时间特性等输入输入定义每个输入项的特性,包括名称、标定义每个输入项的特性,包括名称、标识、数据类型和格式、取值范围、输入方式、识、数据类型和格式、取值范围、输入方式、数据来源、保密方式等数据来源、保密方式等输出输出定义每个输入项的特性,特征同输入定义每个输入项的特性,特征同输入算法算法详细说明本函数所选用的算法,具体的计算公式和计详细说明本函数所选用的算法,具体的计算公式和计算步骤算步骤流程流程用流程图辅以必要的说明来表示本函数的逻辑流程用流程图辅以必要的说明来表示本函数的逻辑流程接口接口说明本函数与其他函数的调用关系,包括说明参数赋说明本函数与其他函数的调用关系,包括说明参数赋值和调用方式以及相关数据结构(如数据库、文件)。值和调用方式以及相关数据结构(如数据库、文件)。 存储分配存储分配说明本函数的存储分配说明本函数的存储分配限制条件限制条件说明本函数运行所受限制说明本函数运行所受限制 测试计划测试计划说明对本函数的测试计划,包括技术要求、输入说明对本函数的测试计划,包括技术要求、输入数据、预期结果、人员安排等数据、预期结果、人员安排等函数设计函数设计任务与系统集成任务与系统集成 模块逐个连接、测试以构成任务模块逐个连接、测试以构成任务 任务被逐个连接和测试形成最终系统任务被逐个连接和测试形成最终系统 可分两步集成可分两步集成 在宿主机上模拟集成(软集成) 在目标机上集成谢谢!
展开阅读全文