整理了嵌入式linux學(xué)習(xí)路線供參考,希望對(duì)您有所參考價(jià)值!
一、linux入門
目前嵌入式主要開(kāi)發(fā)環(huán)境有 Linux、Wince等;Linux因其開(kāi)源、開(kāi)發(fā)操作便利而被廣泛采用。而Linux操作系統(tǒng)也只是一個(gè)簡(jiǎn)單的操作系統(tǒng),簡(jiǎn)單的使用對(duì)于嵌入式開(kāi)發(fā)人 員來(lái)說(shuō)價(jià)值并不很高,真正有價(jià)值的是掌握Linux的基本服務(wù)和Linux的設(shè)計(jì)理念、思想,這對(duì)于嵌入式開(kāi)發(fā)人員的長(zhǎng)期發(fā)展是很極其重要的。Linux 系統(tǒng)有很多發(fā)行版,RedHat、Ubuntu、Fedora等。作為嵌入式開(kāi)發(fā)人員,我們沒(méi)有必要把精力放到使用哪個(gè)Linux發(fā)行版上,而是盡快把 Linux系統(tǒng)盡快安裝好。如果打算堅(jiān)持長(zhǎng)期學(xué)習(xí),那么建議您把自己的電腦做成雙系統(tǒng),而不要在虛擬機(jī)上安裝。
Ubuntu系統(tǒng)下載地址:http://www.ubuntu.org.cn/desktop/get-ubuntu/download/
二、C語(yǔ)言
C語(yǔ)言是嵌入式開(kāi)發(fā)必備的基礎(chǔ)知識(shí)。在Linux下從事C語(yǔ)言的開(kāi)發(fā),你會(huì)覺(jué)得更為順暢、更為自然,因?yàn)镃語(yǔ)言是因UNIX的出現(xiàn)而誕生的,Linux內(nèi) 核幾乎完全是由C語(yǔ)言編寫完成的。學(xué)習(xí)C語(yǔ)言,如果不會(huì)用指針,那么就稱不上會(huì)C語(yǔ)言。做嵌入式開(kāi)發(fā)指針更顯得尤為重要,所以做嵌入式開(kāi)發(fā)除了掌握位操 作、限定詞等,對(duì)指針的掌握是不可或缺的。而且要掌握多級(jí)指針、函數(shù)指針等等。涉及到指針,那么就會(huì)講到內(nèi)存分配。在大學(xué)中,學(xué)習(xí)C語(yǔ)言一般的學(xué)習(xí)很少講 到內(nèi)存分配,但是如果期望從事嵌入式開(kāi)發(fā),那么就必須懂得C語(yǔ)言是怎么做內(nèi)存分配管理的。指針之外,還要學(xué)習(xí)模塊化編譯處理、指針與數(shù)組、gcc、 Makefile、GDB、遞歸、結(jié)構(gòu)體、宏定義使用等。C語(yǔ)言是整棟嵌入式大廈的基礎(chǔ),所以在學(xué)習(xí)嵌入式時(shí),必須把C語(yǔ)言重視起來(lái),多敲代碼,多練。一 名優(yōu)秀的程序員必定是通過(guò)“體力勞動(dòng)”再轉(zhuǎn)向“腦力勞動(dòng)的”,這也是為什么我們要有“寫不出代碼=0”思想的原因所在。
如果說(shuō)C語(yǔ)言相當(dāng)于文字,那么數(shù)據(jù)結(jié)構(gòu)就相當(dāng)于在造句、寫文章。代碼質(zhì)量有一部分取決于對(duì)數(shù)據(jù)結(jié)構(gòu)的掌握程度。在數(shù)據(jù)結(jié)構(gòu)部分我們要把鏈表、樹(shù)、排序作 為學(xué)習(xí)重點(diǎn)。而且我們也可以查看一些比較常見(jiàn)的函數(shù)(如strcopy、strcat、printf等)在內(nèi)核中是如何實(shí)現(xiàn)的,以及編寫代碼模擬堆棧,這 不僅有利于編寫代碼質(zhì)量的提高,而且還可以初步了解Linux內(nèi)核精髓,為今后工作打下堅(jiān)實(shí)的基礎(chǔ)。
C 、QT在嵌入式開(kāi)發(fā)領(lǐng)域,是用來(lái)開(kāi)發(fā)圖形界面的,希望從事上層應(yīng)用開(kāi)發(fā)及圖形界面,那么在C 、QT方面需要比較深入的學(xué)習(xí)。
經(jīng)典書(shū)籍推薦:《C程序設(shè)計(jì)語(yǔ)言》《C專家編程》《C陷阱和缺陷》《C和指針》《數(shù)據(jù)結(jié)構(gòu)與算法分析–C語(yǔ)言描述》《C Primer》 《GNU Make》 《C QUI QT4編程》
三、linux應(yīng)用程序設(shè)計(jì)
Linux的思想源于Unix。Linux繼承了Unix的優(yōu)點(diǎn),但是沒(méi)有用UNIX的代碼,所有程序都是重新編寫的,而且Linux與Unix的源碼級(jí)兼容。Linux是類Unix操作系統(tǒng)。Linux 不僅符合 POSIX 標(biāo)準(zhǔn),而且還包括其它 UNIX 標(biāo)準(zhǔn)的多種特性,例如,UNIX 的 System V 接口文檔(System V Interface Document,SVID)和伯克利軟件發(fā)布(Berkeley Software Distribution,BSD)版本。Linux 采用了折衷的策略,包含了 UNIX 幾個(gè)典型特性當(dāng)中最實(shí)用的一些功能:
Linux 采用了 SVR4 的進(jìn)程間通信(IPC)機(jī)制:共享內(nèi)存、消息隊(duì)列、信號(hào)。
Linux 支持 BSD Socket 網(wǎng)絡(luò)編程接口。
許多 Linux 發(fā)行版采用 SysV init 機(jī)制,支持運(yùn)行級(jí)別。
此階段的學(xué)習(xí)是從事嵌入式上層應(yīng)用開(kāi)發(fā)以及底層開(kāi)發(fā)人員的必修課程。進(jìn)程、線程、信號(hào)、文件鎖、socket是這部分內(nèi)容的重點(diǎn)。要把這些內(nèi)容學(xué)的透徹非要下些苦功夫不可。而且函數(shù)是系統(tǒng)提供給我們的,難免要對(duì)計(jì)算機(jī)系統(tǒng)深入理解一番。TCP/IP協(xié)議也是要涉及到的。有問(wèn)題建議用Google搜索及登陸chinaunix論壇。通過(guò)這個(gè)階段的學(xué)習(xí),我們就可以初步實(shí)現(xiàn)一些應(yīng)用程序的開(kāi)發(fā)了,如做自己的shell命令解析器、簡(jiǎn)單的聊天軟件、視頻多播等。
經(jīng)典書(shū)籍推薦:
《Unix環(huán)境高級(jí)編程》 《Unix網(wǎng)絡(luò)編程》 《TCP/IP詳解卷I》《深入理解計(jì)算機(jī)系統(tǒng)》
四、ARM體系結(jié)構(gòu)
從這部分開(kāi)始,我們將真正進(jìn)入嵌入式開(kāi)發(fā)學(xué)習(xí)階段。首先我們要知道采用哪種處理器。目前通用嵌入式處理器有ARM、MIPS、PowerPC、X86等。從市場(chǎng)產(chǎn)品占有率上看,ARM處理器遠(yuǎn)遠(yuǎn)領(lǐng)先于同類其它處理器,并逐步掠奪傳統(tǒng)51單片機(jī)和英特爾市場(chǎng)份額。據(jù)招聘網(wǎng)站統(tǒng)計(jì),目前用人單位在技術(shù)水平上要求開(kāi)發(fā)人員掌握ARM9及以上平臺(tái)的開(kāi)發(fā)技術(shù)。ARM公司在發(fā)布ARM11產(chǎn)品后,更改以往的數(shù)字標(biāo)記更新方式,轉(zhuǎn)為發(fā)布ARM Cortex。但是Cortex并不是更高端,而是全新系列的處理器,比如Cortex M3,它主要應(yīng)用于機(jī)械加工、工控領(lǐng)域,目的是取代以前的ARM7處理器。
在開(kāi)始學(xué)習(xí)前,建議有一塊自己的開(kāi)發(fā)板,目前ARM9 2440的開(kāi)發(fā)板價(jià)格在400-600元之間,ARM11 6410的開(kāi)發(fā)板價(jià)格要高一些,最便宜的也要1200元以上。在此,提醒大家盡量不要買mini開(kāi)發(fā)板,雖然mini開(kāi)發(fā)板的價(jià)格要便宜些,但是與正常開(kāi)發(fā)板相比,mini板功能是不完善的。嵌入式匯編有別于X86匯編,所以如果以前沒(méi)有接觸過(guò)匯編語(yǔ)言,那么沒(méi)有必要先去學(xué)X86匯編再學(xué)嵌入式匯編,可以直接學(xué)習(xí)嵌入式匯編。除了匯編我們還要學(xué)習(xí)ARM指令集。有了開(kāi)發(fā)板,我們要下載相對(duì)應(yīng)處理器的DataSheet及開(kāi)發(fā)板電路原理圖。ARM體系結(jié)構(gòu)的學(xué)習(xí)我們是不能完全照抄別人代碼的,因?yàn)槲覀冏约菏种械拈_(kāi)發(fā)板及處理器與別人是不同的,除非所用的代碼是根據(jù)你手中的開(kāi)發(fā)板來(lái)編寫的。所以,我們要先去看書(shū)、看視頻資料理解原理及工作方式等,然后根據(jù)自己開(kāi)發(fā)板的電路原理圖和DataSheet來(lái)編寫代碼,達(dá)到理解外圍設(shè)備工作原理和操作硬件的目的。
經(jīng)典書(shū)籍推薦:《嵌入式linux應(yīng)用開(kāi)發(fā)完全手冊(cè)》《arm嵌入式系統(tǒng)開(kāi)發(fā)–軟件設(shè)計(jì)與優(yōu)化》
五、嵌入式提示—linux內(nèi)核 驅(qū)動(dòng)
眾所周知嵌入式開(kāi)發(fā)包含至少兩個(gè)級(jí)別,一個(gè)是嵌入式內(nèi)核驅(qū)動(dòng)級(jí)別,另外一個(gè)是嵌入式應(yīng)用層開(kāi)發(fā),而薪酬高的、最具價(jià)值的無(wú)疑是嵌入式內(nèi)核驅(qū)動(dòng)級(jí)別的開(kāi)發(fā)者。真正的嵌入式高手或者企業(yè)中的核心開(kāi)發(fā)人員,一定是嵌入式底層的內(nèi)核驅(qū)動(dòng)開(kāi)發(fā)工程師,這些工程師成長(zhǎng)比較緩慢,造成對(duì)內(nèi)核驅(qū)動(dòng)人才的大量需求,所以這些人才是真正企業(yè)需要的香餑餑。掌握驅(qū)動(dòng)開(kāi)發(fā)會(huì)讓自己的核心能力有極大的飛躍,真正實(shí)現(xiàn)嵌入式最有價(jià)值的就業(yè)。
由于Linux內(nèi)核更新速度很快,書(shū)籍和視頻不可能及時(shí)更新,所以我們?cè)倏磿?shū)和視頻后,要自己動(dòng)手下載內(nèi)核源碼包,去看內(nèi)核中的代碼,在這里可以充分檢驗(yàn)C語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)等基礎(chǔ)知識(shí)的掌握程度。而驅(qū)動(dòng)的編寫還是要借助外設(shè)硬件電路原理圖和芯片手冊(cè)。內(nèi)核和驅(qū)動(dòng)的知識(shí)是讓我們根據(jù)不同的硬件,編寫對(duì)應(yīng)的驅(qū)動(dòng)、合理剪裁內(nèi)核、制作文件系統(tǒng),并移植到硬件開(kāi)發(fā)板上。如果手里有ARM11 6410及以上的開(kāi)發(fā)板,可以試試在裸板上編寫驅(qū)動(dòng)并移植Android系統(tǒng)到開(kāi)發(fā)板上吧。
另外還有一些關(guān)于c Linux后臺(tái)服務(wù)器開(kāi)發(fā)的一些知識(shí)點(diǎn)分享:Linux,Nginx,MySQL,Redis,P2P,K8S,Docker,TCP/IP,協(xié)程,DPDK,webrtc,音視頻等等視頻。
喜歡的朋友可以后臺(tái)私信【1】獲取學(xué)習(xí)視頻
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。