作者:曹國輝,湖南量子教育嵌入式培訓講師
嵌入式技術是各種電子產(chǎn)品的核心技術,也是工業(yè)4.0、遠程醫(yī)療、3D打印等新興產(chǎn)業(yè)的核心技術,具有廣闊的發(fā)展前景。很多計算機、電子信息類專業(yè)的學生都想把嵌入式開發(fā)作為自己的職業(yè)目標,但是因為嵌入式涉及的知識太多,太雜,太廣,很多嵌入式初學者陷入嵌入式知識的海洋中,東學一點,西學一點,找不到學習的方向。我從事嵌入式開發(fā)工作有10年,嵌入式教學工作有6年,作為過來人,給大家談談正確的嵌入式學習路線,供各位嵌入式初學者參考,希望對大家有所幫助。
嵌入式工程師需要掌握的內容非常廣泛,主要包括嵌入式軟件、嵌入式硬件、以及相關行業(yè)、產(chǎn)品的專業(yè)知識。作為嵌入式初學者,我們不可能,也沒有那么多精力把所有的知識到搞的很精通,我要學會抓住重點,學會取舍,達到一通百通,事半功倍的學習效果。
首先嵌入式技術主要分為嵌入式軟件和嵌入式硬件2大方向。
嵌入式硬件工程師主要工作職責是為產(chǎn)品設計硬件電路原理圖,設計硬件PCB板,選擇合適的元器件,焊接調試硬件電路板,保證硬件電路板的可靠性、穩(wěn)定性和抗干擾能力。因為現(xiàn)在集成電路發(fā)展迅速,大部分集成電路廠商都會提供參考電路,所以硬件電路原理圖的設計相對來說比較簡單,硬件工程師工作的含金量主要體現(xiàn)在產(chǎn)品的可靠性和穩(wěn)定性設計、以及電磁兼容設計,這才是硬件設計工程師的含金量所在。一個資深的嵌入式硬件工程師年薪都在10萬~ 30萬之間。
要成為一個資深的嵌入式工程師相當難,一方面要有非常扎實的理論知識,同時也要有相當?shù)哪欠N大型的、高頻CPU、多層PCB板的設計經(jīng)驗。嵌入式硬件工程師要學的課程主要有模擬電路設計、數(shù)字電路設計、電磁波理論等。熟悉常用的放大電路、濾波電路、電源電路設計和分析。
嵌入式軟件工程師的職責主要是根據(jù)產(chǎn)品的功能需求設計好軟件,讓硬件工作起來。嵌入式電子產(chǎn)品硬件部分,大部分都是相同的,核心的都是由CPU、RAM和FLASH 幾大部分組成,而軟件就千差萬別了。產(chǎn)品的具體功能都是由軟件來實現(xiàn)的,一般來講一個產(chǎn)品的實現(xiàn),軟件設計的工作量是硬件設計的4~5倍。所以一般情況下,一個公司的軟件工程師數(shù)量是硬件硬件工程師的4~5倍,嵌入式軟件工程師需求比硬件工程師大很多,同時跟硬件工程師相比,嵌入式軟件工程師學起來相對容易些,所以這里我重點和大家談一下嵌入式軟件工程的學習路線。
這一階段重點打好嵌入式軟件編程的基礎,包括學習Linux系統(tǒng)的基本應用,Linux的常用命令、C語言編程基礎、常用的數(shù)據(jù)結構。
特別是C語言中對指針的理解和應用。這一階段的主要目的是學習編程語言、開
發(fā)環(huán)境、和培養(yǎng)自己的編程思維,為進一步學習嵌入式開發(fā)打下良好的基礎。這一階段推薦的嵌入式學習書籍如下:《C程序設計語言》,《C語言核心技術》,《數(shù)據(jù)結構與算法分析--C語言描述》,《C和指針》,《C陷阱與缺陷》,《C++ Primer》
這一階段才是真正的嵌入式編程,首先我們要選擇一款嵌入式CPU和一款嵌入式開發(fā)平臺,目前ARM 嵌入式CPU應用最廣泛,這一階段重點是學習嵌入式CPU的裸機編程,熟悉中斷、定時器、串口、NAND FLASH、網(wǎng)絡控制器、LCD屏、觸摸屏等常用嵌入式外圍設備的硬件工作原理,以及如何使用C語言來編程、控制這些硬件。這一階段除了要學習對硬件編程之外,還需要學習嵌入式硬件的知識,但是對于嵌入式軟件工程師來講,重點是學習硬件的工作原理,在掌握硬件工作原理的基礎上,對硬件進行編程控制。這和硬件工程師學習的側重點有所不同。這一階段對應的學校的課程主要包括模擬電路、數(shù)字電路、微機原理和單片機。這一階段重點是要看CPU的芯片手冊,大部分的參考書也是對芯片手冊的翻譯。推薦的參考書籍如下:《ARM嵌入式系統(tǒng)開發(fā)--
軟件設計與優(yōu)化》,《ARM處理器開發(fā)詳解 基于ARM Cortex-A8處理器的開發(fā)設計》
這一階段主要學習帶有操作系統(tǒng)的嵌入式系統(tǒng)的構建,包括系統(tǒng)的啟動流程、Bootloader的工作流程、UBOOT的編譯、裁剪與移植、嵌入式Linux內核的裁剪、移植與編譯,嵌入式根文件系統(tǒng)的定制、BootLoader、內核和根文件系統(tǒng)的燒寫。這一階段的主要目的是掌握帶有操作系統(tǒng)的嵌入式系統(tǒng)的構建和燒寫過程,以及對嵌入式系統(tǒng)軟件的總體構成有個整體認識,為我們接下來學習嵌入式應用和驅動開發(fā)打下堅實的基礎。這一階段推薦的書籍如下:《構建嵌入式Linux核心軟件系統(tǒng)實戰(zhàn)》
這一階段主要學習上層的嵌入式Linux應用程序開發(fā),包括基于Linux多進程、多線程、網(wǎng)絡、文件與目錄和QT編程。掌握嵌入式Linux環(huán)境下應用程序開發(fā)技術。這一階段推薦的書籍有: 《UNIX環(huán)境高級編程》, 《Unix網(wǎng)絡編程》,《Qt Creator快速入門》, 《精通Qt4編程》
這一階段主要學習底層嵌入式Linux設備驅動程序開發(fā)設計,包括常用的字符設備驅動、塊設備驅動、LCD設備驅動、觸摸屏設備驅動以及驅動程序開發(fā)中的核心技術。這一階段推薦的參考書籍有:《Linux設備驅動程序》,《Linux設備驅動開發(fā)詳解》
嵌入式技術關鍵在于理論和實踐的結合,要能夠學以致用,完成了以上的所有階段的知識點學習后,到底有沒有學會,會不會用,能不能應用所學知識來解決實際開發(fā)中的問題,我們需要來完成一個綜合的嵌入式實訓項目,例如:基于嵌入式Linux平臺實現(xiàn)的飛行器、 基于嵌入式Linux平臺實現(xiàn)的智能機器人等,這些項目都綜合應用了嵌入式開發(fā)當中的應用,驅動和QT開發(fā)技術。
以上就是我建議的比較系統(tǒng)的嵌入式學習路線。系統(tǒng)學習并能靈活應用以上知識后,嵌入式基本上就算入門了,具備企業(yè)項目的嵌入式研發(fā)能力了,這時候去應聘企業(yè)的嵌入式研發(fā)工程師崗位就不會有什么問題了。
-END-
免責聲明:整理文章為傳播相關技術,版權歸原作者所有,如有侵權,請聯(lián)系刪除
免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!