嵌入式系统高级编程语言技术分析.docx





《嵌入式系统高级编程语言技术分析.docx》由会员分享,可在线阅读,更多相关《嵌入式系统高级编程语言技术分析.docx(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式系统高级编程语言技术分析shixiang导语:从嵌入式系统高级编程语言特点入手,对高级语言的根本性能作扼要总结摘要:随着嵌入式技术的普及推广,嵌入式系统高级语言编程势在必行。然而,人们在选择语言系统时往往具有很大的随意性。对价格、获取方便性等因素考虑较多,而对语言本身的技术因素考虑较少。文章从嵌入式系统高级编程语言特点入手,对高级语言的根本性能作扼要总结,对目前比拟流行的几种嵌入式系统编程语言Ada、C/C+、Modula-2的根本技术性能进展分析比拟;对Java作扼要介绍。关键词:嵌入式系统高级语言根本性能编程特点一、嵌入式系统高级语言编程特点随着嵌入式系统应用范围的不断扩大和嵌入式实
2、时操纵系统RTOSRealTimeOperatingSystem的广泛使用,高级语言编程已是嵌入式系统设计的必然趋势。由于汇编语言和详细的微处理器的硬件构造亲密相关,移植性较差,既不宜在复杂系统中使用,又不便于实现软件重用;而高级语言具有良好的通用性和丰富的软件支持,便于推广,易于维护。因此高级语言编程具有很多上风。1通用性强。随着微处理器技术的不断开展,其功能越来越详细,种类越来越多,而不同种类的微处理器都有自己专用的汇编语言。这就为系统开发者设置了一个宏大的障碍,使得系统编程更加困难,软件重用无法实现;而高级语言一般和详细机器的硬件构造联络较少,比拟流行的高级语言对多数微处理器都有良好的支
3、持,通用性较好。2轻易编程。随着嵌入式系统应用范围的不断扩大和应用层面的不断深化,系统规模越来越大,构造越来越复杂,设计变得越来越困难。一个系统内有多种微处理器已是常见的事情。这时,要用汇编语言编程不仅要求编程人员要对所有微处理器的汇编语言都了如指掌,而且随着任务复杂程度的不断进步,用汇编语言实现规模较大的任务难度极大;而高级语言的语意层次较高,且有丰富的程序库支持,因此,编写较复杂的程序相对简单。使用高级语言编程,不仅可以加快系统开发进程,节省大量时间,同时也有利于系统调试及维护工作。3轻易浏览。由于汇编语言的语意层次较低,在浏览汇编语言程序时,往往要花费大量精力分析细节问题,如为什么把一个
4、数据传送给一个存放器,为什么把某个标志位清零等。当把留意力放在这些细节上的时候,往往又把程序的主线忘记了。因此,汇编语言程序不仅难写,而且难读。采用高级语言就可以很好地解决这些问题。由于高级语言的语意层次较高,表达方式更接近人们日常的思维方法,一些数学表达式可以直接用一条语句表达,程序的思路更加明晰、简捷。因此,程序也就轻易浏览。4可移植性好。由于汇编语言和详细的微处理器亲密相关,为某个微处理器设计的程序不能直接移植到另一个不同种类的微处理器上使用,因此,移植性差;而高级语言对所有微处理器都是通用的,因此,程序可以在不同的微处理器上运行,可移植性较好。这是实现软件重用的根底。5可维护性好。高级
5、语言程序往往是模块化设计,各个模块之间的接口是固定的。因此,当系统出现问题时,可以很快地将问题定位到某个模块内,并尽快得到解决。另外,模块化设计也便于系统功能的扩大和晋级。6直接支持中断治理。中断是嵌入式系统最重要也是最常用的信息交换方式,因此中断系统是否灵敏,中断功能是否强大对系统的性能影响极大。在高级语言中,一般都有强大的中断治理机制,以便构建高效灵敏的中断系统;而在汇编语言中,一般要由程序设计者自己编程来进展中断治理。这不仅增加了编程的难度,而且效果也不一定好。7支持软件重用。由于汇编语言的可移植性极差,使得其软件重用性严重受阻;而高级语言具有较好的通用性和可移植性,这就使得高级语言程序
6、可以在不同时间、不同地点、不同系统、不同人员之间共享,实现软件重用。这不仅可以进步产品质量,缩短开发周期,降低产品本钱,而且还可以使软件开发走上正规化、产业化的道路1。二、嵌入式系统高级编程语言概述在过去40多年,人们开发研制了几十种计算机语言,但是仅有少数几种得到了广泛应用。这就提示我们选择一个适宜的语言系统并不轻易。在小型嵌入式系统中,通常只有一个微处理器,并且其主要工作往往不是计算,而是控制,应选择控制才能较强的语言。在大型嵌入式系统中,往往会有多个微处理器或者计算机并行工作,构成多机系统。它们中有些工作于真正的嵌入式形式,有的那么为纯粹的信息处理。此时,对系统的编程就变得相当复杂,不同
7、的任务可能会用不同的语言编程。因此,大型系统往往是一个多语言系统。对于这种混合系统的语言选择更应慎重考虑。目前,在嵌入式系统开发经过中使用的语言种类很多,但仅有少数几种语言得到了比拟广泛的应用。本文选择了Ada、C/C+、Modula-2作为讨论对象,并对Java作扼要介绍。Ada语言是20世纪70年代美国国防部开发并投入使用的功能强大的通用系统开发语言,最初为Ada83。它支持模块化、独立编译、协处理等功能。其可靠性、可维护性、可读性都是相当好的。后来,为了更好地支持OOPObject-OrientedProgramming,对其进展了改良,形成了目前广泛使用的Ada95。使用Ada语言可以
8、大大改善系统的明晰性、可靠性、可维护性等性能指标2,3。它是美国国防部指定的唯逐一种可用于军用系统开发的语言。C语言是由DennisRichie于1972年在AT&Bell实验室研究成功并投入使用的系统编程语言。其设计目的是使C既具有汇编语言的效率,又具有高级语言的易编程性。其最具代表性的应用是UNIX操纵系统。从20世纪80年代中期C语言涉足实时系统后,受到了普遍欢送。目前是使用最广泛的嵌入式系统编程语言。C+是由BjarneStroustrup于1995年在Bell实验室研制成功并投入使用的。C+在支持当代软件工程、OOP、构造化等方面对C进展了卓有成效的改良,但在程序代码容量、执行速度、
9、程序复杂程度等方面比C语言程序性能差一些2,4,5。Modula-2是由NicklansWirth在70年代后期根据Pascal和Modula开发的系统设计语言。其主要目的是在模块化、系统编程、协同处理等方面对Pascal进展改良。Modula-2具有很强的类型检查才能和丰富的低级功能支持。因此,可用它设计一个完好的实时程序而不用汇编语言的支持。Modula-3是1988年由DECDigitalEquipmentCompany和ORCOlivettiResearchCenter根据Modula-2开发研制并投入使用的系统开发语言。目的是设计一个功能强大但构造简单的通用编程语言。它在协同处理、O
10、OP、自动垃圾采集以及对C语言和UNIX的支持等方面对Modula-2进展了改良6。考察一门语言是否适用,需要从多个方面进展考虑。不同语言,都有自己的特色。很难将其全面进展比拟。另外,任何一门语言的运行特性都与运行环境亲密相关,因此,选择语言时,应综合考虑。为表达方便,我们把语言的性能划分为根本性能和运行性能两个方面进展分析。1根本性能一门语言的根本性能主要是指语言本身的固有特性,或者称静态特性,即构成语言的组成局部所具有的特性。它不仅决定着语言的可用性、适用性、可靠性等,而且对应用程序的开发产量、便携性、可维护性、平安性也有一定影响。它是一门语言的核心和基石。考察语言的根本性能主要从以下几个
11、方面入手:与汇编语言/机器语言的接口,直接寻址,对硬件的控制,位操纵,中断处理,指针操纵,数据类型的支持及检测,控制构造的支持及检测,模块化支持,独立编译支持,任务构造支持,异常事件处理,数学模型支持,语法和整体构造,多任务支持,标准程序库,面向对象编程OOP构造等。2运行性能语言的运行性能是指其应用软件在实际运行时所表现出来的行为特点,是一门语言的动态特性。它对语言的适用性、实用性及可用性影响极大。主要表如今任务期限设置、代码执行时间的简单评价,调度策略选择,时序分析支持等几个方面。由于语言的运行性能和运行环境亲密相关,如CPU速度、内存大小、硬盘速度、操纵系统、编译环境等。因此,评价语言的
12、运行性能应和详细的应用环境联络起来,任何理论上的评价都没有多大的实际意义。故本文不再讨论这方面的内容。三、常用嵌入式系统高级编程语言根本性能一门语言的根本性能是组成这门语言的根本要素,是决定其性能好坏的关键因素。因此,认真研究语言的根本性能是非常必要的。下面对上述几种流行的嵌入式系统编程语言的根本性能进展简单的分析和比拟7。1与汇编语言和机器代码的接口在Ada语言中,可以通过子程序功能实现对汇编语言及机器代码的访问。标准程序包MACHINE-CODE支持这一功能。在C中,汇编语言可以定义为一个asm模块嵌入在C源代码中,也可以编写成一个独立的外部进程,用功能调用进展通讯。宏Macros也可以用
13、来提供汇编语言操纵。语言本身没有提供这方面的机制,由编译器提供支持。2直接寻址Ada通过SYSTEM包中的Address类寻址绝对地址;C/C+通过指针完成绝对寻址,在C+中也可以通过Peek、Poke操纵完成存储器寻址;Modula-2通过SYSTEM模块支持绝对寻址。3对硬件的访问和控制Ada通过表述从句把Ada代码映射到详细器件;C/C+通过指针完成对硬件的操纵;在Modula-2中器件被标识为具有绝对地址的对象,通过赋值语句访问这些对象。4位操纵Ada详细的位可以在表述从句中指明,多个独立位也可组成一个逻辑字,通过逻辑操纵对它们进展加工处理。位操纵是C的强项,逻辑操纵、移位操纵均可实现
14、位操纵;在C+中,还可以通过定义bitfields构造实现更多的位操纵功能。Modula-2用SET构造处理位操纵。在嵌入式应用中最有用的构造是BITSET,通过它可以方便地实现各种位操纵。5中断处理Ada通过中断处理任务实现中断处理。一个中断任务和一个中断矢量亲密相关,在中断矢量地址处存放中断任务入口地址。C/C+语言本身没有提供标准的中断处理机制,用户可以自行处理。Modula-2通过SYSTEM模块中的IOTRANSFER进程实现中断处理。用户也可以编写自己的中断处理程序。6指针三种语言都提供了较强的指针操纵。7数据类型检测Ada有严格的数据类型检测机制,混合类型是制止的,数据类型的转换
15、是允许的,但有严格的标准。C语言的数据类型检测功能较弱,在数据类型转换时可能会出现错误,C+有改良。Modula-2对数据类型检测严格,不允许不明确的数据类型转换。8程序控制构造Ada提供了一整套严格的程序控制构造以支持分支、循环等功能,也支持无条件转移;C/C+提供了分支、循环等控制构造,方便灵敏,但在使用时应留意防止不平安因素;Modula-2在分支、循环控制方面是很严格的,但在使用CASE-ELSE构造时应留意,在无条件转移时,用EXIT跳出循环,用RETURN完毕进程,使用时应多加小心。9模块构造与独立编译Ada程序的根本单元是subprogram、package、task和gener
16、ic,而编译的根本单元是subprogram和package,所有程序单元都可以独立编译,类型检查严格,没有公用数据区。C程序的根本单元是function,外部变量是全局变量,内部变量是部分变量;C+程序是假设干编译文件的集合,每个文件可以定义class、function全局变量等类型,每个文件可以独立编译。Modula-2的主程序由假设干程序模块和库模块组成,程序模块是程序单元的最高层,各模块可独立编译。10异常事件处理Ada提供了一个综合错误处理机制,用于处理由于语言本身和用户自己引起的异常事件;C/C+语言没有提供直接的异常事件处理机制,需由用户自己处理,C+V3.0提供直接的异常事件处
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 高级 编程 语言 技术 分析

限制150内