1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      C++嵌入式系統(tǒng)中應用

      更新時間: 2006-02-13 16:11:56來源: 粵嵌教育瀏覽量:3269

        轉換舞臺

        C++作為一種編程語言,從其誕生之日至今,已經在軟件業(yè)的歷史上扮演了至關重要的角色。它強大的語言功能和靈活的語言機制是無數(shù)程序員為之折腰。而C++中蘊含的OO,GP等編程思想,更是潛移默化的影響了軟件的架構方法。從這個層面上講,C++的影響已經不僅僅是一門編程語言這樣簡單。然而隨著Internet的發(fā)展及其帶來的B/S架構軟件的興起。新興的Java/C#/VB.NET等基于虛擬機語言及Ruby/Groovy等動態(tài)語言作為后起之秀,憑借其獨有的快速開發(fā)、簡單易用等特性,開始逐漸挑戰(zhàn)C++的地位,在企業(yè)計算領域占據(jù)了越來越重要的地位。拋開企業(yè)計算,我們轉換舞臺,來看一看C++語言在另一塊群雄紛爭的領域上的身影。

        嵌入式系統(tǒng)編程

        “嵌入式”是一個很大的話題,它涉及的領域相當廣泛,涵蓋了硬件設計與軟件開發(fā)。大致來說,嵌入式系統(tǒng)有三個特點:嵌入性,專用性和計算性。嵌入性表示系統(tǒng)通常需要嵌入到其他對象系統(tǒng)中,小到計算器、MP3,大到導彈、航天飛機等等。因此必須滿足對象系統(tǒng)的環(huán)境要求,如物理環(huán)境(小型)、電氣環(huán)境(可靠)、成本(價廉)等要求。專用性表示系統(tǒng)的軟硬件要有可裁剪性;滿足對象要求的小軟、硬件配置等。計算性表示嵌入式系統(tǒng)必須是能滿足對象系統(tǒng)控制要求的計算機系統(tǒng)。正是由于應用系統(tǒng)的環(huán)境復雜多樣,嵌入式系統(tǒng)的軟硬件種類也非常繁多。按照應用需求,處理器可能從4位到128位,內存可能從幾K到幾百M甚至幾G不等。長久以來,提到嵌入式軟件大家首先聯(lián)想到的可能是慢得可憐的處理器和少得可憐的內存及外存,通常我們稱此為資源受限的環(huán)境。可以預言,在現(xiàn)在及將來的很長一段時間內,很多嵌入式軟件將繼續(xù)在資源受限的環(huán)境下開發(fā)。在資源受限的環(huán)境下,代碼的體積、執(zhí)行的效率通常都是程序員關注的因素。正因如此,長期以來,C語言甚至匯編語言在嵌入式領域占據(jù)了非常廣闊的市場。C++語言之所以沒有從一開始就在嵌入式領域遍地開花,也不是沒有原因的。首先,還是由嵌入式應用種類繁多的特點決定,我們永遠也不會用ISO C++在四位芯片上編程控制彩燈閃爍(當然這也不是不可以),這種工作只需要幾條匯編語句就可以完成,用C++無易于“高射炮打蚊子”。更重要的一點,ISO C++標準定義了C++的語法規(guī)范,但是并沒有定義其相對應的開銷。現(xiàn)實情況是,在一些編譯器的具體實現(xiàn)上,有一些ISO C++的語法特性會導致代碼體積膨脹和執(zhí)行效率的低下。這導致了一些關注嵌入式系統(tǒng)效率與性能的開發(fā)人員不愿意使用C++作為嵌入式軟件的開發(fā)語言。

        讓C++為嵌入式系統(tǒng)服務

        雖然使用C++有可能會對嵌入式軟件帶來額外的開銷,但是這并沒有影響C++在嵌入式軟件中的推廣,在使用C++的過程中,揚長避短,發(fā)揮C++在封裝、繼承等方面的優(yōu)勢,避開可能導致效率與性能問題的語言特性,依然可以開發(fā)出的嵌入式軟件。下圖列出了C++語言特性及其在OOP中的重要性和實現(xiàn)的成本之間的關系。使用C++在資源受限的環(huán)境中編程的時候,需要對這些語言特性進行合理的均衡與取舍。
        
        既然ISO C++中有一些語言特性有可能會導致性能和代碼體積的問題,如果能對ISO C++進行改造使其適用嵌入式環(huán)境,那自然是再好不過的了(雖然這有可能會導致一些鐵桿ISO C++支持者的不滿)。早在上個世紀90年代,就已經成立了嵌入式C++技術委員會(Embedded C++ Technical Committee),該委員會致力于定義一套適用于嵌入式軟件開發(fā)的C++語言規(guī)范。在1998年,Embedded C++規(guī)范正式出爐(我們簡稱之為EC++),我們可以從EC++的官方網站上查看這份規(guī)范,地址是http://www.caravan.net/ec2plus。 大致來講,EC++是標準C++語言的一個子集,它從C++語法中剔除了一些實現(xiàn)復雜和會導致額外負擔語法元素。例如:多重繼承與虛基類、RTTI、異常處理、模版、命名空間等等。同時,在標準庫方面,EC++規(guī)范也做了刪減,STL和Stream等被剔除了。在EC++規(guī)范出爐之后。很多嵌入式廠商都推出了符合EC++規(guī)范的編譯器,在嵌入式領域有一定的影響。

        C++新的應用

        近幾年來,嵌入式系統(tǒng)領域又有了新的發(fā)展。首先,隨著手機、PDA等消費性電子產品的飛速增長,嵌入式系統(tǒng)地市場規(guī)模在飛速的擴大,這個領域吸引了越來越多的人的眼光。其次,隨著Internet的廣為流行,越來越多的智能嵌入式應用場景需要互聯(lián)網的支持,這也從另外一個角度推進了嵌入式系統(tǒng)硬件功能的增強和軟件復雜性的提高。在這新一波的浪潮中,C++語言又有了新的用武之地。在嵌入式SoC設計方面,通常需要對SoC體系結構進行建模以進行體系性能的分析及軟硬件聯(lián)合設計。VHDL等設計語言可以實現(xiàn)這些功能。而在1999年OSCI組織推出的SystemC是建立在C++基礎上的開放的系統(tǒng)級設計語言,能夠對SoC體系結構進行自然和有效的描述。這樣,在嵌入式芯片設計領域,C++也可以施展拳腳。隨著嵌入式軟件功能的不斷增強,通用計算機上普遍的操作系統(tǒng)也逐漸出現(xiàn)在嵌入式系統(tǒng)中,成為了嵌入式操作系統(tǒng)。嵌入式操作系統(tǒng)種類繁多。在功能、性能、應用領域等都有很大的差異。因此嵌入式領域沒有也不可能會像桌面計算機一樣有某一款操作系統(tǒng)取得壟斷地位。常見的嵌入式操作系統(tǒng)有VxWorks、嵌入式Linux、Windows CE等等。在嵌入式操作系統(tǒng)領域,尤其是高端消費電子產品專用的操作系統(tǒng)領域,C++語言大有可為之處,很多嵌入式操作系統(tǒng)都使用C++搭建,并且對用戶以C++的形式提供引用程序編寫接口。在這方面,Symbian OS是一個很好的例子,Symbian OS是由愛立信、諾基亞、摩托羅拉等共同出資開發(fā),其目的是為智能手機提供一個操作系統(tǒng)平臺。Symbian OS的API均以C++類的方式提供,應用開發(fā)人員可以使用C++開發(fā)基于Symbian OS的手機上的應用程序。軟件巨頭微軟在這方面自然也不甘示弱,其推出的嵌入式操作系統(tǒng)Windows CE以及構建在Windows CE之上的Windows Mobile手機、PDA平臺憑借其一貫的易用性在市場上占據(jù)了一席之地。而Windows CE配套的開發(fā)環(huán)境Embedded Visual C++與桌面開發(fā)使用的Visual C++在用戶界面、使用習慣上都一脈相承,并且Embedded Visual C++集成了桌面開發(fā)中常用的MFC、ATL等C++庫。使很多桌面應用程序開發(fā)人員可以容易的過渡到基于Windows CE的嵌入式開發(fā)平臺上來。在國內方面,科泰世紀公司自主研發(fā)的和欣(Elastos)嵌入式操作系統(tǒng)不但完全使用C++語言構建,而且還引入了ISO C++中沒有的元數(shù)據(jù)等概念,并允許使用C++語言開發(fā)自描述的構件。這樣運行時Reflection、組件自描述、二進制繼承等的特性再也不是java/C#等語言的“專利”了。甚至在一些電子玩具上,也不乏C++的身影。BrickOS是一個運行在樂高(Lego,全球的玩具制造商)玩具機器人上的開源嵌入式操作系統(tǒng),旨在為玩具機器人提供C/C++的編程環(huán)境。我們可以從SourceForge網站上查找BrickOS的相關信息。在BrickOS下,就可以使用C++語言編程控制機器人身上的傳感器等部件,使機器人完成踢足球、賽跑等復雜的動作(學C++要從娃娃抓起)。

        結論

        C++語言在誕生之日起就被設計成一種通用(General Purpose)的編程語言,適用于不同的應用場景。經過二十年的發(fā)展,C++在服務器端,桌面工作站的程序編寫中都有了廣泛的應用。隨著近年來移動設備與嵌入式系統(tǒng)的迅速崛起,C++在移動與嵌入式領域也有廣泛的用武之地。而C++作為系統(tǒng)級編程語言的一些優(yōu)越的語言特性,在嵌入式設備上可以更好的得以體現(xiàn)。可以預見,隨著嵌入式產業(yè)的飛速發(fā)展及C++語言的不斷完善,在嵌入式領域C++必將有更輝煌的前景。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 日韩、欧美、中文三级 | 在线中文字幕乱码免费视频 | 日本在线观看中文字二区 | 久久亚洲性爱视频 | 日本乱偷中文字幕久久久 | 中文字幕色婷婷在线视频 |