您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 第2章 嵌入式系统开发过程
第2章嵌入式系统开发过程2第2章嵌入式系统开发过程主要内容1324嵌入式软件开发的特点嵌入式软件的开发流程嵌入式系统的调试板极支持包3第2章嵌入式系统开发过程2.1嵌入式软件开发的特点嵌入式系统与通用计算机系统的差别:–人机交互界面–有限的功能–时间关键性和稳定性4第2章嵌入式系统开发过程嵌入式软件开发的特点:–需要交叉开发环境:交叉开发环境是指实现编译、链接和调试应用程序代码的环境。与运行应用程序的环境不同,它分散在有通信连接的宿主机与目标机环境之中。宿主机(Host)是一台通用计算机,一般是PC机。它通过串口或网络连接与目标机通信。目标机(Target)可以是嵌入式应用软件的实际运行环境,也可以是能替代实际环境的仿真系统。–引入任务设计方法–需要固化程序–软件开发难度大嵌入式应用软件对实时性、稳定性、可靠性、抗干扰性等性能的要求都比通用软件的要求更为严格和苛刻。5第2章嵌入式系统开发过程2.2嵌入式系统开发的流程嵌入式软件的开发流程与通用软件的开发流程大同小异,但开发所使用的设计方法具有嵌入式开发的特点。整个开发流程可分为:需求分析阶段设计阶段生成代码阶段固化阶段6第2章嵌入式系统开发过程需求分析阶段嵌入式系统应用需求中最为突出的是注重应用的时效性,需求分析阶段的主要任务是:(1)对问题的识别和分析对用户提出的问题进行抽象识别用以产生以下的需求:功能需求、性能需求、环境需求、可靠性需求、安全需求、用户界面需求、资源使用需求、软件成本与开发进度需求。(2)制订规格说明文档经过对问题的识别,产生了系统各方面的需求。通过对规格的说明,文档得以清晰、准确地描述。这些说明文档包括需求规格说明书和初级的用户手册等。(3)需求评审需求评审作为系统进入下一阶段前最后的需求分析复查手段,在需求分析的最后阶段对各项需求进行评估,以保证软件需求的质量。需求评审的内容包括正确性、无歧义性、安全性、可验证性、一致性、可理解性、可修改性、可追踪性等多个方面。7第2章嵌入式系统开发过程设计阶段系统的设计阶段包括系统设计、任务设计和任务的详细设计。由于嵌入式系统中任务的并发性,嵌入式软件开发中引入了DARTS的设计方法。DARTS设计方法:是结构化分析/结构化设计的扩展。它给出划分任务的方法,并提供定义任务间接口的机制。DARTS设计方法的设计步骤如下:•(1)数据流分析•(2)划分任务•(3)定义任务间的接口8第2章嵌入式系统开发过程生成代码阶段生成代码阶段需要完成的工作包括代码编程、交叉编译和链接、交叉调试和测试等。9第2章嵌入式系统开发过程代码编程生成代码阶段在嵌入式系统的开发过程中,一般采用的方法是先在通用PC上编程,然后通过交叉编译链接,将程序做成目标平台上可以运行的二进制代码格式。最后将程序下载到目标平台上的特定位置,在目标板上启动运行这段二进制代码。10第2章嵌入式系统开发过程生成代码阶段交叉编译和链接嵌入式软件开发编码完成后,要进行编译和链接以生成可执行代码。但是,在开发过程中设计人员普遍使用Intel的x86系列CPU的计算机进行开发,而目标环境的处理芯片却是多种多样的,如ARM,DSP,PowerPC,DragonBall系列等,这就要求开发机上的编译器能支持交叉编译。嵌入式集成开发环境都支持交叉编译、链接,如WindRiver公司的TornadoⅡ以及GNU套件等。交叉编译链接生成两种类型的可执行文件:调试用的可执行文件和固化的可执行文件。11第2章嵌入式系统开发过程生成代码阶段交叉调试交叉调试,又叫远程调试,具有以下特点:调试器和被调试的程序运行在不同的机器上。调试器运行在PC或工作站上,而被调试程序运行在各式的专用目标机上;调试器通过某种通信方式与目标机建立联系,如串口、并口、网络、JTAG或者专用的通信方式;在目标机上一般具有某种调试代理,这种代理能与调试器一起配合完成对目标机上运行程序的调试。这种代理可以是某种能支持调试的硬件,也可以是某种软件;目标机可以是一种仿真机。通过在宿主机上运行目标机的仿真软件,仿真一台目标机,使整个调试工作只在一台计算机上进行。测试嵌入式系统开发的测试与通用软件的测试相似,分为单元测试和系统集成测试。12第2章嵌入式系统开发过程固化阶段嵌入式系统的应用软件是针对特定的实际专业领域的,基于相应的嵌入式硬件平台,并能完成用户预期任务的计算机软件。嵌入式软件的特点如下:(1)软件要求固态化存储。(2)软件代码要求高质量、高可靠性。(3)系统软件的高实时性是基本要求。(4)多任务实时操作系统成为嵌入式应用软件的必需。13第2章嵌入式系统开发过程总结:嵌入式软件开发的要点嵌入式应用软件高度依赖目标应用的软硬件环境,软件的部分任务功能函数由汇编语言完成,具有高度的不可移植性。为了保证实时性能,使用效率高和速度快的汇编语言是不可避免的。尽可能提高嵌入式应用软件的可移植性方法:(1)尽量用高级语言开发,少用汇编语言(2)局域化不可移植部分(3)提高软件的可重用性14第2章嵌入式系统开发过程2.3嵌入式系统的调试嵌入式系统的调试方法:1.源程序模拟器方式2.监控器方式3.仿真器方式嵌入式系统的调试过程:15第2章嵌入式系统开发过程源程序模拟器方式源程序模拟器(Simulator)是在PC机上,通过软件手段模拟执行为某种嵌入式处理器编写的源程序的测试工具。注意:模拟器的功能毕竟是以一种处理器模拟另一种处理器的运行,在指令执行时间、中断响应、定时器等方面很有可能与实际处理器有相当大的差别。另外,它无法仿真嵌入式系统在应用系统中的实际执行情况。比如:ARM公司的ARMulator模拟器16第2章嵌入式系统开发过程监控器方式监控器(Monitor)调试方式需要目标机与宿主机协调。首先,在宿主机和目标机之间通过串口、以太口等建立物理连接,然后在宿主机上运行调试器,目标机运行监控程序和被调试程序,从而建立宿主机与目标机的逻辑连接。宿主机通过调试器与目标机的监控器建立通信连接,它们相互间的通信遵循远程调试协议。比如ARM公司的Angel。17第2章嵌入式系统开发过程仿真器方式仿真器调试方式是在微处理器的内部嵌入额外的控制模块。当特定的触发条件满足时,系统将进入某种特殊状态。在这种状态下,被调试的程序暂时停止运行,宿主机的调试器通过微处理器外部特设的通信口访问各种寄存器、存储器资源,并执行相应的调试指令。在宿主机的通信端口和目标板调试通信接口之间,通信接口的引脚信号可能存在差异,因此在这两者之间往往可以通过一块信号转换电路板连接。一般高档的微处理器都带JTAG(JointTestActionGroup,联合测试行动组)接口,它是一种边界扫描标准,只需5根引脚就可以实现在线仿真的功能。18第2章嵌入式系统开发过程•硬件调试通过仿真硬件的真正执行过程,让开发者在调试过程中可以时刻获得执行情况。主要有ICE(In-CircuitEmulator)、ICD(In-CircuitDebugger).由于ICE非常昂贵,而且每种CPU都需要一种与之对应的ICE,使得开发成本非常高。19第2章嵌入式系统开发过程ADTforARM集成开发系统20第2章嵌入式系统开发过程ADT1000EmulatorforARM21第2章嵌入式系统开发过程•一个ARM7开发板和仿真器22第2章嵌入式系统开发过程•目前比较流行的做法是CPU将调试功能直接在其内部实现,通过在开发板上引出调试端口的方法,直接从端口获得CPU提供的调试信息。例如对于ARM开发板,可以使用JTAG调试器接在开发板上的JTAG口上,通过JTAG口与ARMCPU进行通信。然后使用软件工具与JTAG调试器相连接,做到与ICE调试类似的调试效果。23第2章嵌入式系统开发过程。一般情况下,在ARM芯片的开发板上采用JTAG边界扫描口进行调试。摩托罗拉公司采用专用的BDM调试接口。使用合适的开发工具可以利用这些接口。例如,ARM开发板,可以将JTAG调试器接在开发板的JTAG口上,通过JTAG口与ARM处理器核进行通信。由于JTAG调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此许多接口问题,如高频操作限制、电线长度的限制等被最小化了。该方式是目前采用最多的一种调试方式。目前比较流行的做法是CPU将调试功能直接在其内部实现,通过在开发板上引出调试端口的方法,直接从端口获得CPU提供的调试信息。例如对于ARM开发板,可以使用JTAG调试器接在开发板上的JTAG口上,通过JTAG口与ARMCPU进行通信。然后使用软件工具与JTAG调试器相连接,做到与ICE调试类似的调试效果。24第2章嵌入式系统开发过程硬件层由嵌入式微处理器、外围电路和外设组成。在一片嵌入式微处理器基础上增加电源电路、复位电路、调试接口和存储器电路,就构成一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在ROM或者Flash中。为方便使用,有的模块在此基础上增加了LCD、键盘、USB接口,以及其他一些功能的扩展电路。硬件层25第2章嵌入式系统开发过程26第2章嵌入式系统开发过程27第2章嵌入式系统开发过程28第2章嵌入式系统开发过程29第2章嵌入式系统开发过程我院实验室嵌入式实验箱30第2章嵌入式系统开发过程2.4板级支持包由于嵌入式系统中采用微处理器/微控制器的多样性,嵌入式操作系统的可移植性显得更加重要。所以有些嵌入式操作系统的内核明确分成两层,上层一般称为“内核”,而低层则称为“硬件抽象层”,底层的缩写是HAL,也有的厂商(如VxWorks的提供者WindRiver公司)把硬件抽象层称为BSP,即板级支持包(BoardSupportPackage)。板级支持包是操作系统与目标应用硬件环境的中间接口,它是软件包中具有平台依赖性的那一部分。板级支持包的主要功能包括两部分:在系统启动时,对硬件进行初始化为驱动程序提供访问硬件的手段31第2章嵌入式系统开发过程板级支持包的功能32第2章嵌入式系统开发过程嵌入式系统初始化片级初始化板级初始化系统级初始化硬件相关的设备驱动程序和BootLoader存在一定的重叠33第2章嵌入式系统开发过程系统级初始化这是一个以软件初始化为主的过程,主要进行操作系统初始化。BSP将控制转交给操作系统,由操作系统进行余下的初始化操作。包括加载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,比如网络系统、文件系统等;最后,操作系统创建应用程序环境并将控制转交给应用程序的入口。34第2章嵌入式系统开发过程硬件相关的驱动程序与初始化过程相反,硬件相关的设备驱动程序的初始化和使用通常是一个从高层到底层的过程。尽管BSP中包含硬件相关的设备驱动程序,但是这些设备驱动程序通常不直接由BSP使用,而是在系统初始化过程中由BSP把它们与操作系统中通用的设备驱动程序关联起来,并在随后的应用中由通用的设备驱动程序调用,实现对硬件设备的操作。
本文标题:第2章 嵌入式系统开发过程
链接地址:https://www.777doc.com/doc-3970999 .html