新手集合-嵌入式linux學習路線(三大階段~)
第一階段
1.1 C語言入門
入門選一本簡單的、薄一點、不要出錯的書就可以了,例如譚浩強老爺子的書,選太厚的容易打擊你的信心和學習興趣,譚老爺子的書雖然被很多人噴,但對于初學者來說還是比較合適的。在入門之后才建議去看C語言的經(jīng)典教程:《C Primer Plus》這本書比較厚,知識點比較全,可以用于查漏補缺。 《C程序設計語言》(The C Programming Language)黑皮書這本書雖然經(jīng)典,但是我個人覺得不適合初學者去看,個人看來這本書更像是在敘述C語言的標準,所以講得比較精煉,初學者是看不懂的。
項目實戰(zhàn):
學完C語言之后可以嘗試寫一個無界面的學生成績管理系統(tǒng)、圖書管理系統(tǒng)。我大學時C語言的課設就是寫一個學生成績管理系統(tǒng)。
1.2 基本的數(shù)據(jù)結(jié)構(gòu)
單向鏈表、雙向鏈表、循環(huán)隊列、循環(huán)緩沖區(qū)、簡單的二叉樹
1.3 學會使用linux操作系統(tǒng)
掌握基本的linux命令,ubuntu(或者其他發(fā)行版本)操作系統(tǒng)的使用。1.4 計算機網(wǎng)絡基礎(chǔ)tcp/ip網(wǎng)絡模型、osi參考模型 著重掌握tcp、http、udp、ip協(xié)議 學會使用抓包工具,結(jié)合fiddle工具、wireshark等抓包工具學習網(wǎng)絡協(xié)議。 推薦謝稀仁《計算機網(wǎng)絡》這本書,經(jīng)典的計算機網(wǎng)絡教科書。
文末有學習路線參考!
【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【891587639】整理了一些個人覺得比較好的學習書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。。。ê曨l教程、電子書、實戰(zhàn)項目及代碼)? ?


第二階段
2.1精通C語言
想要精通C語言并不容易,沒有一兩年的磨練難談精通。 推薦書籍: 《C專家編程》 《C與指針》 《C陷阱》 《C程序設計語言》(The C Programming Language)黑皮書 C語言的難點在于指針和數(shù)組,前面三本書大部分的章節(jié)都是圍繞這兩點展開。 《C程序設計語言》是由C語言的設計者Dennis M. Ritchie和著名計算機科學家Brian W. Kernighan編寫的一部介紹標準C語言及其程序設計方法的權(quán)威性經(jīng)典著作。整本書有種提綱挈領(lǐng)的感覺,適合在學完C語言之后再來慢慢品讀,這本書很簡練,廢話很少,可以看成是一種標準。
2.2 最好掌握C++(不是必須,但推薦)
有了C語言的基礎(chǔ),學習C語言是非常容易的,難點在于從面向過程到面向?qū)ο缶幊痰霓D(zhuǎn)變,掌握面向?qū)ο蟮脑O計規(guī)則和設計思想。 入門書籍: 《C++ Primer Plus》 《C++ Primer》 C++進階書籍: 《C++沉思錄》 《Effictive C++》 《More Effictive C++》
《深度探索C++對象模型》 ...
2.3 掌握linux C(linux應用程序開發(fā))
學習上層的嵌入式linux應用程序開發(fā)和編譯調(diào)試(gcc、gdb的使用)。 《UNIX環(huán)境高級編程》 《UNIX網(wǎng)絡編程》
練手項目
實現(xiàn)一個最基本的tcp服務器/客戶端程序 實現(xiàn)一個簡單的http服務器 實現(xiàn)一個多人聊天室 實現(xiàn)一個多任務線程池 實現(xiàn)一個web服務器多進程并發(fā)測試工具
2.4 shell腳本
《linux命令行于shell腳本編程大全》 《linux shell腳本攻略》 其實也不用看書,找個系統(tǒng)的知識網(wǎng)站或者博客看下,比如菜鳥教程,再動手寫下也可以。
2.5 Makefile語法
推薦 陳皓的系列文章,自行百度。
2.6 學習arm
認識arm體系結(jié)構(gòu) 掌握基本的arm匯編
2.7 嵌入式系統(tǒng)的構(gòu)建
建議買一個開發(fā)板。 交叉編譯。 ssh、telnet等工具的使用。 samba服務器搭建。 nfs文件系統(tǒng)掛載。 kernel裁剪、編譯、燒寫。 基本的uboot命令、uboot編譯燒寫、嘗試自己添加一個uboot命令。 文件系統(tǒng)制作、裁剪、燒寫(busybox使用)。
第三階段
3.1 學習內(nèi)核
從事應用層、驅(qū)動層的都應深入學習內(nèi)核,驅(qū)動層的工作對于內(nèi)核的要求更高一些。
這里給大家推薦零聲教育的Linux內(nèi)核源碼開發(fā)課程,對標騰訊T9級別。
學習Linux內(nèi)核主要從
進程管理專題
內(nèi)存管理專題
網(wǎng)絡協(xié)議棧專題
設備驅(qū)動管理專題
文件系統(tǒng)及內(nèi)核組件專題
全方面系統(tǒng)全面的講解底層原理開發(fā)技術(shù):
最新Linux內(nèi)核大綱
進程管理專題

內(nèi)存管理專題

網(wǎng)絡協(xié)議棧專題

設備驅(qū)動管理專題

文件系統(tǒng)及內(nèi)核組件專題

項目實戰(zhàn)

適合于
1.從事業(yè)務開發(fā)多年,對底層原理理解不夠深入的在職工程師
2. 從事嵌入式方向開發(fā),想轉(zhuǎn)入互聯(lián)網(wǎng)開發(fā)的在職工程師
3. 從事Qt/MFC等桌面開發(fā),薪資多年漲幅不大的在職工程師
4. 從事非開發(fā)崗位(算法崗,運維崗,測試崗),想轉(zhuǎn)后臺開發(fā)崗位的在職工程師
5. 工作中技術(shù)沒有挑戰(zhàn),工作中接觸不到新技術(shù)的在職工程師
6. 自己研究學習速度較慢,不能系統(tǒng)構(gòu)建知識體系的開發(fā)人員
7. 了解很多技術(shù)名詞,但是深入細問又不理解的工程師
8. 計算機相關(guān)專業(yè)想進入大廠的在校生(本科及以上學歷,有c/c++基礎(chǔ))






等等
三大核心主題:
進程管理與調(diào)用 進程、線程
內(nèi)存管理 進程的內(nèi)存布局
文件系統(tǒng) 推薦書籍:
《深入理解Linux內(nèi)核》(第三版)
《Linux內(nèi)核源代碼情景分析》
3.2 操作系統(tǒng)原理
很多的高校把這個課放在了大一來教,個人覺得在沒有編程基礎(chǔ)和學習linux操作系統(tǒng)之前來學習操作系統(tǒng)原理,有點枯燥和難以理解,很多的知識點不能引起學生的共鳴。按照很多人的學習路線,也是在有了一定的開發(fā)經(jīng)驗之后才來彌補操作系統(tǒng)的知識。
《深入理解計算機系統(tǒng)》
《操作系統(tǒng)概念》這個屬于內(nèi)功心法,學了和沒學的人在認知上是不一樣的,學完操作系統(tǒng)原理,看待問題能夠看得透徹一些。譬如,老生常談進程和線程的概念,每一個人能講出的深度都是不一樣的。
3.3 學習行業(yè)相關(guān)的東西(稀缺人才)
到了這個階段,你需要學習行業(yè)相關(guān)的東西,這取決于你想從事的行業(yè),
流媒體 ---- rtsp、rtmp、onvif等協(xié)議
路由器 ---- 網(wǎng)絡協(xié)議
機器人 ---- 實時操作系統(tǒng)
android
Qt
底層驅(qū)動開發(fā)
音視頻編解碼
3.4 終生學習
學習是一生的事情,技術(shù)永遠學不完,保持終生學習的態(tài)度才能不被社會所淘汰!