作為一家之言,想對(duì)廣大渴望學(xué)習(xí)嵌入式系統(tǒng)的學(xué)子提出幾點(diǎn)建議:
(1)嵌入式系統(tǒng)軟件硬件密切相關(guān),一定要打好軟件硬件基礎(chǔ)。其實(shí),只要找到正確的方法,加上努力,任何理工科學(xué)生,甚至非理工科學(xué)生,都能學(xué)好嵌入式系統(tǒng)。
(2)選擇一個(gè)芯片及硬件評(píng)估板(入門(mén)芯片最好是簡(jiǎn)單一點(diǎn),例如8位MCU)、選擇一本好書(shū)(最好有規(guī)范的例子)、找一位好老師(最好是有經(jīng)驗(yàn)
且熱心的)。硬件評(píng)估板的價(jià)格一定要在1000元以下,不要太貴,最好能有自己動(dòng)手的空間。不花一分硬件錢(qián),要想學(xué)好嵌入式系統(tǒng)不實(shí)際。因?yàn)椋@是實(shí)踐性
很強(qiáng)的學(xué)科。好書(shū),可以使你少走彎路,不會(huì)被誤導(dǎo),要知道有的書(shū)是會(huì)使人進(jìn)入學(xué)習(xí)誤區(qū)的。好老師也可以是做過(guò)一些實(shí)際項(xiàng)目的學(xué)長(zhǎng)(一定要找做過(guò)幾個(gè)成功項(xiàng)
目的學(xué)長(zhǎng)或老師做指導(dǎo),否則,經(jīng)驗(yàn)不足也可能誤導(dǎo)),有教師指導(dǎo),學(xué)習(xí)進(jìn)程會(huì)加快。(人工智能學(xué)科里有個(gè)術(shù)語(yǔ)叫無(wú)教師指導(dǎo)學(xué)習(xí)模式與有教師指導(dǎo)學(xué)習(xí)模式,
無(wú)有教師指導(dǎo)學(xué)習(xí)模式比有教師指導(dǎo)學(xué)習(xí)模式復(fù)雜許多)。
(3)許多人怕硬件,其實(shí)嵌入式系統(tǒng)硬件比電子線路好學(xué)多了。只要深入理解MCU的硬件最小系統(tǒng),對(duì)I/O口、串行通信、鍵盤(pán)、LED、
LCD、SPI、I2C、PWM、A/D(包括一些傳感器)、D/A等逐個(gè)實(shí)驗(yàn)理解,逐步實(shí)踐。再通過(guò)自己做一個(gè)實(shí)際的小系統(tǒng),底層硬件基礎(chǔ)就有了。各個(gè)
硬件模塊驅(qū)動(dòng)程序的編寫(xiě)是嵌入式系統(tǒng)的必備基礎(chǔ)。學(xué)習(xí)嵌入式系統(tǒng)的初期,這個(gè)過(guò)程是必須的。
(4)至于嵌入式實(shí)時(shí)操作系統(tǒng)RTOS,一定不要一開(kāi)始就學(xué),這樣會(huì)走很多彎路,也會(huì)使你對(duì)嵌入式系統(tǒng)感到畏懼。等你軟件硬件基礎(chǔ)打好了,再學(xué)
習(xí)就感到容易理解。實(shí)際上,眾多嵌入式應(yīng)用,并不一定需要操作系統(tǒng)。也可以根據(jù)實(shí)際項(xiàng)目需要再學(xué)習(xí)。一定不要被一些嵌入式實(shí)時(shí)操作系統(tǒng)移植培訓(xùn)班宣傳所誤
導(dǎo),而忽視實(shí)際嵌入式系統(tǒng)軟件硬件基礎(chǔ)知識(shí)的學(xué)習(xí)。
(5)要避免片面地單純從“電子”或“計(jì)算機(jī)軟件”角度認(rèn)識(shí)嵌入式系統(tǒng),嵌入式系統(tǒng)與硬件緊密相關(guān),是軟件與硬件的綜合體,沒(méi)有對(duì)硬件的理解就
不可能寫(xiě)好嵌入式軟件,同樣沒(méi)有對(duì)軟件的理解也不可能設(shè)計(jì)好嵌入式硬件。因此,要逐步從MCU的最小系統(tǒng)開(kāi)始,一點(diǎn)一點(diǎn)理解硬件原理及底層硬件驅(qū)動(dòng)編程方
法。要通過(guò)規(guī)范的例子,理解軟件工程封裝、可復(fù)用等思想。通過(guò)規(guī)范編程,積累底層構(gòu)件(Component),也就是一個(gè)一個(gè)模塊,但是要封裝得比較好,
可復(fù)用。
(6)注重實(shí)踐。這里我把實(shí)踐與實(shí)驗(yàn)區(qū)別開(kāi)來(lái),實(shí)驗(yàn)主要是他人的程序或驗(yàn)證性的,目的是學(xué)習(xí)基礎(chǔ)知識(shí)。實(shí)踐是自己設(shè)計(jì),有具體的“產(chǎn)品”目標(biāo)。如果你能花500元左右自己做一個(gè)具有一定功能的小產(chǎn)品,就可以說(shuō)接近入門(mén)了。
(7)關(guān)于入門(mén)芯片的選擇。一定不要選太復(fù)雜,不能超越學(xué)習(xí)過(guò)程。不要一下子學(xué)習(xí)幾種芯片,可以通過(guò)一個(gè)芯片入門(mén)并具有一個(gè)實(shí)踐經(jīng)驗(yàn)后,根據(jù)需
要選擇芯片。注意,選擇的是微控制器(MCU),而不是微處理器(MPU)。不同廠家生產(chǎn)的MCU穩(wěn)定性差異巨大。微處理器已經(jīng)不直接用于嵌入式系統(tǒng)的最
終產(chǎn)品設(shè)計(jì),不要誤解。
(8)關(guān)于操作系統(tǒng)的選擇。可以等到你具有一定實(shí)踐后,選擇一個(gè)簡(jiǎn)單容易理解原理的進(jìn)行學(xué)習(xí),不要一開(kāi)始就學(xué)習(xí)幾種操作系統(tǒng),理解了基本原理,實(shí)踐中確有實(shí)際需要再學(xué)習(xí)也不遲。人總是要不斷學(xué)習(xí)的。
(9)關(guān)于匯編與C語(yǔ)言的取舍。隨著MCU對(duì)C編譯的優(yōu)化支持,對(duì)于匯編可以只了解幾個(gè)必須的語(yǔ)句,直接使用C語(yǔ)言編程。但必須通過(guò)第一個(gè)程序理解芯片初始化過(guò)程、中斷機(jī)制、程序存儲(chǔ)情況等區(qū)別于PC機(jī)程序的內(nèi)容。
有關(guān)嵌入式系統(tǒng)的知識(shí)體系、可能的學(xué)習(xí)誤區(qū),另文討論。
以上建議,僅供參考。