嵌入式系统开发方法综述刘丹(机械工业仪器仪表综合技术经济研究所,北京市 100055)Liu Dan(Instrumentation Technology & Economy Institute, Beijing 100055)Development Methods of Embedded SystemAbstract: Embedded systems have particular properties, such as real-time, concurrency, distribution, high reliability,and etc., which lead to large challenges and urgent requirements for corresponding methods and tools when developing such systems. From the view of engineering practice, the paper summarizes what problems developers will face during embedded system design, and what main methods and technologies will be used for resolving such problems. These methods and technologies are called embedded system developing methods.Key words: Embedded System HW-SW Co-Design Method Formal Modeling Method Structural Design Method Object-Oriented Design Method【摘 要】嵌入式系统的实时性、并发性、分布性和高可靠性等特点使得系统的开发面临巨大挑战,迫切需要相应开发方法的指导和开发工具的支持。
本文从工程实践角度出发,总结在嵌入式系统设计过程中,开发人员会面临哪些主要问题,以及为解决问题而产生哪些主要方法和技术。
这些方法和技术被统称为嵌入式系统的开发方法。
【关键词】嵌入式系统 软硬件协同设计方法 形式化建模方法 结构化设计方法 面向对象设计方法收稿日期:2008-08-01作者简介:刘丹(1977-),女,博士,毕业于中科院沈阳自动化研究所,现就职于机械工业仪器仪表综合技术经济研究所,主要从事工业自动化、控制网络的技术和标准化研究,现负责PROFIBUS PA产品的认证测试工作。
引言嵌入式系统是指以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用环境对功能、实时性、可靠性、成本、体积、功耗等严格约束的专用计算机系统。
嵌入式系统的内容广泛,小到一个芯片,大到复杂的分布式系统都可以称为嵌入式系统,通常以SoC、单片机、单板机、多板式箱式结构、嵌入式PC等形式嵌入到信息家电、数字通信、工业控制、航空航天、医疗设施、军事电子等领域的设备或系统中,作为处理和控制的核心。
嵌入式系统的实时性、并发性、分布性和高可靠性等特点使得系统的开发面临巨大挑战,迫切需要相应的开发方法的指导和开发工具的支持。
嵌入式系统开发方法的研究内容包括设计方法论、工程开发技术、以及相应辅助工具的开发。
现代的系统开发是一个基于模型(model-based)的,从规约到实现的过程。
模型是反映真实世界和系统实现两方面的抽象,帮助开发人员把握应用的最重要特性,是系统分析与验证的基础,并为软件和硬件的实现要素提供表示视图。
因此,系统模型设计在整个开发过程中最为重要。
此外,任何工程开发技术都是在一定设计方法基础上提出一系列开发步骤,辅助工具则为这些设计方法和开发技术提供自动或半自动的工具支持。
因此,设计方法决定了系统开发过程中的其它分析、验证、实现等方法,或者广义上说,系统的设计方法就是系统的开发方法。
本文从工程实践角度出发,总结在嵌入式系统设计过程中,开发人员会面临哪些主要问题,以及为解决问题而产生哪些主要方法和技术。
这些方法和技术被统称为嵌入式系统的开发方法。
1 软硬件“分离”设计方法与软硬件协同设计方法首先,用户或产品开发决策者要根据对产品性能、体积、开发成本以及上市时间等设计指标的评估,决定系统最终是以电路板式,还是以芯片式的形式实现。
一般而言,对性能和体积要求不高,产品数量小,如1~几百个,但要求上市时间早的嵌入式系统,多采用电路板式实现;反之,系统体积小,产品数量大,但对上市时间要求比较松的嵌入式系统,多采用SoC芯片式实现。
相应地,对于设计者而言,不同的实现形式一般应用不同的设计方法,包括软硬件“分离”设计和软硬件协同设计。
Review and Research1.1 软硬件“分离”设计方法计算机科学发展最初阶段,软件和硬件的设计流程截然不同,软件设计者编写程序,硬件设计者连接元件,所以软件设计和硬件设计不可能交互,必须单独进行。
这种传统的设计方法可以被称为软硬件“分离”设计,与软硬件协同设计相对。
软硬件“分离”设计方法中,软硬件划分在系统开发的初期阶段进行,划分是一次性的,一旦划分后软件和硬件所分配的功能就不能改变。
经划分后软件和硬件的设计与实现一般并行推进。
其设计的基本思想是,软件通过编写程序运行在微处理器上实现系统全部或大部分功能,硬件则主要通过“板级”专用电路为软件运行提供平台。
如果有特定功能需要硬件实现,一般可直接购买预先设计好的相应专用处理器芯片,如以太网芯片等。
因此,系统设计的重点在于软件设计,这也是过去几十年嵌入式系统设计方法研究的重点。
在硬件未交付使用前,软件可以在demo板上进行编码与调试,或者在PC机上进行仿真。
软硬件“分离”设计方法使得联调必须在软件和硬件都开发出来后才能进行,暴露出越来越多问题。
如由于软硬件开发过程割裂和软硬件划分不协调而导致低效设计;不能及时进行全系统验证而导致系统重新开发;硬件系统是为满足特定应用需要而开发的专用电路板,缺乏对设计重用的支持等。
为避免和解决这些问题,需要产生新的嵌入式系统的设计方法。
1.2 软硬件协同设计方法深亚微米半导体技术的发展使得将整个嵌入式系统集成在一块芯片上实现成为可能。
也就是说,集成电路IC容量已经增长到可以让软处理器和硬处理器共存于单个芯片上形成SoC。
软处理器技术是指编写运行在通用微处理器上的软件程序实现功能,硬处理器技术是指定制专用数字电路实现功能。
这一趋势使得过去软件和硬件设计的分离不再现实。
另一方面,虽然过去几十年来软件和硬件领域的设计起点是由非常不同的设计描述组成,如软件用机器指令、硬件用逻辑门进行描述,但随着软件编译和硬件综合技术的并行发展,如今两个领域都以时序程序描述行为作为设计的起点,如软件使用C语言、硬件使用VHDL进行描述。
这使得将两个领域合二为一的设计即软硬件协同设计成为可能。
软硬件协同设计是专为SoC的设计产生的方法,自上个世纪90年代初以来取得了很大发展。
软硬件协同设计方法综合软件和硬件的设计规则,提供统一方法与工具,对系统软硬件进行描述、综合和验证。
其基本思想是,在设计过程的各个阶段,同时考虑软件和硬件的功能和性能,找到软件和硬件的最佳组合方式——在满足系统功能和性能的前提下,使得设计所需的硬件逻辑门和存储器最少,消耗的功率更小等。
软硬件协同设计首先以一种或几种计算模型为基础,并以支持所选计算模型的描述语言或建模语言为工具,对整个系统的功能、行为和性能进行描述。
计算模型的选择要求使得系统模型既能够方便转换为硬件描述语言,又能够转换为软件程序代码。
软硬件协同设计常用的计算模型、描述语言和建模语言包括Petri网、有限状态机、SystemC、SDL和UML等。
软硬件协同设计方法中,软硬件划分就是将系统模型的一部分分配给硬件,通过设计专用数字电路实现功能,另一部分分配给软件,通过编写程序代码实现功能。
对于某个特定功能而言,选择软件还是硬件实现只是在不同设计指标,包括性能、功率、大小、灵活性等之间进行取舍,软件实现或硬件实现没有本质的区别。
一般软件实现灵活性好并降低成本,硬件实现则可以提高精确性和性能并降低功耗。
软硬件协同设计的最大好处有两点:一是在设计过程的任何阶段都能选择用硬件或软件来实现功能,因此可以获得系统最佳的实现方式;二是在系统实现前可以进行协同仿真和协同验证,保证系统设计的正确性和完整性。
这两点是传统的“分离”设计方法无法达到,却又是嵌入式系统设计急需解决的问题。
但是由于软硬件协同设计方法要求硬件设计人员具备更多的专业知识与技能,增加了系统的开发难度。
目前电路板式硬件系统仍然是嵌入式系统的主要形式,面向SoC的软硬件协同设计还未成为嵌入式系统的主流设计方法。
但是随着技术的不断发展,软硬件协同设计必将成为嵌入式系统设计最关键的方法与技术。
2 非形式化建模方法与形式化建模方法设计者为构建系统模型,需要解决两方面问题。
一方面,设计者要决定采用什么方法或手段对系统进行建模,即为系统模型选择基本的计算模型或图形符号。
根据计算模型的形式化程度不同,建模方法可以分为两类:一类方法以具有严格语法和语义定义的数学模型或形式化模型为基础,称为形式化建模方法;论述与研究另一类方法则使用不具有严格语法和语义定义的自然语言或简单的图、表、符号等描述系统,称为非形式化建模方法。
建模方法的选择由系统的可靠性要求和计算模型的可用性共同决定,一般需要二者的折衷。
可靠性要求高的嵌入式系统必须采用形式化方法建模以保证模型正确性。
2.1 非形式化建模方法非形式化建模方法简称非形式化方法。
只要用来创建系统模型的计算模型或建模语言没有严格的语法和语义定义,该建模方法就属于非形式化方法(informal)方法或欠形式化(less formal)方法,如传统的用图、文本、表格或简单符号等进行系统分析和设计的方法。
虽然对非形式化方法小心运用并结合彻底检查可以实现高质量系统的开发,但是文本或简单符号的应用偏差可能产生各种问题,如多个子模型描述系统相同方面的特性是矛盾的或不一致的,当模型被解释或翻译时产生二义性或歧义,模型所描述的系统功能或行为是不完整的。
因此,很难保证在模型基础上的系统实现是正确的,从而无法满足嵌入式系统对高可靠性的要求。
可靠性的保证取决于两个方面,一是产品的验证与测试,二是开发的方法与过程。
在安全关键的(safety-critical)嵌入式系统开发中,可靠性不能通过测试和反复试用来保证,需要一种良好构造的(well-structured)和形式化的方法,使得在系统实现前经过严格的设计、分析和验证。