嵌入式系統(tǒng)知識系統(tǒng)講解
1 嵌入式系統(tǒng)的知識體系
本文引用地址:http://m.butianyuan.cn/article/201807/384202.htm嵌入式系統(tǒng)的應(yīng)用范圍可以大概分為兩大類:電子系統(tǒng)的智能化(工業(yè) 控制、現(xiàn)代農(nóng)業(yè)、家用電器、汽車電子、測控系統(tǒng)、數(shù)據(jù)采集等),計算機應(yīng)用的延伸(MP3、手機、通信、網(wǎng)絡(luò)、計算機外圍設(shè)備等)。從這些可以看出, 要完成一個以MCU為核心的嵌入式系統(tǒng)應(yīng)用產(chǎn)品設(shè)計,需要硬件、軟件及行業(yè)領(lǐng)域相關(guān)知識。硬件主要有MCU的硬件最小系統(tǒng)、輸入/輸出外圍電路、人機接口設(shè)計。軟件設(shè)計有固化軟件的設(shè)計,也可能含PC機軟件的設(shè)計。行業(yè)知識需要通過協(xié)作、交流與總結(jié)獲得。
概括地說,學(xué)習(xí)以MCU為核心的嵌入式系統(tǒng),需要以下軟硬件基礎(chǔ)知識與實踐訓(xùn)練:
①硬件最小系統(tǒng)(電源、晶振、復(fù)位、寫入調(diào)試接口);
②通用I/O(開關(guān)量輸入/輸出,涉及各種二值量檢測與控制);
③模/數(shù)轉(zhuǎn)換(各種傳感器信號的采集與處理,如紅外、溫度、光敏、超聲波、方向等);
④數(shù)/模轉(zhuǎn)換(對模擬量設(shè)備利用數(shù)字進行控制);
⑤通信(串行通信接口SCI、串行外設(shè)接口SPI、集成電路互聯(lián)總線I2C、CAN、USB、嵌入式以太網(wǎng)、ZigBee技術(shù)等);
⑥顯示(LED、LCD等);
⑦控制(控制各種設(shè)備,包括PWM等控制技術(shù));
⑧數(shù)據(jù)處理(圖形、圖像、語音、視頻等的處理或識別);
⑨各種具體應(yīng)用。
萬變不離其宗,任何應(yīng)用都可以歸入這幾類。而應(yīng)用中的硬件設(shè)計、軟件設(shè)計、測試等都必須遵循嵌入式軟件工程的方法、原理與基本原則。所以,嵌入式軟件工程也是嵌入式系統(tǒng)知識體系的有機組成部分,只不過它融于具體項目的開發(fā)過程之中。
以上涉及硬件基礎(chǔ)、軟件基礎(chǔ)及相關(guān)領(lǐng)域知識。計算機語言、操作系統(tǒng)、開發(fā)環(huán)境等均是達到這些目的的工具。有些初學(xué)者,容易把工具的使用與所要達到的真正目的相混淆。例如,有的學(xué)習(xí)者學(xué)了很長時間的嵌入式操作系統(tǒng)移植,而不實際開發(fā)嵌入式系統(tǒng)產(chǎn)品,到最后連一個嵌入式系統(tǒng)的小產(chǎn)品也做不好,偏離了學(xué)習(xí)目標(biāo),甚至放棄嵌入式系統(tǒng)領(lǐng)域。這就是進入了嵌入式系統(tǒng)學(xué)習(xí)誤區(qū),下面對此作一些分析。
2 嵌入式系統(tǒng)的學(xué)習(xí)誤區(qū)
關(guān)于嵌入式系統(tǒng)的學(xué)習(xí)方法,因?qū)W習(xí)經(jīng)歷、學(xué)習(xí)環(huán)境、學(xué)習(xí)目的、已有的知識基礎(chǔ)等不同,可能在學(xué)習(xí)順序、內(nèi)容選擇、實踐方式等方面有所不同。但是,應(yīng)該明確哪些是必備的基礎(chǔ)知識,哪些應(yīng)該先學(xué),哪些應(yīng)該后學(xué);哪些必須通過實踐才能獲得;哪些是與具體芯片無關(guān)的通用知識,哪些是與具體芯片或開發(fā)環(huán)境相關(guān)的知識。
由于微處理器與微控制器種類繁多,也可能由于不同公司、機構(gòu)出于自身的利益,給出一些誤導(dǎo)性宣傳,特別是我國嵌入式微控制器制造技術(shù)落后,使得人們對微控制器的發(fā)展,在認(rèn)識與理解上存在差異,導(dǎo)致一些初學(xué)者進入嵌入式系統(tǒng)的學(xué)習(xí)誤區(qū),浪費了寶貴的學(xué)習(xí)時間。下面分析可能存在的幾個誤 區(qū)。
2.1 操作系統(tǒng)的困惑
如果說,學(xué)習(xí)嵌入式系統(tǒng)不是為了開發(fā)其應(yīng)用產(chǎn)品,那就沒有具體目標(biāo),那學(xué)習(xí)方法這樣的問題也就不必說了。實際上,這正是許多人想學(xué),又不知從何開始學(xué)習(xí)的關(guān)鍵問題所在,不知道自己學(xué)習(xí)的具體目標(biāo)。于是,看了一些培訓(xùn)廣告,看了書店中種類繁多的嵌入式系統(tǒng)書籍,或上網(wǎng)以“嵌入式系統(tǒng)”為關(guān)鍵詞進行查詢,就參加培訓(xùn)或看書,開始“學(xué)習(xí)起來”。對于有計算機閱歷的人,往往選擇一個嵌入式操作系統(tǒng)就開始學(xué)習(xí)了。這有點像“瞎子摸大象”,只了解其一個側(cè)面。這樣如何能對嵌入式產(chǎn)品的開發(fā)過程有全面了解呢?針對許多初學(xué)者選擇“XXX嵌入式操作系統(tǒng)+XXX處理器”的嵌入式系統(tǒng)入門學(xué)習(xí)模式,認(rèn)為是不合適的。建議是:首先把嵌入式系統(tǒng)軟件與硬件基礎(chǔ)打好了,再根據(jù)實際需要,選擇一種實時操作系統(tǒng)(RTOS)進行學(xué)習(xí)實踐。要記?。篟TOS是開發(fā)某些類嵌入式產(chǎn)品的輔助工具,是手段,不是目的;許多類嵌入式產(chǎn)品,并不需要RTOS。所以,一開始就學(xué)習(xí)RTOS,并不符合“由淺入深、循序漸進”的學(xué)習(xí)規(guī)律。
RTOS本身由于種類繁多,實際使用何種RTOS,一般需要由工作單位確定?;A(chǔ)階段主要學(xué)習(xí)RTOS的基本原理與RTOS上的軟件開發(fā)方法,而不是學(xué)習(xí)如何設(shè)計RTOS。以開發(fā)實際嵌入式產(chǎn)品為目標(biāo)的學(xué)習(xí)者,不要把過多的精力花在設(shè)計或移植RTOS上面。正如很多人使用Windows操作系統(tǒng),而設(shè)計Windows操作系統(tǒng)的只有Microsoft。許多人“研究”Linux,但不使用它,浪費了時間。人的精力是有限的,學(xué)習(xí)必須有所選擇。
2.2 硬件與軟件的困惑
以MCU為核心的嵌入式技術(shù)的知識體系必須通過具體的MCU來體現(xiàn)、實踐。但是,選擇任何型號的MCU,其芯片相關(guān)的知識只占知識體系的20%左右,80%左右是通用的軟件硬件及相關(guān)知識。80%的通用知識,必須通過具體實踐才能獲得,所以學(xué)習(xí)嵌入式技術(shù)一般要選擇一個系列的MCU。
學(xué)習(xí)嵌入式系統(tǒng)是以軟件為主還是以硬件為主,或者如何選擇切入點,如何在軟件與硬件之間取得平衡?對于這個困惑的建議是:要想成為一名真正的嵌入式系統(tǒng)設(shè)計師,在初學(xué)階段,必須打好嵌入式系統(tǒng)的硬件與軟件基礎(chǔ)。以下是從事嵌入式系統(tǒng)設(shè)計二十多年的美國學(xué)者JohnCatsoulis在《Designing Embedded Hardware》一書中關(guān)于這個問題的總結(jié):嵌入式系統(tǒng)與硬件緊密相關(guān),是軟件與硬件的綜合體,沒有對硬件的理解就不可能寫好嵌入式軟件;同樣,沒有對軟件的理解也不可能設(shè)計好嵌入式硬件。
2.3 片面認(rèn)識嵌入式系統(tǒng)
嵌入式系統(tǒng)產(chǎn)品種類繁多,應(yīng)用領(lǐng)域各異。在第1部分中,把嵌入式系統(tǒng)的應(yīng)用范圍粗略分為電子系統(tǒng)的智能化與計算機應(yīng)用的延伸兩大類。從初學(xué)者角度,可能存在分別從這兩個角度片面認(rèn)識嵌入式系統(tǒng)的問題。因此,一些從電子系統(tǒng)智能化角度認(rèn)識嵌入式系統(tǒng)的學(xué)習(xí)者,可能會忽視編程結(jié)構(gòu)、編程規(guī)范、軟件工程的要求、操作系統(tǒng)等知識的積累。另一些從計算機應(yīng)用的延伸角度認(rèn)識嵌入式系統(tǒng)的學(xué)習(xí)者,可能會把通用計算機學(xué)習(xí)過程中的概念與方法生搬硬套到嵌入式系統(tǒng)的實踐中,忽視嵌入式系統(tǒng)與通用計算機的差異。
實際上,在嵌入式系統(tǒng)學(xué)習(xí)與實踐的初始階段,應(yīng)該充分了解嵌入式系統(tǒng)的特點,根據(jù)自身的已有知識結(jié)構(gòu),制定適合自身情況的學(xué)習(xí)計劃。目標(biāo)應(yīng)該是打好嵌入式系統(tǒng)的硬件與軟件基礎(chǔ),通過實踐,為成為良好的嵌入式系統(tǒng)設(shè)計師建立起基本知識結(jié)構(gòu)。學(xué)習(xí)過程中,具體應(yīng)用系統(tǒng)可為實踐載體,但不能拘泥于具體系統(tǒng),應(yīng)該有一定的抽象與歸納。例如,初學(xué)者開發(fā)實際控制系統(tǒng)時沒有使用實時操作系統(tǒng),但不要認(rèn)為實時操作系統(tǒng)不需要學(xué)習(xí)。又例如,初學(xué)者可以一個帶有實時操作系統(tǒng)的樣例為藍本進行學(xué)習(xí),但不要認(rèn)為任何嵌入式系統(tǒng)都需要實時操作系統(tǒng),甚至為一個十分簡明的實際系統(tǒng)加上不必要的實時操作系統(tǒng)。因此,片面認(rèn)識嵌入式系統(tǒng),可能導(dǎo)致學(xué)習(xí)困惑。應(yīng)該根據(jù)實際項目需要,鍛煉自己分析實際問題、解決問題的能力。這是一個長期的學(xué)習(xí)與實踐過程,不能期望通過短期培訓(xùn)完成整體知識體系的建立,應(yīng)該重視自身實踐,全面地理解嵌入式系統(tǒng)的知識體系。
評論