天天看點

《 嵌入式系統設計與實踐》一一1.1 編譯器、程式設計語言以及面向對象程式設計

1.1 編譯器、程式設計語言以及面向對象程式設計

嵌入式系統的另一個特點就是在開發中都使用交叉編譯器。雖然交叉編譯器運作在台式計算機或者筆記型電腦上,但編譯出來的代碼卻不是。交叉編譯的映像檔案在目标嵌入式系統上運作。由于編譯完的代碼需要在嵌入式處理器上運作,是以目标系統的供應商通常會提供一個交叉編譯器或者一系列的交叉編譯器供選擇。不少大的處理器供應商使用基于gnu工具系列的交叉編譯器。

嵌入式軟體編譯器通常隻支援c或者同時支援c和c++。而且,許多嵌入式c++編譯器隻實作了c++語言的子集(一般來說,多重繼承、異常處理以及模闆都沒有實作)。java在嵌入式系統中日益流行,但其内在的記憶體管理問題使得它隻能使用在大型系統中。

不管你在軟體中使用什麼語言,都可以使用面向對象的設計。封裝、子產品化以及資料抽象的設計原則可以應用在幾乎任何應用程式和任何語言中。目的是讓設計健壯、易維護和靈活。我們應該使用面向對象技術的所有優點。

從總體上說,嵌入式系統可以看做是對象,尤其是作為一個更大系統的一部分時(如,與機頂盒通信的遙控器、工廠的分布式控制系統、汽車上的氣囊展開傳感器)。從更高的層面上說,一切都是面向對象的,是以把這一結論向下擴充到嵌入式軟體是合乎邏輯的。

另一方面,我不主張嚴格地遵循所有面向對象的設計原則。嵌入式系統有太多的設計目标,是以不可能确立一個一成不變的原則。一旦我們認識到了需要權衡之處,就可以在軟體設計目标和系統設計目标之間進行權衡。

本書中的大部分例子都使用c或者c++。我認為概念比語言更重要,是以即使不熟悉文法,閱讀代碼也沒有太大問題。本書不介紹任何程式設計語言(除了一些彙編語言之外)。正如我所說,設計原則高于程式設計語言。

繼續閱讀