嵌入式系統的知識體系
嵌入式系統的應用范圍可以大概分為兩大類:電子系統的智能化(工業控制、現代農業、家用電器、汽車電子、測控系統、數據采集等),計算機應用的延伸(MP3、手機、通信、網絡、計算機外圍設備等)。從這些可以看出,要完成一個以MCU為核心的嵌入式系統應用產品設計,需要硬件、軟件及行業領域相關知識。硬件主要有MCU的硬件最小系統、輸入/輸出外圍電路、人機接口設計。軟件設計有固化軟件的設計,也可能含PC機軟件的設計。行業知識需要通過協作、交流與總結獲得。
概括地說,學習以MCU為核心的嵌入式系統,需要以下軟硬件基礎知識與實踐訓練:
②通用I/O(開關量輸入/輸出,涉及各種二值量檢測與控制);
③模/數轉換(各種傳感器信號的采集與處理,如紅外、溫度、光敏、超聲波、方向等);
④數/模轉換(對模擬量設備利用數字進行控制);
⑤通信(串行通信接口SCI、串行外設接口SPI、集成電路互聯總線I2C、CAN、USB、嵌入式以太網、ZigBee技術等);
⑥顯示(LED、LCD等);
⑦控制(控制各種設備,包括PWM等控制技術);
⑧數據處理(圖形、圖像、語音、視頻等的處理或識別);
⑨各種具體應用。
萬變不離其宗,任何應用都可以歸入這幾類。而應用中的硬件設計、軟件設計、測試等都必須遵循嵌入式軟件工程的方法、原理與基本原則。所以,嵌入式軟件工程也是嵌入式系統知識體系的有機組成部分,只不過它融于具體項目的開發過程之中。
以上涉及硬件基礎、軟件基礎及相關領域知識。計算機語言、操作系統、開發環境等均是達到這些目的的工具。有些初學者,容易把工具的使用與所要達到的真正目的相混淆。例如,有的學習者學了很長時間的嵌入式操作系統移植,而不實際開發嵌入式系統產品,到最后連一個嵌入式系統的小產品也做不好,偏離了學習目標,甚至放棄嵌入式系統領域。這就是進入了嵌入式系統學習誤區,下面對此作一些分析。
嵌入式系統的學習誤區
如果說,學習嵌入式系統不是為了開發其應用產品,那就沒有具體目標,那學習方法這樣的問題也就不必說了。實際上,這正是許多人想學,又不知從何開始學習的關鍵問題所在,不知道自己學習的具體目標。于是,看了一些培訓廣告,看了書店中種類繁多的嵌入式系統書籍,或上網以“嵌入式系統”為關鍵詞進行查詢,就參加培訓或看書,開始“學習起來”。對于有計算機閱歷的人,往往選擇一個嵌入式操作系統就開始學習了。這有點像“瞎子摸大象”,只了解其一個側面。這樣如何能對嵌入式產品的開發過程有全面了解呢?針對許多初學者選擇“XXX嵌入式操作系統+XXX處理器”的嵌入式系統入門學習模式,認為是不合適的。建議是:首先把嵌入式系統軟件與硬件基礎打好了,再根據實際需要,選擇一種實時操作系統(RTOS)進行學習實踐。要記住:RTOS是開發某些類嵌入式產品的輔助工具,是手段,不是目的;許多類嵌入式產品,并不需要RTOS。所以,一開始就學習RTOS,并不符合“由淺入深、循序漸進”的學習規律。
RTOS本身由于種類繁多,實際使用何種RTOS,一般需要由工作單位確定。基礎階段主要學習RTOS的基本原理與RTOS上的軟件開發方法,而不是學習如何設計RTOS。以開發實際嵌入式產品為目標的學習者,不要把過多的精力花在設計或移植RTOS上面。正如很多人使用Windows操作系統,而設計Windows操作系統的只有Microsoft。許多人“研究”Linux,但不使用它,浪費了時間。人的精力是有限的,學習必須有所選擇。
以MCU為核心的嵌入式技術的知識體系必須通過具體的MCU來體現、實踐。但是,選擇任何型號的MCU,其芯片相關的知識只占知識體系的20%左右,80%左右是通用的軟件硬件及相關知識。80%的通用知識,必須通過具體實踐才能獲得,所以學習嵌入式技術一般要選擇一個系列的MCU。
學習嵌入式系統是以軟件為主還是以硬件為主,或者如何選擇切入點,如何在軟件與硬件之間取得平衡?對于這個困惑的建議是:要想成為一名真正的嵌入式系統設計師,在初學階段,必須打好嵌入式系統的硬件與軟件基礎。以下是從事嵌入式系統設計二十多年的美國學者JohnCatsoulis在《DesigningEmbeddedHardware》一書中關于這個問題的總結:嵌入式系統與硬件緊密相關,是軟件與硬件的綜合體,沒有對硬件的理解就不可能寫好嵌入式軟件;同樣,沒有對軟件的理解也不可能設計好嵌入式硬件。
嵌入式系統產品種類繁多,應用領域各異。在第1部分中,把嵌入式系統的應用范圍粗略分為電子系統的智能化與計算機應用的延伸兩大類。從初學者角度,可能存在分別從這兩個角度片面認識嵌入式系統的問題。因此,一些從電子系統智能化角度認識嵌入式系統的學習者,可能會忽視編程結構、編程規范、軟件工程的要求、操作系統等知識的積累。另一些從計算機應用的延伸角度認識嵌入式系統的學習者,可能會把通用計算機學習過程中的概念與方法生搬硬套到嵌入式系統的實踐中,忽視嵌入式系統與通用計算機的差異。
實際上,在嵌入式系統學習與實踐的初始階段,應該充分了解嵌入式系統的特點,根據自身的已有知識結構,制定適合自身情況的學習計劃。目標應該是打好嵌入式系統的硬件與軟件基礎,通過實踐,為成為良好的嵌入式系統設計師建立起基本知識結構。學習過程中,具體應用系統可為實踐載體,但不能拘泥于具體系統,應該有一定的抽象與歸納。例如,初學者開發實際控制系統時沒有使用實時操作系統,但不要認為實時操作系統不需要學習。又例如,初學者可以一個帶有實時操作系統的樣例為藍本進行學習,但不要認為任何嵌入式系統都需要實時操作系統,甚至為一個十分簡明的實際系統加上不必要的實時操作系統。因此,片面認識嵌入式系統,可能導致學習困惑。應該根據實際項目需要,鍛煉自己分析實際問題、解決問題的能力。這是一個長期的學習與實踐過程,不能期望通過短期培訓完成整體知識體系的建立,應該重視自身實踐,全面地理解嵌入式系統的知識體系。
責任編輯 人:CC
-
嵌入式
+關注
關注
5068文章
19021瀏覽量
303327 -
嵌入式系統
+關注
關注
41文章
3568瀏覽量
129234
發布評論請先 登錄
相關推薦
評論