嵌入式系統的知識體系、學(xué)習誤區及學(xué)習建議
RTOS本身由于種類(lèi)繁多,實(shí)際使用何種RTOS,一般需要由工作單位確定?;A階段主要學(xué)習RTOS的基本原理與RTOS上的軟件開(kāi)發(fā)方法,而不是學(xué)習如何設計RTOS。以開(kāi)發(fā)實(shí)際嵌入式產(chǎn)品為目標的學(xué)習者,不要把過(guò)多的精力花在設計或移植RTOS上面。正如很多人使用Windows操作系統,而設計 Windows操作系統的只有Microsoft。許多人“研究”Linux,但不使用它,浪費了時(shí)間。人的精力是有限的,學(xué)習必須有所選擇。
2.2 硬件與軟件的困惑
以MCU為核心的嵌入式技術(shù)的知識體系必須通過(guò)具體的MCU來(lái)體現、實(shí)踐。但是,選擇任何型號的MCU,其芯片相關(guān)的知識只占知識體系的20%左右,80%左右是通用的軟件硬件及相關(guān)知識。80%的通用知識,必須通過(guò)具體實(shí)踐才能獲得,所以學(xué)習嵌入式技術(shù)一般要選擇一個(gè)系列的MCU。
系統含有硬件與軟件兩大部分,它們之間的關(guān)系如何?有些學(xué)者,僅從電子的角度認識嵌入式系統。認為“嵌入式系統=MCU硬件系統+小程序”。這些學(xué)者大多具有良好的電子技術(shù)基礎知識。實(shí)際情況是,早期MCU內部RAM小,程序存儲器外接,需要外擴各種I/O,沒(méi)有像USB、嵌入式以太網(wǎng)等這樣較復雜的接口。因此,程序占總設計量比例小于50%,使人們認為嵌入式系統(單片機)是“電子系統”,以硬件為主,程序為輔。但是,隨著(zhù)MCU制造技術(shù)的發(fā)展,不僅.MCU內部RAM越來(lái)越大,Flash進(jìn)入MCU內部改變了傳統的嵌入式系統開(kāi)發(fā)與調試方式,固件程序可以更方便地調試與在線(xiàn)升級,許多情況下與開(kāi)發(fā) PC機程序的方便程度相差無(wú)幾,只不過(guò)開(kāi)發(fā)環(huán)境與運行環(huán)境不是同一載體而已。這使得嵌入式系統的軟件硬件設計方法發(fā)生了根本變化。
有些學(xué)者,僅從軟件開(kāi)發(fā)角度認識嵌入式系統,甚至僅從嵌入式操作系統認識嵌入式系統。這些學(xué)者大多具有良好的計算機軟件開(kāi)發(fā)基礎知識,認為硬件是生產(chǎn)廠(chǎng)商的事。他們沒(méi)有認識到,嵌入式系統產(chǎn)品的軟件與硬件均是需要開(kāi)發(fā)者設計的。筆者常常接到一些關(guān)于嵌入式產(chǎn)品穩定性的咨詢(xún),發(fā)現大多數是由于軟件開(kāi)發(fā)者對底層硬件的基本原理不理解。特別是有些功能軟件開(kāi)發(fā)者,過(guò)分依賴(lài)于底層硬件的驅動(dòng)軟件,自己對底層驅動(dòng)原理知之甚少。實(shí)際上,一些功能軟件開(kāi)發(fā)者,名義上在做嵌入式軟件,其實(shí)僅僅是使用嵌入式編輯、編譯環(huán)境而已,本質(zhì)與開(kāi)發(fā)通用PC機軟件沒(méi)有兩樣。而底層硬件驅動(dòng)軟件的開(kāi)發(fā),若不全面考慮高層功能軟件對底層硬件的可能調用,也會(huì )使封裝或參數設計得不合理或不完備,導致高層功能軟件調用困難??梢钥闯?,若把嵌入式系統的開(kāi)發(fā)孤立地分為硬件設計、底層硬件驅動(dòng)軟件設計、高層功能軟件設計,那么一旦出現問(wèn)題,就可能難以定位。實(shí)際上,嵌入式系統設計是一個(gè)軟件、硬件協(xié)同設計工程,不能像通用計算機那樣,軟件、硬件完全分開(kāi)來(lái)看,而要在一個(gè)大的框架內協(xié)調工作。
學(xué)習嵌入式系統是以軟件為主還是以硬件為主,或者如何選擇切入點(diǎn),如何在軟件與硬件之間取得平衡?對于這個(gè)困惑的建議是:要想成為一名真正的嵌入式系統設計師,在初學(xué)階段,必須打好嵌入式系統的硬件與軟件基礎。以下是從事嵌入式系統設計二十多年的美國學(xué)者JohnCatsoulis在《Designing Embedded Hardware》一書(shū)中關(guān)于這個(gè)問(wèn)題的總結:嵌入式系統與硬件緊密相關(guān),是軟件與硬件的綜合體,沒(méi)有對硬件的理解就不可能寫(xiě)好嵌入式軟件;同樣,沒(méi)有對軟件的理解也不可能設計好嵌入式硬件。
2.3 片面認識嵌入式系統
嵌入式系統產(chǎn)品種類(lèi)繁多,應用領(lǐng)域各異。在第1部分中,把嵌入式系統的應用范圍粗略分為電子系統的智能化與計算機應用的延伸兩大類(lèi)。從初學(xué)者角度,可能存在分別從這兩個(gè)角度片面認識嵌入式系統的問(wèn)題。因此,一些從電子系統智能化角度認識嵌入式系統的學(xué)習者,可能會(huì )忽視編程結構、編程規范、軟件工程的要求、操作系統等知識的積累。另一些從計算機應用的延伸角度認識嵌入式系統的學(xué)習者,可能會(huì )把通用計算機學(xué)習過(guò)程中的概念與方法生搬硬套到嵌入式系統的實(shí)踐中,忽視嵌入式系統與通用計算機的差異。
實(shí)際上,在嵌入式系統學(xué)習與實(shí)踐的初始階段,應該充分了解嵌入式系統的特點(diǎn),根據自身的已有知識結構,制定適合自身情況的學(xué)習計劃。目標應該是打好嵌入式系統的硬件與軟件基礎,通過(guò)實(shí)踐,為成為良好的嵌入式系統設計師建立起基本知識結構。學(xué)習過(guò)程中,具體應用系統可為實(shí)踐載體,但不能拘泥于具體系統,應該有一定的抽象與歸納。例如,初學(xué)者開(kāi)發(fā)實(shí)際控制系統時(shí)沒(méi)有使用實(shí)時(shí)操作系統,但不要認為實(shí)時(shí)操作系統不需要學(xué)習。又例如,初學(xué)者可以一個(gè)帶有實(shí)時(shí)操作系統的樣例為藍本進(jìn)行學(xué)習,但不要認為任何嵌入式系統都需要實(shí)時(shí)操作系統,甚至為一個(gè)十分簡(jiǎn)明的實(shí)際系統加上不必要的實(shí)時(shí)操作系統。因此,片面認識嵌入式系統,可能導致學(xué)習困惑。應該根據實(shí)際項目需要,鍛煉自己分析實(shí)際問(wèn)題、解決問(wèn)題的能力。這是一個(gè)長(cháng)期的學(xué)習與實(shí)踐過(guò)程,不能期望通過(guò)短期培訓完成整體知識體系的建立,應該重視自身實(shí)踐,全面地理解嵌入式系統的知識體系。
2.4 入門(mén)芯片選擇的困惑
嵌入式系統的大部分初學(xué)者需要選擇一個(gè)微控制器(MCU)進(jìn)行入門(mén)級學(xué)習,面對眾多廠(chǎng)家生產(chǎn)的微控制器系列,往往不知如何是好。
首先是關(guān)于位數問(wèn)題,目前主要有8位、16位和32位MCU。不同位數的MCU各有應用領(lǐng)域,這一點(diǎn)與通用微機有很大不同。例如做一個(gè)遙控器,不需要使用 32位MCU,否則MCU芯片價(jià)格就已經(jīng)超過(guò)遙控器價(jià)格需求。對于首次接觸嵌入式系統的學(xué)習者,可以根據自己的知識基礎選擇入門(mén)芯片的位數。建議大多數初學(xué)者選擇8位MCU作為快速入門(mén)芯片,了解一些匯編與底層硬件知識,之后再選16位或32位芯片進(jìn)行學(xué)習實(shí)踐。
關(guān)于芯片選擇的另一個(gè)誤區是認為有“主流芯片”存在,嵌入式系統也可以形成芯片壟斷。這完全是一種誤解,是套用通用計算機系統的思維模式,而忽視了嵌入式系統應用的多樣性。關(guān)于學(xué)習芯片選擇還有一個(gè)誤區,即誤認為選擇工作頻率高的芯片進(jìn)行入門(mén)學(xué)習,更先進(jìn)。實(shí)際上,工作頻率高可能給初學(xué)者帶來(lái)不少困難。
實(shí)際嵌入式系統設計不是追求芯片位數、工作頻率、操作系統等因素,而是追求穩定可靠、維護、升級、功耗、價(jià)格等指標。初學(xué)者選擇入門(mén)芯片,是通過(guò)某一: MCU作為藍本,獲得嵌入式系統知識體系的通用基礎。其基本原則是:入門(mén)時(shí)間較短、硬件成本較低,知識要素較多,學(xué)習難度較低。 linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論