在早期嵌入式產品軟體的開發過程中,我們基本上都是使用C語言開發的,因為C語言是一個極其精簡、高效、完備的高階語言,沒有任何一種語言可以代替它的地位。
在早期的嵌入式時代(微控制器為主)裡,使用C語言開發非常高效,那個時候要做的工作基本上是一些控制以及簡單的圖形處理,專案的業務邏輯不是很複雜,所以使用C語言開發完全可以應對。但在技術高速發展的今天,嵌入式的硬體更新換代越來越快,市場的需求越來越複雜,僅僅使用C語言開發已經不能完全勝任現實的需求,當然在嵌入式開發中也不可能完全拋棄C語言,一個產品的開發在某個階段甚至還需要組合語言來完成。
當今嵌入式產品開發使用的程式語言通常是組合語言、C語言和 C++(或其他物件導向語言)協同工作:
-
專案開發在某些情況下,C語言的使用環境還不滿足,如 Boot Loader 開發的第一階段就必須使用組合語言來完成,當然這樣的場合非常少,但不可避免。
-
對於底層軟體的開發,通常使用C語言就可以滿足需要了,例如,核心開發、驅動開發等工作。
-
應用軟體通常使用 C++ 這類物件導向語言開發,這部分的開發程式碼量較大,因為不僅僅要實現產品的業務邏輯,還要完成和使用交換的介面,因此這部分程式的開發效率直接影響整個專案的開發進度。
下面分析常見的嵌入式作業系統開發產品過程使用 C++ 語言的場合。
1. 嵌入式Linux
嵌入式 Linux 的核心基本上都是使用C語言開發的。但是在嵌入式產品的開發過程中,如在 Linux BSP 的開發過程中,為了提高產品的開發效率,方便應用開發工程師的呼叫,往往需要在 BSP 中實現大量的中介軟體,這些中介軟體如果採用 C++ 開發,其開發效率與重用率將大大提高。
基於嵌入式 Linux 的產品,稍微規模大點的,應用軟體基本上是使用 C++ 開發的。如果需要使用 GUI 介面,建議考慮使用 Qt,Qt 提供的類都是使用 C++ 完成的。如果已經熟練使用 C++,那麼使用 Qt 開發也沒有任何難度。
2. Windows CE
如果接觸過 Windows CE 開發,就會知道 Windows CE 的核心開發大部分是採用 C++ 完成的,因此需要開發 Windows CE 的 BSP。如果不會 C++,開發工作將會困難重重,看到核心裡面好多通訊機制使用 C++ 實現的程式碼猶如天書一樣。
基於 Windows CE 的產品,應用軟體的編寫選擇空間較大,可以選擇 C++、C#、VB等,當然如果會用 C++,其他都不是什麼大問題。
3. Vxworks
基於 Vxworks 的產品,BSP 部分開發通常使用C語言,如果應用部分的業務邏輯過於複雜,建議使用 C++ 開發。
4. iOS
iOS 是不開源的作業系統,可以使用其提供的 API 編寫應用程式,開發語言是 Objective-C 和 Swift,Objective-C 是一種類似於 C++ 的物件導向開發語言。