4.嵌入式系统的开发第2章嵌入式系统的开发过程

上传人:小** 文档编号:57574907 上传时间:2018-10-23 格式:PPT 页数:26 大小:58.02KB
返回 下载 相关 举报
4.嵌入式系统的开发第2章嵌入式系统的开发过程_第1页
第1页 / 共26页
4.嵌入式系统的开发第2章嵌入式系统的开发过程_第2页
第2页 / 共26页
4.嵌入式系统的开发第2章嵌入式系统的开发过程_第3页
第3页 / 共26页
4.嵌入式系统的开发第2章嵌入式系统的开发过程_第4页
第4页 / 共26页
4.嵌入式系统的开发第2章嵌入式系统的开发过程_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《4.嵌入式系统的开发第2章嵌入式系统的开发过程》由会员分享,可在线阅读,更多相关《4.嵌入式系统的开发第2章嵌入式系统的开发过程(26页珍藏版)》请在金锄头文库上搜索。

1、第2章 嵌入式系统的开发过程,一 嵌入式软件开发的特点,嵌入式系统与通用计算机在以下几个方面的差别比较明显: (1)人机交互界面。嵌入式系统和通用计算机之间的最大区别在与人机交互界面。嵌入式系统可能根本就不存在键盘、显示器等设备,它所完成的事情也可能只是监视网络情况或者传感器的变化情况,并按照事先规定好的过程及时完成相应的处理任务。 (2)有限的功能。嵌入式系统的功能在设计时已经定制好,在开发完成投入使用之后就不再变化,系统将反复执行这些预定好的任务,而不象通用计算机那样随时可以运行新任务。当然,使用嵌入式操作系统的嵌入式系统可以添加新的任务,删除旧的任务;但这样的变化对嵌入式系统而言是关键性

2、的变化,有可能会对整个系统产生影响。 (3)时间关键性和稳定性。嵌入式系统可能要求实时响应,具有严格的时序性。同时,嵌入式系统还要求有非常可靠的稳定性。 其工作环境可能非常恶劣,如高温、高压、低温、潮湿等。这就要求在设计时考虑目标系统的工作环境,合理选择硬件和保护措施。软件稳定也是一个重要特征。软件系统需要经过无数次反复测试,达到预先规定的要求才能真正投入使用。,嵌入式软件开发与传统软件开发有许多共同特点,但它又有它自身的特点: (1)需要交叉开发环境。嵌入式应用软件开发要使用交叉开发环境。交叉开发环境是指实现编译、链接和调试应用程序代码的环境。与应用程序环境不同,它分布在有通信链接的宿主机和

3、目标机环境之中。宿主机(Host)是一台通用计算机,一般是PC机。它通过串口或网络连接与目标机通信。目标机(Target)常在嵌入式软件开发期间使用,用来区别与嵌入式系统通信的宿主机。目标机应用软件需要绑定操作系统一起运行。交叉软件包括交叉编译器、交叉调试器和模拟软件等。交叉编译器允许应用程序开发者在俗主机上生成能在目标机上运行的代码。交叉调试器和模拟调试软件用于完成俗主机与目标机应用程序代码的调试。,(2)引入任务设计方法。嵌入式应用系统以任务为基本单元。在系统设计阶段,用多个并发的任务代替通用软件的多个模块,并定义了应用软件任务间的接口。嵌入式系统的设计通常采用DARTS(Design a

4、nd Analysis of Real-Time Systems)设计方法进行任务的设计。DARTS给出了系统任务划分的方法和定义任务间接口的机制。 (3)需要固化程序。通用软件的开发在测试完成以后就可以直接投入运行。其目标环境一般是PC机,在总体结构上与开发环境差别不大。而嵌入式应用程序开发环境是PC机,但运行的目标环境却千差万别,可以是PDA,也可以是仪器设备。而且应用软件在目标环境下必须存储在非易失性存储器中,保证用户用完关机后确保得到保证下次的使用。所以应用软件在开发完成以后,应生成固化版本,烧写到目标环境的Flash中运行。 (4)软件开发难度大。绝大多数的嵌入式应用有实时性的要求,

5、特别在硬实时系统中,实时性至关重要。这些实时性在开发的应用软件中得到保证,这就要求设计者在软件的需求分析中充分考虑系统的实时性。这些实时性的体现一部分来源于实时操作系统的实时性,另一部分依赖于应用软件的本身的设计和代码的质量。同时,嵌入式应用软件对稳定性、可靠性、抗干扰性等性能的要求都比通用软件的要求更为严格和苛刻。因此,嵌入式软件开发的难度加大。,嵌入式开发还需要提供强大的硬件开发工具和软件包支持,需要开发者从速度、功能和成本综合考虑,由此看来有以下几点: a、硬件功能强。更强大的嵌入式处理器(如32为RISC芯片或信号处理器DSP)增强了处理能力,加强了对多媒体、图形等的处理。同时增加功能

6、接口,如USB等。 b、工具完备。见P37。 c、通信接口。要求硬件上提供各种网络通信接口。新一代的嵌入式处理器已经开始内嵌网络接口,除了支持TCP/IP协议,有的还支持IEEE1394、USB、Bluetooth或IrDA通信接口中的一种或几种;软件方面系统内核支持网络模块,甚至可以把设备做成嵌入式Web服务器或嵌入式浏览器。 d、精简系统内核以降低功耗和成本。未来的嵌入式产品是软硬件紧密结合的设备,为了降低功耗和成本,需要设计者尽量精简系统内核,利用最低的资源实现最适当的功能。 e、提供友好的多媒体人机界面。嵌入式设备与用户交互,最重要的因素就是它能提供非常友好的用户界面。手写文字输入、彩

7、色图形和图象都会使用户获得操作自如的感受。,2.2 嵌入式软件的开发流程,嵌入式软件的开发流程与通用软件的开发流程大同小异,但开发所使用的设计方法有一定的差异。整个开发流程可分为需求分析阶段、设计阶段、生成代码阶段和固化阶段。开发的每个阶段都体现着嵌入式开发的特点。 1 需求分析阶段嵌入式系统的特点决定了在开发初期的需求分析过程中就要搞清需要完成的任务。在需求分析阶段需要分析客户的需求,并将需求分类整理-包括功能需求、操作界面需求和应用环境需求等。嵌入式系统应用需求中最为突出的是注重应用的实效性,竞争中Time-to-Market最短的企业最容易赢得市场。嵌入式开发的需求分析阶段与一般软件开发

8、的需求分析阶段差异不大,包括以下3个方面。a、对问题的识别和分析。见P38。b、制定规格说明文档。经过对问题的识别,产生了系统各方面的需求。通过对规格的说明,文档得以清晰、准确的描述。这些说明文档包括需求规格说明书和初级的用户手册等。c、需求评审。需求评审作为系统进入下一阶段前最后的需求分析复查手段,在需求分析的最后阶段对各项需求进行评估,以保证软件需求的质量。,2 设计阶段需求分析完成后,需求分析员提交规格说明文档,进入系统设计阶段。系统的设计阶段包括系统设计、任务设计和任务的详细设计。通用软件开发的设计常采用将系统分为各个功能子模块,在进一步细分为函数,采用自顶向下的设计方法。而嵌入式应用

9、软件是通过并发的任务来运作的,应用软件开发的系统设计将系统划分为多个并发执行的任务,各个任务允许并发执行,通过相互间通信建立联系。传统的设计方法不适应这种并发的设计模式,因而在嵌入式软件开发中引入DARTS的设计方法。 DARTS设计方法是结构化分析/结构化设计的扩展。它给出划分任务的方法,并提供定义任务间接口的机制。DARTS设计方法的设计步骤如下:a、数据流分析在DARTS设计方法中,系统设计人员在系统需求基础上,以数据流图作为分析工具,从系统的功能需求开始分析系统的数据流,以确定主要的功能。扩展系统的数据流图,分解系统到足够的深度,以识别主要子系统和各个子系统的主要部分。,b、划分任务

10、系统设计人员把可并行、相对独立的功能单元抽象成一个系统任务。实时软件系统中并行任务的分解主要考虑系统内部功能的异步性。根据数据流图中的变换,分析出哪些变换是可以并行的,哪些变换是顺序执行的。系统设计人员可以考虑一个变换对应一个任务,或者一个任务包括多个变换。其判定的原则取决于以下因素:I/O依赖性:如果变换依赖于I/O,应选择一个变换对应一个任务。时间关键性的功能:具有时间关键性的功能应分离出来,成为一个独立的任务,并且赋予这些任务较高的优先级,以满足系统对时间的要求。计算量大的功能:计算量大的功能在运行时势必会占用CPU很多时间,应当让他们单独成为一个任务。功能内聚:系统中各紧密相关的功能,

11、不适合划分为独立的任务,应该把这些逻辑上或数据上紧密相关的功能合成一个任务,使各个功能共享资源或相同事件的驱动。将紧密相关的功能合成一个任务不仅可以减少任务间通信的开销,而且也降低了系统设计的难度。时间内聚:将系统中在同一时间内能够完成的各个功能合成一个任务,以便在同一时间统一运行。周期执行的功能:将在相同周期内执行的各个功能组成一个任务,使运行频率越高的任务赋予越高的优先级。,c、定义任务间的接口任务划分完成以后,下一步就要定义各个任务的接口。在数据流图中接口以数据流和数据存储区的形式存在,抽象化数据流和数据存储区成为任务的接口。在DARTS设计方法中,有两类任务接口模块:任务通信模块和任务

12、同步模块,分别处理任务间的通信和任务间的同步。有了划分好的任务以及定义好的任务间的接口后,接下来就可以开始任务的详细设计,任务详细设计的主要工作是确定每个任务的结构。画出每个任务的数据流图,使用结构化设计方法,从数据流图导出任务的模块结构图,并定义各模块的接口。之后,进行每个模块的详细设计,给出每个模块的程序流程图。,3 生成代码阶段生成代码阶段需要完成的工作包括代码编程、交叉编译和链接、交叉调试和测试等。a、代码编程编程工作是每个模块的详细设计文档基础上进行的。规范化的详细设计文档能缩短编程时间。由于嵌入式系统是一个受资源限制的系统,故而直接在嵌入式系统硬件上进行编程显然是不合理的。在嵌入式

13、系统开发过程中,一般采用的方法是先在PC上编程;然后通过交叉编译、链接,将程序做成目标平台上可以运行的二进制代码格式;最后将程序下载到目标平台上的特定位置,在目标板上启动运行这段二进制代码。,b、交叉编译和链接嵌入式软件开发编译完成后,要进行编译和链接以生成可执行代码。但是,在开发过程中,设计人员普遍使用Intel公司的x86系列CPU的计算机进行开发;而目标环境的处理芯片确是多种多样的,如ARM、DSP、PowerPC、DragonBall系列等。这就要求开发机的编译器能支持交叉编译。嵌入式C编译器是有别于一般计算机中的C语言编译器的.嵌入式系统中使用的C语言编译器需要专门进行代码化,以产生

14、更加优质、高校的代码。优秀的嵌入式C编译器产生代码长度及运行时间仅比以汇编语言编写的同样功能程序长5%-20%。这微弱的差别完全可以有现代处理器的高速度、存储器容量大以及产品提前占领市场的优势来加以弥补;编译产生代码质量的差异,是衡量嵌入式C编译器工具优劣的重要指标。,c、交叉调试 调试是开发过程中必不可少的环节。嵌入式开发软件的交叉编译不同于通用软件的调试方法。在通用软件开发中,调试器与被调试的程序往往运行在同一机器上,作为操作系统上的两个进程,通过操作系统提供的调试接口控制被调试进程。嵌入式软件开发需要交叉开发环境,调试采用的是包含目标机和宿主机的交叉调试方法。调试器还是运行在宿主机的通用

15、操作系统上,而被调试的程序则运行在基于特定硬件平台的嵌入式操作系统上。调试器与被调试程序间可以进行通信,调试器可以控制、访问被调试程序,读取被调试程序的当前状态和改变被调试程序的运行状态。交叉调试器用于对嵌入式软件进行调试和测试。嵌入式系统的交叉调试器在宿主机上运行,并且通过串口或网络连接到目标机上。,嵌入式软件的编写和开发调试主要流程为:代码编写-交叉编译-交叉链接-重定位和下载-调试,如图所示。,交叉调试具有以下特点: *调试器和被调试的程序运行在不同的机器上。调试器运行在PC或工作站上,而被调试程序运行在各式的专用目标机上。 *调试器通过各种通信方式与目标机建立联系,如串口、并口、网络、

16、JTAG或者专用的通信方式。 *在目标机上一般具有某种调试代理,这种代理能与调试器一起配合完成对目标机上运行的程序的调试。这种代理可以是某种能支持调试的硬件,也可以是某种软件。*目标机可以是一种仿真机。通过在宿主机上运行目标机的仿真软件来仿真一台目标机,使整个调试工作只在一台计算机上进行。,整个嵌入式系统软件的开发一般在集成开发环境下完成。嵌入式系统的开发工作几乎使跨平台交叉开发,多数代码直接控制硬件设备,硬件依赖性强,对时序的要求十分苛刻,很多情况下 的运行状态都具有不可再现性。 嵌入式集成开发环境关键技术包括项目建立和管理工具、源代码级调试技术、系统状态分析技术、代码性能优化技术、运行态故

17、障监测技术、图形化浏览工具、代码编辑辅助工具以及版本控制工具等。嵌入式集成开发环境包括可裁减的实时操作系统,宿主机上的编译、调试、查看等工具,以及利用串口、网络ICE等宿主机与目标机的连接工具。 (4)测试嵌入式系统开发的测试与通用软件的测试相似,分成单元测试和系统集成测试。,4固化阶段 嵌入式应用软件调试完成以后,编译器要对源代码重新编译一次,以产生固化到目标环境的可执行代码,在烧写到目标环境的Flash中。固化的可执行代码与用于调试的可执行代码有一些不同。固化用的代码在目标文件中把调试用的信息都屏蔽掉了。固化后没有监控器执行硬件的启动和初始化。启动模块和固化代码都定位到目标环境的Flash中,有别于调试过程中都在目标机的RAM中运行。 可执行代码烧写到目标环境中固化后,还要进行运行测试,以保证程序的准确无误。固化测试完成后,整个嵌入式应用软件的开发就基本完成了,剩下的就是对产品的维护和更新了。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 经营企划

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