摘 要:摘要:随着嵌入式应用的不断增长,传统的嵌入式软件开发方式已经无法满足日益增长的产品研发的要求。越来越多的人开始关注于嵌入式软件的开发方法,以求提高软件的开发效率,保证开发质量。本文运用构件化软件的相关开发技术,以嵌入式软件开发为中心,从实际需求出发,提出嵌入式软件开发的基本原则和思路。
关键词:关键词:嵌入式软件;开发;原则
中图分类号:TP311 文献标识码:A 文章编号:
嵌入式软件是指嵌入在硬件中的操作系统和开发工具。软件嵌入式系统的历史较为长久, 最初的领域主要集中在军事领域、航空领域以及工业过程控制等领域。从上世纪90年代中后期开始,互联网和通讯信息等事物的兴起使嵌入式系统逐渐进入了人们的生活当中, 这也促使了以嵌入式系统为代表的后pc时代的出现。计算机系统是嵌入式系统的中心, 实时性、专用性以及有限性是其突出特点。嵌入式软件的设计与常规的系统软件有共同的特性,但也有其特殊的一面。嵌入式软件的使用程度越来越广泛,对软件研发的要求也越来越高。通过对嵌入式软件开发原则和思路的研究,可以促进嵌入式软件开发工作的不断发展。
1.嵌入式软件开发的方法
1.1 结构化设计方法
结构化设计方法是各种设计方法中使用最广泛的设计方法, 它有着很强的自身优势,分为单任务的结构化设计方法和多任务的结构化设计方法,这两种不同的设计方法各有特点,适合不同情况下的设计应用。
(1)单任务的结构化设计方法
嵌入式软件可以理解为不断处理外部事件的过程, 单任务的结构化设计方法的核心是根据结构化的设计原则,将各个事件的处理模块进行较好的处理。然后在一个主循环中将这些模块进行循环的调用。
(2)多任务的结构化设计方法
多任务的结构化设计方法是先将模块进行划分, 然后将模块进行综合。这种方法与单任务的结构化设计方法有很大不同,这些模块被综合分配到多个任务中,并不是被综合在一个主循环中,并在多任务运行环境下执行。因此,多任务的结构化设计方法对系统硬件资源的要求也相对较高,而且需要RTOS 的支持,导致在硬件资源较为紧张的嵌入式系统中无法使用。
1.2 面向对象的设计方法
面向对象设计方法与多任务设计方法不同,它将数据与数据上的操作密封于实体中, 想要访问对象,只能通过消息的方式,这相对增加了安全系数。面向对象的设计方法符合人们的思考方式, 对象之间不用再对对方内部细节进行了解。 另外,面向对象的设计方法可以捕捉大规模应用的设计模式, 将软件体系结构的重用性大大提高。因此,面向对象的设计方法使软件更加便于理解和管理。将软件的扩展性、维护性和重用性提升到新的高度。
1.3 基于构件的设计方法
构件化的软件提高软件开发效率的方式主要是利用提高软件的重用性实现的。这种设计方法强调软件体系结构的重要性。构件最突出的特点是其独立性、重用性较强。重用性更加侧重于构件对于软件的重要性,独立性则更加强调构件实现这种目的手段。
2. 嵌入式软件开发的原则和思路
2.1 全面分析系统,做好接口定义
(1)做好前期分析,形成指导提纲
系统分析要求对设计的每一个环节都要做到认真仔细,既要对细节用心考虑,又要对整体有较为系统的考虑。因此,在系统分析的前,做好前期分析,形成切实可行的提纲,会帮助开发者提高效率。做好分析工作对整个设计工作意义重大,但是如果局限于大脑中的思考,而不形成书面性质的文字记载,不仅很难做到分析的全面,而且很难实现透彻的分析。有了较好的实现方案,可以帮助设计者整理思路,减少工作中的弯路,也可以利用其不断改进设计方法,从而实现程序的简化和高效。
(2)接口以及定义
接口的含义就是对一个外部调用函数的较为完整的定义。在一个模块设计中,通常会有很多局部函数,这些局部函数虽然功能相对简单,但是对却对重要模块的实现起着辅助作用。与局部函数相对应的是,在一个模块的设计中,通常会有一个或多个函数。对于外部调用所设计的那些函数,必须写清楚它们的参数类型、参数范围以及限制。以上就是我们所讨论的接口。
在模块中,外部调用的函数和内部使用的函数是不用的,我们必须注意区分清楚。通常情况下,遇到多个源文件时,会有一个定义这些接口的头文件。最好将那些外部调用接口以集中放置在头文件中。另外,局部调用函数的声明同样应该集中放置,这样做好处是方便了文件的阅读。为了保证头文件的简洁,应该加上简单的注释。
2.2 优化函数算法
算法对于嵌入式软件非常重要,通过优化函数算法,会提升软件性能,帮助软件改进。
优化函数算法主要有以下几种方式:(1)用缩略单词代替完整的短句。(2)函数名的大小写、分隔符的使用以及其风格都应保持一致。(3)在头文件中,会有非常多的常量、数据结构和外部函数需要定义,这就要求必须保证良好的习惯。
应该注意对常量定义进行说明,包括每个常量和字段的意义都需要说明。定义数据结构的时候,同样需要对每个字段进行说明,明确用途和取值范围。在接口的组成部分中,数据结构是其中十分重要的一环。因此定义一个新的数据结构时,要做到进行全面的考虑。通常情况下,结构一旦定好,不要随意进行修改,并且在定义之前要进行注释说明。
算法的优化对于函数的实现相当重要。很多人错误地认为数值计算里的算法,或者计算优先才称得上算法。事实上,软件策略同样是算法的一种。例如调试算法和存储器替换算法,这些都是处理事务的方法,是一种策略。因此,程序设计中的算法是包括了计算方法设计的算法以及音视频使用的算法,是一种广义的概念。算法也体现在循环、数据结构设计等多个方面。
程序算法的优化,目的主要有两个:优化运行时间和代码的存储空间。一个是在时间上的优化,另一个则是空间方面的优化。优化后的成果表现为占用的内存空间小,而运行也得以提高。如果能够将两者兼顾,那么这种算法就是一种优秀的、适合的算法。但是往往这二者难以平衡,就需要根据情况进行适当取舍。
2.3 简化代码,增加注释
对于代码和注释进行的改变主要是在程序设计后期进行的工作。第一,优化局部代码。主要的优化方式如改变循环体结构、初始化设置局部变量、优化相关的算法结构以及合并类似分支等方式。第二,将无用的局部变量删除,修改代码,并且补充注释,通过注释增强代码的可读性。
2.4 根据测试
,不断完善
在程序设计后期,对设计好的程序进行调试和改进是必不可少的工作。它是发现程序漏洞、完善程序功能的非常重要的一个工作过程。在这个过程中,系统软件的设计需要与其他模块互动。在设计初期,很难对某个单一模块进行测试,设计人员在进行模拟测试的时候要设计一些案例,例如可以通过将外部调用做成一些空函数而进行实验。这种方式用来对模块之间的牵连进行割裂。
还有一项工作就是对做好的分析文档进行完善,这项工作也十分重要。虽然看似增加了一个工作步骤,但是,建立全面分析文档会对整个嵌入式软件的开发起到很大帮助作用。文档的内容主要包括:对模块功能的描述、系统框图、系统中的位置以及接口的定义。另外算法、编译环境和测试步骤也应该记录在文档中。
3. 结语:
嵌入式软件有其鲜明的自身特点,因此被广泛地运用在各个领域中。嵌入式软件的开发具有重要价值, 与其相关的开发工作也一直在不断进步中。本文围绕嵌入式软件开发从不同角度提出了一些原则和思路,以便在今后的嵌入式软件的设计工作中作为借鉴,促进相关开发工作的顺利进行。
参考文献:
[1]电子科技大学计算机学院.CRTOS x86/ pm 嵌入式实时操作系统原理与应用设计[Z].增补版.成都:电子科技大学, 2000.
[2] 赵秋云,魏乐,刘文清. 嵌入式软件的构件化开发研究[J]. 科技资讯. 2007(12)