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

      C++嵌入式系統中應用

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

        轉換舞臺

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

        嵌入式系統編程

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

        讓C++為嵌入式系統服務

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

        C++新的應用

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

        結論

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

      免費預約試聽課

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

      
      

      1. 中文字幕1级精品视频在线 午夜性色福利网 | 亚洲午夜成人福利精品视频 | 日韩欧美国产一线 | 亚洲岛国精品视频在线 | 亚州最新精品一区二区三区 | 特黄国产禁在线观看 |