1、第2章 嵌入式系统开发过程,主要内容,1,3,2,4,嵌入式软件开发的特点,嵌入式软件的开发流程,嵌入式系统的调试,板极支持包,2.1 嵌入式软件开发的特点,嵌入式系统与通用计算机系统的差别:人机交互界面有限的功能时间关键性和稳定性,嵌入式软件开发的特点: 需要交叉开发环境:交叉开发环境是指实现编译、链接和调试应用程序代码的环境与运行应用程序的环境不同,它分散在有通信连接的宿主机与目标机环境之中。宿主机(Host)是一台通用计算机,一般是PC机。它通过串口或网络连接与目标机通信。目标机(Target) 可以是嵌入式应用软件的实际运行环境,也可以是能替代实际环境的仿真系统。 引入任务设计方法 需
2、要固化程序 软件开发难度大 嵌入式应用软件对实时性、稳定性、可靠性、抗干扰性等性能的要求都比通用软件的要求更为严格和苛刻。,2.2 嵌入式系统开发的流程,嵌入式软件的开发流程与通用软件的开发流程大同小异,但开发所使用的设计方法具有嵌入式开发的特点。整个开发流程可分为:需求分析阶段 设计阶段 生成代码阶段 固化阶段,需求分析阶段,嵌入式系统应用需求中最为突出的是注重应用的时效性,需求分析阶段的主要任务是: (1)对问题的识别和分析对用户提出的问题进行抽象识别用以产生以下的需求:功能需求、性能需求、环境需求、可靠性需求、安全需求、用户界面需求、资源使用需求、软件成本与开发进度需求。 (2)制订规格
3、说明文档经过对问题的识别,产生了系统各方面的需求。通过对规格的说明,文档得以清晰、准确地描述。这些说明文档包括需求规格说明书和初级的用户手册等。 (3)需求评审需求评审作为系统进入下一阶段前最后的需求分析复查手段,在需求分析的最后阶段对各项需求进行评估,以保证软件需求的质量。需求评审的内容包括正确性、无歧义性、安全性、可验证性、一致性、可理解性、可修改性、可追踪性等多个方面。,设计阶段,系统的设计阶段包括系统设计、任务设计和任务的详细设计。由于嵌入式系统中任务的并发性,嵌入式软件开发中引入了DARTS的设计方法。DARTS设计方法:是结构化分析/结构化设计的扩展。它给出划分任务的方法,并提供定
4、义任务间接口的机制。DARTS设计方法的设计步骤如下: (1)数据流分析 (2)划分任务 (3)定义任务间的接口,生成代码阶段,生成代码阶段需要完成的工作包括代码编程、交叉编译和链接、交叉调试和测试等。,代码编程,生成代码阶段,在嵌入式系统的开发过程中,一般采用的方法是先在通用PC上编程,然后通过交叉编译链接,将程序做成目标平台上可以运行的二进制代码格式。最后将程序下载到目标平台上的特定位置,在目标板上启动运行这段二进制代码。,生成代码阶段,交叉编译和链接,嵌入式软件开发编码完成后,要进行编译和链接以生成可执行代码。但是,在开发过程中设计人员普遍使用Intel的x86系列CPU的计算机进行开发
5、,而目标环境的处理芯片却是多种多样的,如ARM,DSP,PowerPC,DragonBall系列等,这就要求开发机上的编译器能支持交叉编译。嵌入式集成开发环境都支持交叉编译、链接,如WindRiver公司的Tornado以及GNU套件等。交叉编译链接生成两种类型的可执行文件:调试用的可执行文件和固化的可执行文件。,生成代码阶段,交叉调试,交叉调试,又叫远程调试,具有以下特点:调试器和被调试的程序运行在不同的机器上。调试器运行在PC或工作站上,而被调试程序运行在各式的专用目标机上;调试器通过某种通信方式与目标机建立联系,如串口、并口、网络、JTAG或者专用的通信方式;在目标机上一般具有某种调试代
6、理,这种代理能与调试器一起配合完成对目标机上运行程序的调试。这种代理可以是某种能支持调试的硬件,也可以是某种软件;目标机可以是一种仿真机。通过在宿主机上运行目标机的仿真软件,仿真一台目标机,使整个调试工作只在一台计算机上进行。,测试,嵌入式系统开发的测试与通用软件的测试相似,分为单元测试和系统集成测试。,固化阶段,嵌入式系统的应用软件是针对特定的实际专业领域的,基于相应的嵌入式硬件平台,并能完成用户预期任务的计算机软件。,嵌入式软件的特点如下: (1)软件要求固态化存储。 (2)软件代码要求高质量、高可靠性。 (3)系统软件的高实时性是基本要求。 (4)多任务实时操作系统成为嵌入式应用软件的必
7、需。,总结:嵌入式软件开发的要点,嵌入式应用软件高度依赖目标应用的软硬件环境,软件的部分任务功能函数由汇编语言完成,具有高度的不可移植性。为了保证实时性能,使用效率高和速度快的汇编语言是不可避免的。尽可能提高嵌入式应用软件的可移植性方法:(1)尽量用高级语言开发,少用汇编语言(2)局域化不可移植部分(3)提高软件的可重用性,2.3 嵌入式系统的调试,嵌入式系统的调试方法: 1源程序模拟器方式 2监控器方式 3仿真器方式,嵌入式系统的调试过程:,源程序模拟器方式,源程序模拟器(Simulator)是在PC机上,通过软件手段模拟执行为某种嵌入式处理器编写的源程序的测试工具。注意:模拟器的功能毕竟是
8、以一种处理器模拟另一种处理器的运行,在指令执行时间、中断响应、定时器等方面很有可能与实际处理器有相当大的差别。另外,它无法仿真嵌入式系统在应用系统中的实际执行情况。比如:ARM公司的ARMulator模拟器,监控器方式,监控器(Monitor)调试方式需要目标机与宿主机协调。首先,在宿主机和目标机之间通过串口、以太口等建立物理连接,然后在宿主机上运行调试器,目标机运行监控程序和被调试程序,从而建立宿主机与目标机的逻辑连接。宿主机通过调试器与目标机的监控器建立通信连接,它们相互间的通信遵循远程调试协议。比如ARM公司的Angel。,仿真器方式,仿真器调试方式是在微处理器的内部嵌入额外的控制模块。
9、当特定的触发条件满足时,系统将进入某种特殊状态。在这种状态下,被调试的程序暂时停止运行,宿主机的调试器通过微处理器外部特设的通信口访问各种寄存器、存储器资源,并执行相应的调试指令。在宿主机的通信端口和目标板调试通信接口之间,通信接口的引脚信号可能存在差异,因此在这两者之间往往可以通过一块信号转换电路板连接。一般高档的微处理器都带JTAG (Joint Test Action Group,联合测试行动组)接口,它是一种边界扫描标准,只需5根引脚就可以实现在线仿真的功能。,2.4 板级支持包,由于嵌入式系统中采用微处理器微控制器的多样性,嵌入式操作系统的可移植性显得更加重要。所以有些嵌入式操作系统的内核明确分成两层,上层一般称为“内核”,而低层则称为“硬件抽象层” ,底层的缩写是HAL,也有的厂商(如VxWorks的提供者WindRiver公司)把硬件抽象层称为BSP,即板级支持包(Board Support Package)。板级支持包是操作系统与目标应用硬件环境的中间接口,它是软件包中具有平台依赖性的那一部分。板级支持包的主要功能包括两部分: 在系统启动时,对硬件进行初始化 为驱动程序提供访问硬件的手段,思考题,什么是交叉开发环境,为什么需要交叉开发环境? 什么是BSP,它的作用是什么?,