当前位置:文档之家› 嵌入式底层软件开发方法

嵌入式底层软件开发方法

嵌入式底层软件开发方法自从20世纪70年代单片机出现以来,嵌入式系统已获得了较为深入的研究,提出了一些嵌入式软件的开发方法,但嵌入式系统仍处于发展阶段,嵌入式系统已经显示出广阔的应用前景。

1.嵌入式系统的定义嵌入式系统又称为嵌入式计算机系统,是指嵌入到对象体系中的专用计算机系统。

对象系统则是指嵌入式系统所嵌入的宿主系统,嵌入性、专用性与计算机系统是嵌入式系统的三个基本要素。

嵌入式系统通常被描述为:以应用为中心,以计算机技术为基础,软硬件可剪裁,适应于应用系统对功能、可靠性、成本、体积和功耗有严格要求的专业计算机系统。

2.嵌入式系统的发展历程嵌入式系统是在硬件和软件交替发展的支撑下逐渐趋于稳定和成熟的,它有着悠久的历史。

从20世纪70年代单片机的出现到现在各种嵌入式微处理器、微控制器的大规模应用,嵌入式系统己经有了30多年的发展历史。

纵观嵌入式技术的发展,大致经历了以下几个发展阶段。

(1)无操作系统阶段:主要是以功能简单的专用计算机或单片机为核心的可编程控制器形式存在的系统,具有监测、伺服、设备指示等功能,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制。

主要特点是:系统结构和功能都相对单一,处理效率较低,存储容量较小,几乎没有用户接口,比较适合于各类专用领域。

(2)以嵌入式处理器和嵌入式操作系统为标志的嵌入式系统:主要特点是出现了高可靠、低功耗的嵌入式处理器,嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核精小、效率高,并且具有高度的模块化和扩展性;片上系统(System On Chip,SOC)使得嵌入系统越来越小,具有大量的应用程序接口,开发应用程序简单,应用软件丰富。

3.嵌入式系统的构成及其特点1)嵌入式系统的组成嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,具有专用性、可嵌入性、实时性、可移植性和分布式等特点。

其中,嵌入式微处理器是嵌入式硬件系统的核心部分,它担负着控制、协调系统工作的重要任务,通常具有实时多任务处理能力、中断处理能力、存储器保护能力和低功耗能力;支撑硬件主要包括存储介质、通信部件和显示部件等;支撑硬件的驱动程序、操作系统、应用软件等一起构成嵌入式软件。

2)嵌入式系统的特点嵌入式系统是一个软件和硬件的集合体,它将先进的计算机技术、半导体技术、电子技术与应用软件开发技术相结合,是一个技术密集、资金密集、不断创新的知识集成系统。

与通用计算机系统相比,嵌入式系统在很多方面独具特色,下面介绍了嵌入式系统的几大特点。

(1)软硬件紧密结合:嵌入式系统的主要特征之一是软件与硬件的紧密结合,其底层的组织结构常常因为所选用硬件体系的不同而发生变化。

平台差异性是不存在通用解决方案的主要原因之一,也使得嵌入式系统具有多种专用工具和特殊方法。

(2)多样性(专用性、定制性):每个嵌入式计算机系统总是跟具体的应用联系在一起,以应用为中心,为具体的应用服务。

因此嵌入式系统是多样化的,需要为满足不同的应用需求而专门定制,其中既包括硬件系统的多样性,也包括软件系统的多样性。

(3)资源有限性:受制造工艺和应用环境的限制,嵌入式系统拥有的资源十分有限。

主要表现在对整个计算机系统的体积、功耗、CPU(Central Processing Unit,中央处理器)的处理能力、存储器的容量和性能等方面都有较多的限制。

(4)高实时性:嵌入式系统的计算处理过程往往需要在规定时限内完成,这就要求系统对外部事件的反应要及时准确。

(5)低功耗:功耗问题是嵌入式系统设计中普遍关注的热点和难点,特别是对于电池供电的系统。

降低功耗不仅可以延长用电池供电的设备的工作时间,同时也可以更容易解决系统的散热问题。

(6)高可靠性:嵌入式系统对可靠性的要求与系统的规模、应用环境和目的有密切关系。

一些实时系统对可靠性的要求极高,如航空航天技术。

嵌入式系统的可靠性涉及到很多方面,如机械设计的可靠性、嵌入式硬件与软件的可靠性等。

4嵌入式系统开发的难点随着电子技术的发展及制造工艺的提高,嵌入式系统的片内ROM(Read Only Memory,只读存储器)容量不断增大,CPU执行速率不断提高,尤其是嵌入式操作系统的出现,这使得嵌入式系统在代码实现上发展迅速,现已出现了多种嵌入式编程语言及其编译环境,如嵌入式C、C++、Java、Linux等等。

尽管近几年嵌入式系统发展迅速,但嵌入式系统的特性及其开发方法的不完善,使得嵌入式系统的开发非常复杂和昂贵,嵌入式开发仍面临着以下重要的问题:(1)嵌入式系统分析和设计方面没有统一的标准:分析设计方法不统一、从分析设计到制作和编程没有一个始终一贯的工程化方法,使得产品形成的每一个过程受人为因素影响十分严重、分析设计的成果不能被开发类似项目或产品重用。

(2)嵌入式系统的专用性很强,嵌入式系统的一个最大特点就是软硬件紧密结合,为此,嵌入式软件(尤其是嵌入式底层软件)的设计和验证要充分考虑硬件因素。

软件需要根据系统硬件的变化和增减不断进行修改。

而且嵌入式系统中微处理器(Micro-ControllerUnit,MCU)的系列十分丰富,使得MCU的编译环境无法做到完全的通用。

(3)在实际产品应用中,嵌入式系统大多数是事件驱动的系统,而且外部事件是多发的和并发的随机事件,即异步事件。

嵌入式应用软件系统需要有效地处理并发事件,所以往往采用多线程(任务)运行机制,以适应这种复杂的并发环境,这就增加了软件设计的复杂度。

(4)嵌入式软件运行在特定的硬件体系和环境中,在进行设计时,不但需要考虑各个节点间的通信和同步问题,还需要考虑整个系统的时序问题。

(5)由于嵌入式系统多工作于工业企业现场或军用装备,不允许死机和系统重启发生,一旦出现故障,有可能造成整个生产的混乱,甚至产生严重后果,因此对可靠性和安全性要求很高。

这使得嵌入式系统对可靠性、防危性、和容错性等功能有更苛刻的要求。

以上几个方面的问题成为近几年来制约嵌入式系统发展的主要瓶颈,使得大部分从事嵌入式系统应用开发的组织和团体,基本上是采用小组甚至是作坊式的运作模式。

这使得开发较复杂或大型系统的工作变得十分困难甚至无法进行,或因为系统需求的不断变化、小组成员的流动导致项目失败。

1978年L.L.Constantine和E.Y ourdon提出了结构化的软件设计方法,经过30多年的研究及应用,已成为技术最成熟、应用最广泛的软件开发方法之一。

结构化方法强调过程抽象化和功能模块化。

其中,结构是指系统内各个组成要素之间的相互联系、相互作用的框架。

结构化方法的基本思想可以概括为:用系统工程的思想和工程化的方法,按用户至上的原则,自顶向下、逐步求精地对信息系统进行分析与设计。

采用模块化技术、分而治之的方法,将系统按功能分解为若干模块,模块内部由顺序、分支、循环基本控制结构组成,应用子程序实现模块化结构化方法是用基于功能分解的观点来分析和解决问题的,即把一个复杂的系统分解成若干个尽可能独立的子系统、子模块,采用“自顶向下”逐层分析,整个过程从一个阶段到另一个阶段,其间有明显的间隔。

任何软件系统都可以用数据流图表示,理论上,结构化方法可以用于任意一种软件系统的开发。

使用结构化方法开发的软件运行效率高,且能够增加软件规格说明的可读性及系统的可靠性,因为数据流图容易理解,有利于开发人员与客户的交流。

4.1结构化方法的不足结构化设计方法中,软件系统结构对系统功能的变化十分敏感,功能的变化往往意味着需要重新设计。

结构化方法中过程抽象化和功能模块化的特点使其在设计过程中有如下不足:1)与用户交流不直观,难以应对需求变化结构化分析设计是一种面向过程的方法,形成的系统模型实际上是信息的一种抽取,这种模型用户难以理解。

结构化分析设计对需求变化的适应能力比较弱,当用户需求信息发生变化或外界条件改变时,设计者无法直观地改变系统,必须映象为数据流及过程后才有可能实现。

2)开发过程繁琐,从分析到设计难以实现结构化分析设计中的数据流程图是分层次展现系统模型的,这样的设计方法难以详细地了解整个系统;而且结构化方法中设计文档很难与分析文档对应,因为二者的表示体系不一致,从分析到设计的“转换”不存在可靠的转换规则,而更多地是带有人为的随意性,容易因理解上的错误而埋下隐患。

3)开发周期长结构化分析设计强调弄清楚用户信息需求,事实上很多情况下信息需求是难以一次性弄清的,特别是比较大型的系统。

而且,设计过程中从结构化分析到结构化程序设计的转换不可靠,设计出的软件难以重用,进而延缓了开发的进度。

目前嵌入式系统的应用越来越广泛,作为嵌入式系统主要部分的嵌入式软件的需求也越来越大,但因为嵌入式系统实时性、安全性、硬件体系的多样性等特性的要求,在不同的嵌入式硬件体系上开发出高质量、符合各种要求的嵌入式软件的困难也越来越大。

在嵌入式系统的开发过程中,不仅要尽可能的缩减开发周期和费用,更重要的是开发出高质量的嵌入式应用程序。

这些嵌入式软件不仅要符合嵌入式系统可靠性、稳定性、实时性等要求,还要求满足软件的可重用性、可配置性和可扩展性,以提高嵌入式软件的开发效率和质量。

嵌入式系统规模不断扩大,嵌入式软件开发已变成一项极具挑战性、较复杂的任务。

嵌入式系统的基本特点对嵌入式软件系统的开发具有重要影响,这些影响主要包括:1)实时性的影响实时性是嵌入式系统的重要特性之一,影响着嵌入式软件设计的多个方面,如构件模型、应用设计、系统设计等方面。

在设计构件模型时,必须有效地表示实时属性,即构件的实现模型应该提供机制保证对构件接口的调用能够满足实时性要求;在设计软件体系结构时要特别重视解决并行、异步、中断等问题,以满足系统对实时性的要求;而在系统设计时,对构件的选择、修改、组装、系统验证与评估时都必须将实时性作为一个主要的设计要素。

2)资源有限性的影响资源有限性是嵌入式系统的独特点,其影响主要表现在构件模型和系统设计等方面。

在分析设计模型时,要求对有限的资源作出显式的描述,方便在系统设计阶段对构件的选用和对系统的验证,节省嵌入式系统的硬件资源(例如内存);而整体系统设计时,要充分考虑系统的有限资源,进行合理的系统设计。

3)应用专用性的影响专用性是嵌入式系统的三个基本要素之一,主要体现为嵌入式硬件体系的多样性。

为满足多样性的要求,在应用分析和设计时,要求识别出应用的共同点,确定应用的变化点,预测应用可能的变化,以设计出灵活易变的体系结构以适应领域内各种潜在的变化,使构件的重用性更高。

4)软件代码健壮性的要求嵌入式系统往往工作环境恶劣、受电噪声干扰较大,而且随着软件复杂度越来越高,系统运行不稳定的可能性愈来愈高,因此,嵌入式系统应用对软件的健壮性提出了更高的要求,追求更高的健壮性、可靠性是嵌入式软件的特点之一。

相关主题