當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]嵌入式系統(tǒng)的知識體系、學習誤區(qū)及學習建議

1 嵌入式系統(tǒng)的知識體系
    嵌入式系統(tǒng)的應用范圍可以粗略分為兩大類:電子系統(tǒng)的智能化(工業(yè)控制、現(xiàn)代農業(yè)、家用電器、汽車電子、測控系統(tǒng)、數(shù)據采集等),計算機應用的延伸(MP3、手機、通信、網絡、計算機外圍設備等)。從這些應用可以看出,要完成一個以MCU為核心的嵌入式系統(tǒng)應用產品設計,需要硬件、軟件及行業(yè)領域相關知識。硬件主要有MCU的硬件最小系統(tǒng)、輸入/輸出外圍電路、人機接口設計。軟件設計有固化軟件的設計,也可能含PC機軟件的設計。行業(yè)知識需要通過協(xié)作、交流與總結獲得。
    概括地說,學習以MCU為核心的嵌入式系統(tǒng),需要以下軟硬件基礎知識與實踐訓練:
    ①硬件最小系統(tǒng)(電源、晶振、復位、寫入調試接口);
    ②通用I/O(開關量輸入/輸出,涉及各種二值量檢測與控制);
    ③模/數(shù)轉換(各種傳感器信號的采集與處理,如紅外、溫度、光敏、超聲波、方向等);
    ④數(shù)/模轉換(對模擬量設備利用數(shù)字進行控制);
    ⑤通信(串行通信接口SCI、串行外設接口SPI、集成電路互聯(lián)總線I2C、CAN、USB、嵌入式以太網、ZigBee技術等);
    ⑥顯示(LED、LCD等);
    ⑦控制(控制各種設備,包括PWM等控制技術);
    ⑧數(shù)據處理(圖形、圖像、語音、視頻等的處理或識別);
    ⑨各種具體應用。
    萬變不離其宗,任何應用都可以歸入這幾類。而應用中的硬件設計、軟件設計、測試等都必須遵循嵌入式軟件工程的方法、原理與基本原則。所以,嵌入式軟件工程也是嵌入式系統(tǒng)知識體系的有機組成部分,只不過它融于具體項目的開發(fā)過程之中。
    以上實踐訓練涉及硬件基礎、軟件基礎及相關領域知識。計算機語言、操作系統(tǒng)、開發(fā)環(huán)境等均是達到這些目的的工具。有些初學者,容易把工具的使用與所要達到的真正目的相混淆。例如,有的學習者學了很長時間的嵌入式操作系統(tǒng)移植,而不進行實際嵌入式系統(tǒng)產品的開發(fā),到最后也做不好一個嵌入式系統(tǒng)小產品,偏離了學習目標,甚至放棄嵌入式系統(tǒng)領域。這就是進入了嵌入式系統(tǒng)學習誤區(qū),下面對此作一些分析。

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

3 基礎階段的學習建議
    基于以上討論,下面對廣大渴望學習嵌入式系統(tǒng)的學子提出幾點基礎階段的學習建議:
    ①嵌入式系統(tǒng)軟件硬件密切相關,一定要打好軟硬件基礎。其實,只要找到正確的方法,加上努力,任何理工科學生,甚至非理工科學生,都能學好嵌入式系統(tǒng)。
    ②選擇一個芯片及硬件評估板(入門芯片最好簡單一點,例如8位MCU)、選擇一本好書(最好有規(guī)范的例子)、找一位好老師(最好是有經驗且熱心的)。硬件評估板的價格一定要在1000元以下,不要太貴,最好能有自己動手的空間。不花一分硬件錢想要學好嵌入式系統(tǒng)不實際,因為這是實踐性很強的學科。好書,可以讓人少走彎路,不被誤導。好老師也可以是做過一些實際項目的學長(一定要找做過幾個成功項目的學長或老師做指導,否則經驗不足也可能誤導),有教師指導,學習進程會加快(人工智能學科里有個術語叫無教師指導學習模式與有教師指導學習模式,無教師指導學習模式比有教師指導學習模式復雜許多。
    ③許多人怕硬件,其實嵌入式系統(tǒng)硬件比電子線路好學多了。只要深入理解:MCU的硬件最小系統(tǒng),對I/O口、串行通信、鍵盤、LED、LCD、SPI、 I2C、PWM、A/D(包括一些傳感器)、D/A等逐個實驗理解,逐步實踐,再通過動手做一個實際的小系統(tǒng),底層硬件基礎就有了。各個硬件模塊驅動程序的編寫是嵌入式系統(tǒng)的必備基礎。學習嵌入式系統(tǒng)的初期,這個過程是必須的。
    ④至于嵌入式實時操作系統(tǒng)RTOS,一定不要一開始就學,這樣會走很多彎路,也會使你對嵌入式系統(tǒng)感到畏懼。等你軟件硬件基礎打好了,再學習就感到容易理解。實際上,許多嵌入式應用并不需要操作系統(tǒng)。也可以根據實際項目需要,再學習特定的RTOS。不要被一些嵌入式實時操作系統(tǒng)培訓班的宣傳所誤導,而忽視實際嵌入式系統(tǒng)軟硬件基礎知識的學習。
    ⑤要避免片面地單純從“電子”或“計算機軟件”角度認識嵌入式系統(tǒng)。前面說過,嵌入式系統(tǒng)是軟件與硬件的綜合體。因此,要逐步從MCU的最小系統(tǒng)開始,一點一點理解硬件原理及底層硬件驅動編程方法。要通過規(guī)范的例子,理解軟件工程封裝、可復用等思想。通過規(guī)范編程,積累底層構件(component),也就是一個一個模塊;但是要封裝得比較好,可復用。
    ⑥注重實驗與實踐。這里說的實驗主要指通過重復來驗證他人的工作,目的是學習基礎知識,這個過程一定要經歷。實踐是自己設計,有具體的“產品”目標。如果花500元左右,自己做一個具有一定功能的小產品,且能穩(wěn)定運行1年以上,就可以說接近入門了。
    ⑦關于入門芯片的選擇。不要選太復雜的微控制器作為入門芯片,不能超越學習過程。不要一下子學習幾種芯片??梢酝ㄟ^一個芯片入門,并具有一個實踐經驗后,根據實際需要選擇芯片開發(fā)實際產品。注意,不要把微處理器(MPU與微控制器(MCU)概念相混淆,微處理器只是微控制器的內核。
    ⑧關于嵌入式操作系統(tǒng)的選擇??梢缘鹊骄哂幸欢▽嵺`基礎后,選擇一個簡單、容易理解原理的嵌入式操作系統(tǒng)進行學習。不要一開始就學習幾種操作系統(tǒng),理解了基本原理,實踐中確有實際需要再學習也不遲。人總是要不斷學習的。
    ⑨關于匯編語言與C語言的取舍。隨著:MCU對C編譯的優(yōu)化支持,對于匯編語言可以只了解幾個必要的語句,而直接使用C語言編程。但必須通過第一個程序理解芯片初始化過程、中斷機制、程序存儲情況等,區(qū)別于PC機程序的內容。另外,為了測試的需要,最好掌握一門PC機編程語言。
    ⑩要明確自己的學習目的,并注意學習方法。要明確學習目的是打基礎,還是為了適應工作需要而進行的短訓。學習方法方面,要根據學習目的選擇合適的學習途徑,注意理論學習與實踐、通用知識與芯片相關知識、硬件知識與軟件知識的平衡,要在理解軟件工程基本原理基礎上理解硬件構件與軟件構件等基本概念。
    以上建議,僅供初學者參考。當然,以上只是基礎階段的學習建議。要成為良好的嵌入式系統(tǒng)設計師,還需要在實際項目中鍛煉,并不斷學習與積累經驗。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉