嵌入式系統(tǒng)高級編程語言技術(shù)分析
http://www.liuguo.net 摘要 隨著嵌入式技術(shù)的普及推廣,嵌入式系統(tǒng)高級語言編程勢在必行。然而,人們在選擇語言系統(tǒng)時往往具有很大的隨意性。對價格、獲取方便性等因素考慮較多,而對語言本身的技術(shù)因素考慮較少。文章從嵌入式系統(tǒng)高級編程語言特點入手,對高級語言的基本性能作簡要總結(jié),對目前比較流行的幾種嵌入式系統(tǒng)編程語言——ada、c/c++、modula-2的基本技術(shù)性能進(jìn)行分析比較;對java作簡要介紹?! £P(guān)鍵詞 嵌入式系統(tǒng) 高級語言 基本性能 編程特點一、 嵌入式系統(tǒng)高級語言編程特點 隨著嵌入式系統(tǒng)應(yīng)用范圍的不斷擴大和嵌入式實時操作系統(tǒng)rtos(real time operating system)的廣泛使用,高級語言編程已是嵌入式系統(tǒng)設(shè)計的必然趨勢。因為匯編語言和具體的微處理器的硬件結(jié)構(gòu)密切相關(guān),移植性較差,既不宜在復(fù)雜系統(tǒng)中使用,又不便于實現(xiàn)軟件重用;而高級語言具有良好的通用性和豐富的軟件支持,便于推廣,易于維護(hù)。因此高級語言編程具有許多優(yōu)勢。(1) 通用性強。隨著微處理器技術(shù)的不斷發(fā)展,其功能越來越具體,種類越來越多,而不同種類的微處理器都有自己專用的匯編語言。這就為系統(tǒng)開發(fā)者設(shè)置了一個巨大的障礙,使得系統(tǒng)編程更加困難,軟件重用無法實現(xiàn);而高級語言一般和具體機器的硬件結(jié)構(gòu)聯(lián)系較少,比較流行的高級語言對多數(shù)微處理器都有良好的支持,通用性較好。(2) 容易編程。隨著嵌入式系統(tǒng)應(yīng)用范圍的不斷擴大和應(yīng)用層面的不斷深入,系統(tǒng)規(guī)模越來越大,結(jié)構(gòu)越來越復(fù)雜,設(shè)計變得越來越困難。一個系統(tǒng)內(nèi)有多種微處理器已是常見的事情。這時,要用匯編語言編程不僅要求編程人員要對所有微處理器的匯編語言都了如指掌,而且隨著任務(wù)復(fù)雜程度的不斷提高,用匯編語言實現(xiàn)規(guī)模較大的任務(wù)難度極大;而高級語言的語意層次較高,且有豐富的程序庫支持,因此,編寫較復(fù)雜的程序相對簡單。使用高級語言編程,不僅能夠加快系統(tǒng)開發(fā)進(jìn)程,節(jié)省大量時間,同時也有利于系統(tǒng)調(diào)試及維護(hù)工作。(3) 容易閱讀。由于匯編語言的語意層次較低,在閱讀匯編語言程序時,往往要花費大量精力分析“細(xì)節(jié)”問題,如為什么把一個數(shù)據(jù)傳送給一個寄存器,為什么把某個標(biāo)志位清零等。當(dāng)把注意力放在這些“細(xì)節(jié)”上的時候,往往又把程序的主線忘記了。因此,匯編語言程序不僅難寫,而且難讀。采用高級語言就可以很好地解決這些問題。因為高級語言的語意層次較高,表達(dá)方式更接近人們?nèi)粘5乃季S方法,一些數(shù)學(xué)表達(dá)式可以直接用一條語句表達(dá),程序的思路更加清晰、簡捷。因此,程序也就容易閱讀。(4) 可移植性好。由于匯編語言和具體的微處理器密切相關(guān),為某個微處理器設(shè)計的程序不能直接移植到另一個不同種類的微處理器上使用,因此,移植性差;而高級語言對所有微處理器都是通用的,因此,程序可以在不同的微處理器上運行,可移植性較好。這是實現(xiàn)軟件重用的基礎(chǔ)。(5) 可維護(hù)性好。高級語言程序往往是模塊化設(shè)計,各個模塊之間的接口是固定的。因此,當(dāng)系統(tǒng)出現(xiàn)問題時,可以很快地將問題定位到某個模塊內(nèi),并盡快得到解決。另外,模塊化設(shè)計也便于系統(tǒng)功能的擴充和升級。(6) 直接支持中斷管理。中斷是嵌入式系統(tǒng)最重要也是最常用的信息交換方式,因此中斷系統(tǒng)是否靈活,中斷功能是否強大對系統(tǒng)的性能影響極大。在高級語言中,一般都有強大的中斷管理機制,以便構(gòu)建高效靈活的中斷系統(tǒng);而在匯編語言中,一般要由程序設(shè)計者自己編程來進(jìn)行中斷管理。這不僅增加了編程的難度,而且效果也不一定好。(7) 支持軟件重用。由于匯編語言的可移植性極差,使得其軟件重用性嚴(yán)重受阻;而高級語言具有較好的通用性和可移植性,這就使得高級語言程序可以在不同時間、不同地點、不同系統(tǒng)、不同人員之間分享,實現(xiàn)軟件重用。這不僅可以提高產(chǎn)品質(zhì)量,縮短開發(fā)周期,降低產(chǎn)品成本,而且還可以使軟件開發(fā)走上正規(guī)化、產(chǎn)業(yè)化的道路[1]。二、 嵌入式系統(tǒng)高級編程語言概述 在過去40多年,人們開發(fā)研制了幾十種計算機語言,但是僅有少數(shù)幾種得到了廣泛應(yīng)用。這就提示我們選擇一個合適的語言系統(tǒng)并不容易。在小型嵌入式系統(tǒng)中,通常只有一個微處理器,并且其主要工作往往不是計算,而是控制,應(yīng)選擇控制能力較強的語言。在大型嵌入式系統(tǒng)中,往往會有多個微處理器或計算機并行工作,構(gòu)成多機系統(tǒng)。它們中有些工作于真正的嵌入式模式,有的則為純粹的信息處理。此時,對系統(tǒng)的編程就變得相當(dāng)復(fù)雜,不同的任務(wù)可能會用不同的語言編程。因此,大型系統(tǒng)往往是一個多語言系統(tǒng)。對于這種“混合”系統(tǒng)的語言選擇更應(yīng)慎重考慮。 目前,在嵌入式系統(tǒng)開發(fā)過程中使用的語言種類很多,但僅有少數(shù)幾種語言得到了比較廣泛的應(yīng)用。本文選擇了ada、c/c++、modula-2作為討論對象,并對java作簡要介紹?! da語