嵌入式系統(tǒng)的學(xué)習(xí)誤區(qū)---蘇州大學(xué)王宜懷
掃描二維碼
隨時(shí)隨地手機(jī)看文章
關(guān)于嵌入式系統(tǒng)的學(xué)習(xí)方法,因?qū)W習(xí)經(jīng)歷、學(xué)習(xí)環(huán)境、學(xué)習(xí)目的、已有的知識(shí)基礎(chǔ)等不同,可能在學(xué)習(xí)順序、內(nèi)容選擇、實(shí)踐方式等方面有所不同。但是,應(yīng)該明確哪些是必備的基礎(chǔ)知識(shí),哪些應(yīng)該先學(xué),哪些應(yīng)該后學(xué),哪些必須通過實(shí)踐才能獲得的,哪些是與具體芯片無關(guān)的通用知識(shí),哪些是與具體芯片與開發(fā)環(huán)境相關(guān)的知識(shí)。
由于微處理器與微控制器種類繁多,也可能由于不同公司、不同機(jī)構(gòu)出于自身的利益,做出一些誤導(dǎo)性宣傳,特別是我國嵌入式微控制器制造技術(shù)的落后及其他相關(guān)情況,使得人們對(duì)微控制器的發(fā)展,在認(rèn)識(shí)與理解上存在差異。導(dǎo)致一些初學(xué)者,進(jìn)入了嵌入式系統(tǒng)的學(xué)習(xí)誤區(qū),浪費(fèi)了寶貴的學(xué)習(xí)時(shí)間。下面分析幾個(gè)可能的誤區(qū)。
1.嵌入式系統(tǒng)學(xué)習(xí)誤區(qū)1-操作系統(tǒng)的困惑
如果說,學(xué)習(xí)嵌入式系統(tǒng)不是為了開發(fā)其應(yīng)用產(chǎn)品,那就沒有具體目標(biāo)了,許多諸如學(xué)習(xí)方法問題也就不必談了。實(shí)際上,這正是許多人想學(xué),又不知從何開始學(xué)習(xí)的關(guān)鍵問題所在,不知道自己學(xué)習(xí)的具體目標(biāo)。于是,看了一些培訓(xùn)廣告,看了書店中書架上種類繁多的嵌入式系統(tǒng)的書籍,或上網(wǎng)以“嵌入式系統(tǒng)”為關(guān)鍵詞進(jìn)行查詢,然后參加培訓(xùn)或看書,開始“學(xué)習(xí)起來”。對(duì)于有計(jì)算機(jī)閱歷的人,往往選擇一個(gè)嵌入式操作系統(tǒng)就開始學(xué)習(xí)了。不好聽的比喻,有點(diǎn)象“瞎子摸大象”,只了解其一個(gè)側(cè)面。這樣如何能對(duì)嵌入式產(chǎn)品的開發(fā)過程有個(gè)全面了解呢?針對(duì)許多選擇“xxx嵌入式操作系統(tǒng)+xxx處理器”的嵌入式系統(tǒng)入門學(xué)習(xí)模式,我的建議是:首先把嵌入式系統(tǒng)軟件與硬件基礎(chǔ)打好了,再根據(jù)實(shí)際需要,選擇一種嵌入式操作系統(tǒng)進(jìn)行學(xué)習(xí)實(shí)踐。要記?。呵度胧讲僮飨到y(tǒng)是開發(fā)某些類嵌入式產(chǎn)品的輔助工具,是手段,不是目的。許多類嵌入式產(chǎn)品,并不需要嵌入式操作系統(tǒng)。所以,一開始就學(xué)習(xí)嵌入式操作系統(tǒng),并不符合學(xué)習(xí)“由淺入深、循序漸進(jìn)”的學(xué)習(xí)規(guī)律。
2.嵌入式系統(tǒng)學(xué)習(xí)誤區(qū)2-硬件與軟件的困惑
有一些有電子閱歷的人,僅從電子角度認(rèn)識(shí)嵌入式系統(tǒng)選擇FPGA來學(xué)習(xí)嵌入式系統(tǒng)。實(shí)際上,這也是嵌入式系統(tǒng)的一個(gè)方式、一個(gè)側(cè)面。而大多數(shù)嵌入式系統(tǒng)的設(shè)計(jì)以MCU為核心進(jìn)行。原因很簡單,生產(chǎn)可靠的MCU,需要近千道工序,非通用硬件能夠替代。既然大多數(shù)嵌入式系統(tǒng)的設(shè)計(jì)以MCU為核心,下面就談這種模式所可能遇到的學(xué)習(xí)困惑。
有些學(xué)者,僅從電子角度認(rèn)識(shí)嵌入式系統(tǒng)。認(rèn)為“嵌入式系統(tǒng)=MCU硬件系統(tǒng)+小程序”。這些學(xué)者,大多學(xué)習(xí)背景是具有良好的電子技術(shù)基礎(chǔ)知識(shí)。但對(duì)于嵌入式系統(tǒng)來說,沒有深刻認(rèn)識(shí)到,嵌入式系統(tǒng)在發(fā)展,早期的MCU內(nèi)部RAM小、程序存儲(chǔ)器外接,需要外擴(kuò)各種I/O,沒有象現(xiàn)在這樣USB、嵌入式以太網(wǎng)等較復(fù)雜的接口,因此,程序占總設(shè)計(jì)量小于50%,使人們認(rèn)為嵌入式系統(tǒng)(單片機(jī))是“電子系統(tǒng)”,以硬件為主、程序?yàn)檩o。但是,隨著MCU制造技術(shù)的發(fā)展,不僅MCU內(nèi)部RAM越來越大,F(xiàn)lash進(jìn)入MCU內(nèi)部改變了傳統(tǒng)的嵌入式系統(tǒng)開發(fā)與調(diào)試方式,固件程序可以被更方便地調(diào)試與在線升級(jí),許多情況與開發(fā)PC機(jī)程序方便程度相差無幾,只不過開發(fā)環(huán)境與運(yùn)行環(huán)境不是同一載體而已。這些情況使得嵌入式系統(tǒng)的軟件硬件設(shè)計(jì)方法發(fā)生了根本變化。
相反,有些學(xué)者,僅從嵌入式操作系統(tǒng)認(rèn)識(shí)嵌入式系統(tǒng),或只從軟件開發(fā)角度認(rèn)識(shí)嵌入式系統(tǒng)。這些學(xué)者,大多具有良好的計(jì)算機(jī)軟件開發(fā)基礎(chǔ)知識(shí),認(rèn)為硬件是生產(chǎn)廠商的事,沒有認(rèn)識(shí)到,嵌入式系統(tǒng)產(chǎn)品的軟件與硬件均是需要開發(fā)者設(shè)計(jì)的。我常常接到一些關(guān)于嵌入式產(chǎn)品穩(wěn)定性的咨詢電話,發(fā)現(xiàn)大多數(shù)是由于軟件開發(fā)者底層硬件的基本原理不理解,對(duì)底層硬件的驅(qū)動(dòng)軟件設(shè)計(jì)不周到造成的。特別是,有些功能軟件開發(fā)者,過分依賴于底層硬件的驅(qū)動(dòng)軟件設(shè)計(jì)完美,自己對(duì)底層驅(qū)動(dòng)原理知之甚少。實(shí)際上,一些功能軟件開發(fā)者,名義上再做嵌入式軟件,實(shí)際上,僅僅使用嵌入式軟件編輯、編譯環(huán)境而已,本質(zhì)是在開發(fā)通用PC機(jī)軟件。而底層硬件驅(qū)動(dòng)軟件的開發(fā),若不全面考慮高層功能軟件對(duì)底層硬件的可能調(diào)用,也會(huì)使得封裝或參數(shù)設(shè)計(jì)得不合理或不完備,導(dǎo)致高層功能軟件的調(diào)用困難。從這段描述可以看出,若把一個(gè)嵌入式系統(tǒng)的開發(fā)孤立地分為硬件設(shè)計(jì)、底層硬件驅(qū)動(dòng)軟件設(shè)計(jì)、高層功能軟件設(shè)計(jì),一旦出現(xiàn)了問題,就會(huì)出現(xiàn)責(zé)任不清,難以定位。實(shí)際上,嵌入式系統(tǒng)設(shè)計(jì)是一個(gè)軟件、硬件協(xié)同設(shè)計(jì)工程,不能象通用計(jì)算機(jī)那樣,軟件、硬件完全分開來看。
面對(duì)學(xué)習(xí)嵌入式系統(tǒng)以軟件為主還是以硬件為主,或是如何選擇切入點(diǎn),如何在軟件與硬件之間取得一些平衡。有些人認(rèn)為,學(xué)習(xí)嵌入式系統(tǒng)可以只學(xué)習(xí)軟件知識(shí)或學(xué)習(xí)嵌入式系統(tǒng)可以只學(xué)習(xí)硬件知識(shí)。對(duì)于這個(gè)困惑,可以概括回答:
嵌入式系統(tǒng)與硬件緊密相關(guān),是軟件與硬件的綜合體,沒有對(duì)硬件的理解就不可能寫好嵌入式軟件,同樣沒有對(duì)軟件的理解也不可能設(shè)計(jì)好嵌入式硬件。