現(xiàn)在可以說嵌入式linux作為現(xiàn)在嵌入式行業(yè)的最核心的一個點,它廣泛應用在很多手機消費品,工業(yè),航空航天電子等相關行業(yè)。隨著社會嵌入式的發(fā)展,嵌入式linux也變得成熟起來,可以說處于一直發(fā)展中,而現(xiàn)在是學習嵌入式linux最適合的時間,所以很多人隨著這股潮流學習嵌入式linux,那么問題來了,嵌入式linux如何學,有些人選擇培訓而有些人選擇自學,那么今天就來說一下選擇自學的人兒應該從何學起。
對于自學的新手來說,首先要有一個清晰的學習路線,不然學的會很迷茫的。
首先我們要明白你的目的是什么,大概來說所謂嵌入式Linux可以分為兩部分:底層系統(tǒng)、應用開發(fā)。
如果你是對底層系統(tǒng)感興趣,那么你就要進行如下的學習:底層學習有驅(qū)動和應用,這又該怎么選擇呢?
1.我們說的驅(qū)動,其實并不局限于硬件的操作,還有操作系統(tǒng)的原理、進程的休眠喚醒調(diào)度等概念。
2.做應用門檻低,特別是現(xiàn)在的ANDROID,純JAVA。做應用的發(fā)展路徑個人認為就是業(yè)務純熟。
比如在通信行業(yè)、IPTV行業(yè)、手機行業(yè),你了解行業(yè)的需求。所以,當領導的人,多是做應用的。
3.做驅(qū)動,其實我不想稱為“做驅(qū)動”,而是想稱為“做底層系統(tǒng)”,做好了這是通殺各行業(yè)。
4.其實,做底層還是做應用,之間并沒有一個界線,有底層經(jīng)驗,再去做應用,你會感覺很踏實。
接下來就是具體的概括學習了:
一、linux入門
目前嵌入式主要開發(fā)環(huán)境有 Linux、Wince等;Linux因其開源、開發(fā)操作便利而被廣泛采用。而Linux操作系統(tǒng)也只是一個簡單的操作系統(tǒng),簡單的使用對于嵌入式開發(fā)人 員來說價值并不很高,真正有價值的是掌握Linux的基本服務和Linux的設計理念、思想,這對于嵌入式開發(fā)人員的長期發(fā)展是很極其重要的。Linux 系統(tǒng)有很多發(fā)行版,RedHat、Ubuntu、Fedora等。作為嵌入式開發(fā)人員,我們沒有必要把精力放到使用哪個Linux發(fā)行版上,而是盡快把 Linux系統(tǒng)盡快安裝好。如果打算堅持長期學習,那么建議您把自己的電腦做成雙系統(tǒng),而不要在虛擬機上安裝。
二、C語言
C語言是嵌入式開發(fā)必備的基礎知識。在Linux下從事C語言的開發(fā),你會覺得更為順暢、更為自然,因為C語言是因unix的出現(xiàn)而誕生的,Linux內(nèi) 核幾乎完全是由C語言編寫完成的。學習C語言,如果不會用指針,那么就稱不上會C語言。做嵌入式開發(fā)指針更顯得尤為重要,所以做嵌入式開發(fā)除了掌握位操 作、限定詞等,對指針的掌握是不可或缺的。而且要掌握多級指針、函數(shù)指針等等。涉及到指針,那么就會講到內(nèi)存分配。在大學中,學習C語言一般的學習很少講 到內(nèi)存分配,但是如果期望從事嵌入式開發(fā),那么就必須懂得C語言是怎么做內(nèi)存分配管理的。指針之外,還要學習模塊化編譯處理、指針與數(shù)組、gcc、 Makefile、GDB、遞歸、結(jié)構體、宏定義使用等。C語言是整棟嵌入式大廈的基礎,所以在學習嵌入式時,必須把C語言重視起來,多敲代碼,多練。一 名優(yōu)秀的程序員必定是通過“體力勞動”再轉(zhuǎn)向“腦力勞動的”,這也是為什么我們要有“寫不出代碼=0”思想的原因所在。
如果說C語言相當于文字,那么數(shù)據(jù)結(jié)構就相當于在造句、寫文章。代碼質(zhì)量有一部分取決于對數(shù)據(jù)結(jié)構的掌握程度。在數(shù)據(jù)結(jié)構部分我們要把鏈表、樹、排序作 為學習重點。而且我們也可以查看一些比較常見的函數(shù)(如strcopy、strcat、printf等)在內(nèi)核中是如何實現(xiàn)的,以及編寫代碼模擬堆棧,這 不僅有利于編寫代碼質(zhì)量的提高,而且還可以初步了解Linux內(nèi)核精髓,為今后工作打下堅實的基礎。
三、linux應用程序設計
Linux的思想源于Unix。Linux繼承了Unix的優(yōu)點,但是沒有用UNIX的代碼,所有程序都是重新編寫的,而且Linux與Unix的源碼級兼容。Linux是類Unix操作系統(tǒng)。Linux 不僅符合 POSIX 標準,而且還包括其它 UNIX 標準的多種特性,例如,UNIX 的 System V 接口文檔(System V Interface Document,SVID)和伯克利軟件發(fā)布(Berkeley Software Distribution,BSD)版本。Linux 采用了折衷的策略,包含了 UNIX 幾個典型特性當中最實用的一些功能:
Linux 采用了 SVR4 的進程間通信(IPC)機制:共享內(nèi)存、消息隊列、信號。
Linux 支持 BSD Socket 網(wǎng)絡編程接口。
許多 Linux 發(fā)行版采用 SysV init 機制,支持運行級別。
此階段的學習是從事嵌入式上層應用開發(fā)以及底層開發(fā)人員的必修課程。進程、線程、信號、文件鎖、socket是這部分內(nèi)容的重點。要把這些內(nèi)容學的透徹非要下些苦功夫不可。而且函數(shù)是系統(tǒng)提供給我們的,難免要對計算機系統(tǒng)深入理解一番。TCP/IP協(xié)議也是要涉及到的。有問題建議用Google搜索及登陸chinaunix論壇。通過這個階段的學習,我們就可以初步實現(xiàn)一些應用程序的開發(fā)了,如做自己的shell命令解析器、簡單的聊天軟件、視頻多播等。
四、arm體系結(jié)構
從這部分開始,我們將真正進入嵌入式開發(fā)學習階段。首先我們要知道采用哪種處理器。目前通用嵌入式處理器有ARM、MIPS、PowerPC、X86等。從市場產(chǎn)品占有率上看,ARM處理器遠遠領先于同類其它處理器,并逐步掠奪傳統(tǒng)51單片機和英特爾市場份額。據(jù)招聘網(wǎng)站統(tǒng)計,目前用人單位在技術水平上要求開發(fā)人員掌握ARM9及以上平臺的開發(fā)技術。ARM公司在發(fā)布ARM11產(chǎn)品后,更改以往的數(shù)字標記更新方式,轉(zhuǎn)為發(fā)布ARM Cortex。但是Cortex并不是更高端,而是全新系列的處理器,比如Cortex M3,它主要應用于機械加工、工控領域,目的是取代以前的ARM7處理器。
五、linux內(nèi)核 驅(qū)動
眾所周知嵌入式開發(fā)包含至少兩個級別,一個是嵌入式內(nèi)核驅(qū)動級別,另外一個是嵌入式應用層開發(fā),而薪酬高的、最具價值的無疑是嵌入式內(nèi)核驅(qū)動級別的開發(fā)者。真正的嵌入式高手或者企業(yè)中的核心開發(fā)人員,一定是嵌入式底層的內(nèi)核驅(qū)動開發(fā)工程師,這些工程師成長比較緩慢,造成對內(nèi)核驅(qū)動人才的大量需求,所以這些人才是真正企業(yè)需要的香餑餑。掌握驅(qū)動開發(fā)會讓自己的核心能力有極大的飛躍,真正實現(xiàn)嵌入式最有價值的就業(yè)。
通過上面的學習,你會學的很容易,但是有一點你要知道,自學的話,不是很建議,因為自學,學習的東西不全,很多東西都學不到,而且不會的時候很多都解決不了,也不能面對社會的要求,這個的話就得看你自身了,看你的選擇了,學習嵌入式還是很不錯的。