大家好,我是CodeAllen(康哥),今天文章的主題是承接單片機,分享我之前在知乎寫的一篇關(guān)于嵌入式Linux學習路線的文章,這也是單片機工程師進階的一個重要方向。
其實對于嵌入式開發(fā),不管是單片機方向還是Linux方向,其難度都不能說很大,但是從很多同學的反饋看則覺得嵌入式的知識門檻很高,我從我這些年的學習感悟中,大概知道了些原因。
嵌入式不同于其他一些純軟的方向,它沒有非常具體的學習的學習路線,有些培訓班貌似具體的路線,其實是過分冗余,三四個月恨不得把嵌入式技術(shù)棧刷完,這顯然不是很好的方法,但是很多同學還樂此不疲,失敗了還總結(jié)為自己不夠刻苦,亦或是埋怨嵌入式道路難且長。
我把學習嵌入式的路徑大致總結(jié)幾個關(guān)鍵詞,核心知識+實踐能力+長期積累,與大家共勉。
先放個總結(jié)的腦圖,因為技術(shù)本就是不斷的變化,所以后期會根據(jù)實際情況不定期更新,這個更新大家可以點擊文末的“閱讀原文”跳轉(zhuǎn)到知乎閱讀。
雖然嵌入式Linux的學習路線看起來比單片機復雜很多,不過使用類比學習的方法也是完全可以的,這個后邊會細說,有什么疑問也可以加我微信交流。對于嵌入式Linux而言,C語言仍然是重中之重,下邊就是我提供的一些學習概念和資源,有時間會不斷的更新,所以請持續(xù)關(guān)注!
下邊按照腦圖的順序依次分享下:
目的:這部分是屬于Linux的入門操作,也是新人比較容易切入的學習點。做到基本了解Linux系統(tǒng)的使用,知道什么是Linux即可。方法:需要在電腦上安裝Linux系統(tǒng),這里比較建議安裝虛擬機,然后在虛擬機中安裝Linux系統(tǒng)。安裝步驟可以參考我的文章:CodeAllen:Ubuntu在虛擬機中的安裝方法CodeAllen:虛擬機快速安裝VMware ToolCodeAllen:Ubuntu更換下載源,國內(nèi)用戶必備書籍:《Linux命令行與shell腳本編程大全(第3版)》《Linux與Unix Shell 編程指南》
目的:上文也說了,對于嵌入式Linux開發(fā),C語言是核心,而對于軟件研發(fā),數(shù)據(jù)結(jié)構(gòu)又是靈魂。至于C++對于嵌入式是屬于進階的角色,也是嵌入式開發(fā)后期進入高薪的一個敲門磚,但是并不是必須,所以有余力的同學可以看看。
方法:嵌入式Linux的C語言學習是在掌握基礎(chǔ)C語言的前提下,屬于是繼續(xù)深挖的學習。所以這種情況就需要多實踐,盡可能在Linux系統(tǒng)上實操,并進行debug,因為C語言就是debug的藝術(shù),這是必不可少的能力。盡可能多的編碼,要學好嵌入式C語言,不能只注重C本身。算法,架構(gòu)方式等都很重要。
書籍推薦:
C語言:《C程序設(shè)計語言現(xiàn)代方法》《C Primer Plus》《高質(zhì)量C++/C編程指南》《C語言深度剖析》《C和指針》《C陷阱與缺陷》《專家C編程》《嵌入式系統(tǒng)編程》《C語言嵌入式系統(tǒng)編程修煉》
數(shù)據(jù)結(jié)構(gòu)及理論基礎(chǔ):《數(shù)據(jù)結(jié)構(gòu)(C語言版)》《算法》《算法導論》
進階部分:
目的:這里的進階其實就是進入嵌入式Linux實戰(zhàn)階段,也是之后工作的重點,所以這部分知識是雜糅在一起的,我雖然根據(jù)自己的理解把之分解為了三部分,但其實這些很多是需要一起學習的。
方法:對于這部分知識的學習,后續(xù)的路徑有些分化,但是也有共同點:熟練使用Linux -> Linux系統(tǒng)編程開發(fā)熟練使用Linux?->驅(qū)動開發(fā)和Linux內(nèi)核開發(fā)當然實際這里面還有很多細節(jié),很難用概述的方法講清楚,只能是大家學習的過程中去體會。
書籍:
Linux應(yīng)用開發(fā):《Unix環(huán)境高級編程》《嵌入式Linux應(yīng)用程序開發(fā)詳解》《Advanced Programming in the UNIX Environment》(APUE)《Linux高級程序設(shè)計》 楊宗德《嵌入式ARM系統(tǒng)原理與實例開發(fā)》 楊宗德《深入理解計算機系統(tǒng)》《操作系統(tǒng):精髓與設(shè)計原理》
Linux網(wǎng)絡(luò)開發(fā):《UNIX Network Programming》(UNP)《TCP/IP詳解》
Linux驅(qū)動開發(fā):《Linux設(shè)備驅(qū)動開發(fā)》(LDD)《ARM體系結(jié)構(gòu)與編程》杜春雷《linux設(shè)備驅(qū)動開發(fā)詳解》宋寶華
Linux內(nèi)核:《Linux內(nèi)核完全剖析》《Unix環(huán)境高級編程》《深入理解Linux內(nèi)核》《嵌入式系統(tǒng)》毛德操《Linux內(nèi)核源代碼情景分析》毛德操 胡希明《Linux內(nèi)核編程》