1. 程式人生 > >嵌入式小白到大神學習全攻略(學習路線+課程+學習書籍+練習專案)

嵌入式小白到大神學習全攻略(學習路線+課程+學習書籍+練習專案)

文章較長,希望耐心閱讀,讀完相信會對你的學習一定有幫助~

嵌入式工程師需要掌握的內容非常廣泛,嵌入式可以說是當下最有前途的IT應用領域,小到電子詞典、手機,大到航空航天裝置都是典型的嵌入式系統,因此,通過嵌入式技術人才的職業發展空間是非常大的。要快速學習掌握技術我們要學會抓住重點,學會取捨,達到一通百通,事半功倍的學習效果。
近幾年,嵌入式系統產品漸漸完善,並在全世界各行業得到廣泛應用。2004年,全球嵌入式系統產品的產值已達2000億美元,國內嵌入式軟體的產值也達到600億人民幣。目前,嵌入式系統產品的研製和應用已經成為我國資訊化帶動工業化、工業化促進資訊化發展的新的國民經濟增長點。隨著消費家電的智慧化,嵌入式更顯重要,像我們平常見到的手機、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數字相機(DC)、數字攝像機 (DV)、U-Disk、機頂盒(Set Top Box)、高清電視(HDTV)、遊戲機、智慧玩具、交換機、路由器、數控裝置或儀表、汽車電子、家電控制系統、醫療儀器、航天航空裝置等等,都是典型的嵌入式系統。據預測,隨著Internet的迅速發展和廉價微處理器的出現,嵌入式系統將在日常生活裡形成更大的應用領域。

嵌入式軟體工程師學習路線詳解及書籍推薦:
一、嵌入式軟體程式設計的基礎
這一階段重點打好嵌入式軟體程式設計的基礎,包括學習Linux系統的基本應用,Linux的常用命令、C語言程式設計基礎、常用的資料結構。
特別是C語言中對指標的理解和應用。這一階段的主要目的是學習程式語言、開發環境、和培養自己的程式設計思維,為進一步學習嵌入式開發打下良好的基礎。 必學內容有:Linux Ubuntu作業系統安裝、使用、Linux常用命令、samba伺服器、SSH遠端登入GCC編譯器、GDB偵錯程式、VI編輯器
1、嵌入式C語言高階程式設計
1、C資料型別、控制語句
2、C程式結構設計、陣列、函式、預處理:
3、指標及字串操作
4、結構體、共用體、巨集、列舉
5、檔案I/O操作
推薦的嵌入式學習書籍:
《C程式設計語言》
《C語言核心技術》
《資料結構與演算法分析--C語言描述》
《C和指標》
《C陷阱與缺陷》
《C++ Primer》

二、嵌入式裝置及GUI開發
作業系統的嵌入式系統的構建,包括系統的啟動流程熟悉使用。編寫嵌入式環境配置與開發工具學習。這一階段的主要目的是掌握帶有作業系統的嵌入式系統的構建和燒寫過程,以及對嵌入式系統軟體的總體構成有個整體認識,為我們接下來學習嵌入式應用和驅動開發打下堅實的基礎。
1、Linux下專案管理工具Make以及Makefile工作原理及其編寫
2、Linux下shell指令碼相關知識及其編寫
3、嵌入式開發環境的基本概念及其搭建
4、A53開發板介紹、裝置使用、A53開發板與電腦通訊、交叉編譯
GUI圖形介面開發
1、常用控制元件——button、label、text edit等
2、常用佈局方式——水平佈局、垂直佈局、固定佈局、網格佈局、相對佈局等
3、常用事件及訊號處理技術——資訊回撥、滑鼠、鍵盤事件等
4、時間程式設計、資料儲存、繪圖機制、定時器處理、多工處理等
這一階段推薦的嵌入式學習書籍:
1、《Linux與Unix Shell 程式設計指南》
2、《嵌入式Linux應用程式開發詳解》

三、嵌入式Linux高階程式設計
這一階段主要學習上層的嵌入式Linux應用程式開發,包括基於Linux多程序、多執行緒、網路、檔案與目錄和QT程式設計。掌握嵌入式Linux環境下應用程式開發技術。嵌入式Linux系統程式設計。
1、Linux系統呼叫概念
2、程序相關概念、多程序實現多工開發
3、程序間通訊:無名管道、命名管道、訊號、訊息佇列、共享記憶體等
4、多執行緒實現多工開發
5、多工的同步互斥開發:互斥鎖、訊號量
四、Linux高階網路程式設計
Linux高階網路程式設計
1、網路相關概念及網路發展
2、TCP/IP協議
3、socket程式設計、TCP網路程式設計、UDP網路程式設計、Web程式設計開發等
4、Linux網路應用程式開發,Linux網路程式設計相關API
5、TCP協議伺服器的程式設計方法和併發伺服器的實現
6、HTTP協議及其實現方法,熟悉UDP廣播、多播的原理及程式設計方法,掌握混合C/S架構網路通訊系統的設計
7、IPv6與IPv4協議,及其程式設計介面
8、網路資料通訊過程
9、網路原始套接字概念及程式設計介面
這一階段推薦的書籍:
《UNIX環境高階程式設計》
《Unix網路程式設計》
《Qt Creator快速入門》
《精通Qt4程式設計》
《Linux裝置驅動程式》
《Linux裝置驅動開發詳解》

五、資料庫開發
1、資料庫概念、資料庫型別、常見資料庫
2、SQLite資料庫介紹及其安裝與移植
3、SQL資料庫語言( 資料定義語言(DDL)、資料操作語言(DML)、資料查詢語言(DQL)、資料控制語言(DCL) )
4、sqlite資料庫C語言程式設計中的各種SQL指令執行函式完成對資料庫的控制。

六、C++面向物件高階語言程式設計
C++語言高階語言開發
1.熟悉面向物件的語言概述
2.熟練掌握c++語言的基本知識和類與物件及其高階應用
3、作用域運算子、行內函數、強制型別轉換
4、new、delete記憶體管理
5、物件成員、成員函式
6、建構函式、解構函式、拷貝建構函式、函式過載
7、物件陣列、this指標、列舉、
8、靜態成員、靜態成員函式
9、物件成員
10、友元
11、封裝、繼承、多繼承、多型
12、虛擬函式、純虛擬函式、抽象類、虛解構函式 等

七、物聯網開發
1、瞭解物聯網、泛在網、網際網路基本要領及其關係
2、熟悉RFID從低頻段到高頻段的基本工作原理,以及RFID標籤的種類與行業應用,讀卡器原理與通訊過程
3、熟悉TI的cc2530的基本應用,包含基本硬體資源,協議棧相關介面使用,以及點對點通訊、星形通訊、廣播通訊、繫結通訊,三種網路結構star、tree、mesh,掌握zibgee相關微控制處理晶片
4、瞭解zigbe協議棧組成,以及zigbee在通訊、組網、搖控等領域的不同應用
5、通過Bluetooth、wifi和zigbee技術對比各自的優缺點,並重點介紹zigbee的各種應用
6、掌握溫度、溼度、光照、PH值、二氧化碳等感測器的工作原理及通訊介面
7、瞭解NB-IOT基本概念及移運BC95模組
8、熟悉CoAP協議在NB-IOT中的應用
9、掌握常用AT指定集

嵌入式技術關鍵在於理論和實踐的結合,要能夠學以致用,完成了以上的所有階段的知識點學習後,到底有沒有學會,會不會用,能不能應用所學知識來解決實際開發中的問題,我們需要來完成一個綜合的嵌入式實訓專案,例如:
專案一:智慧家居專案
本專案實現裝置的本地控制與遠端控制,對開關量裝置,能夠實現資訊採集類裝置的控制如溫溼度,能夠實現監控類裝置的控制如視訊監控,安全系統如外人***能夠自動通過GPRS報警。專案涉及技術c語言、多工開發、網路socket開發、boa網路伺服器、CGI程式設計、html網頁設計等
專案二:智慧人臉識別專案
本專案首先通過opencv庫的使用來實現人臉基本訓練模型檢測、再深入學習通過人臉識別以及實時抓取影象分析並識別,瞭解認識opencv、dlib等開源工具
專案三:RFID智慧門禁專案
本專案實現RFID卡識別,使用者資訊註冊、修改、刪除、語音播報提示可按不同的查詢條件查詢,可實現考勤
專案四:多媒體播放器專案
實現帶有圖形介面的音樂播放、暫停、上一曲、下一曲、歌曲列表歌詞同步等播放器功能,涉及到的知識點有c語言、資料結構連結串列、Linux多程序、多執行緒、程序間通訊、同步互斥等
專案五:智慧手機設計專案
本專案能夠實現智慧手機接打電話、來電顯示、收發中英文簡訊,檢視簡訊、訊號強度檢測、運營商檢測。專案涉及到的技術GPRS AT指令集、Linux多程序、多執行緒、程序間通訊、同步互斥、GUI圖形開發等
專案六:智慧教室專案
本專案可通過NB-IOT等標準物聯網通訊協議是實現現代化資源統籌管理,基本功能是實現教室燈控、空調、通風、窗簾、門禁、人流等實時遠端監控,以實現聯動、手動控制和資料採集分析
這些專案都綜合應用了嵌入式開發當中的應用,驅動和QT開發技術。以上就是我建議的比較系統的嵌入式學習路線。系統學習並能靈活應用以上知識後,嵌入式基本上就算入門了,具備企業專案的嵌入式研發能力了,這時候去應聘企業的嵌入式研發工程師崗位就不會有什麼問題了。