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


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

內(nèi)存管理專題

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

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

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

項目實戰(zhàn)

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






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