當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > IT培訓(xùn)問題庫 > linux嵌入式如何自學(xué)?手把手教你學(xué)
嵌入式系統(tǒng)發(fā)展的這么快,很多人都開始投身都這一行業(yè)中來,有些人選擇培訓(xùn)來學(xué)習(xí),而有些人選擇自學(xué),對于選擇培訓(xùn)的人來說,一般培訓(xùn)機(jī)構(gòu)是會很清楚的來講解嵌入式linux學(xué)習(xí)方法步驟的,但是對于一些自學(xué)的人來說,是有一定的難度的,但也不需要煩惱,在這里手把手教你怎么去學(xué)。
在學(xué)習(xí)嵌入式linux時,你先了解一下自己有哪些基礎(chǔ),一般學(xué)習(xí)嵌入式linux,你必須要
1、精通c語言、數(shù)據(jù)結(jié)構(gòu) 、計算機(jī)原理(包括匯編的)、編譯原理 、操作系統(tǒng)
剛開始沒有基礎(chǔ)的話,就需要先做上面我說的這些,你可以在網(wǎng)上找書或者去書店買書,主攻書籍:the c programming language、數(shù)據(jù)結(jié)構(gòu)。
你學(xué)習(xí)完上面這些以后,那你就需要檢測一下自己了,看看都掌握了沒有,你可以去找一些題,比如鏈表?樹的遍歷?圖的最短路徑怎么實現(xiàn)?能自己寫小型搶占式內(nèi)核嗎?如何用c實現(xiàn)語法分析,詞法分析? 這些來測試一下自己的掌握程度。
2、接下來我們需要用到開發(fā)板了,剛開始學(xué)的時候要先學(xué)裸機(jī)的,linux接觸越早越好,命令越熟越好,vim操作越眼花繚亂越好…,在這一階段你就是需要了解IO、串口通信、中斷等,最好用模擬時序的方式用IO引腳寫個iic和spi的驅(qū)動,在這里不要花費太長的時間,規(guī)定自己一個月完成,這是最好的。
3、然后你可以學(xué)習(xí)一下mcu或處理器了,建議是ARM,因為你用別的架構(gòu)會發(fā)現(xiàn)板子少的可憐,且價格也貴。建議先玩裸機(jī),還是和51一樣,從點燈開始熟悉。請注意:最好不要一上來就鉆到里面把所有的模塊都整一遍,因為那樣好費時間(這里說的不是浪費),不是不可以,但效果我感覺不一定是最好的。學(xué)裸機(jī)編程其實就是學(xué)CPU編程思想,因為你后面肯定不只是用一種CPU,怎么控制引腳,怎么配置寄存器可能每款CPU都不一樣。要學(xué)到的是這種方法,這種原理。還是像上面所說的,先把cpu本身的資源搞懂!!IO、中斷(就單片機(jī)編程來說相當(dāng)重要)、UART、內(nèi)存尋址方式等等。如果可以,學(xué)一下它的匯編。如果匯編你也學(xué)了,好!!請基于這個cpu寫個時間片的調(diào)度器,不用太復(fù)雜,運行個多任務(wù)就可以了。(這里重點不是寫調(diào)度器,而是寫它的時候會涉及到各種棧操作,現(xiàn)場的保護(hù)與恢復(fù),用到大量匯編)然后再根據(jù)外圍的器件做些實驗,這就不說了,你會接觸到一個東西:datasheet,如果英國話不好,它會讓你頭疼。
4、上面這些都掌握好了以后,那就是數(shù)模模數(shù),語音,lcd屏,按鍵,時鐘芯片,等根據(jù)板子的資源放開學(xué),記住一點就是要理論與實踐相結(jié)合的來,不然你會越學(xué)越迷茫的。
這些都是嵌入式linux自學(xué)需要學(xué)習(xí)的知識點,你要好好掌握好上面的這些點,那么你就可以更深層的學(xué)習(xí)了:
1:掌握至少50個以上的常用命令。
2:系統(tǒng)編程
3:就是驅(qū)動的學(xué)習(xí)了,學(xué)習(xí)添加外設(shè),安裝設(shè)備驅(qū)動程序(比如網(wǎng)卡)
4:掌握vi,gcc,gdb等常用編輯器,編譯器,調(diào)試器
5:vim
6:熟悉Linux文件系統(tǒng)和目錄結(jié)構(gòu)
7:理解shell別名、管道、I/O重定向、輸入和輸出以及shell腳本編程
還有很多,都是需要你學(xué)的,這些都是一環(huán)套一環(huán)的,你可以慢慢來,記住學(xué)linux一定不要只看書,一定要多用,多用!多用!熟能生巧。
關(guān)于掌握至少50個以上的常用命令
當(dāng)然是知道的越多越好,用的越熟越好,但別只為了練命令而練命令:搜linux常用命令,得到一堆結(jié)果,對著敲!枯燥!效率低!易忘!我的建議是從使用中學(xué)習(xí),比如你要配samba,你就要安裝samba:yum ,aptget或make install,你會學(xué)到安裝命令及用法,關(guān)防火墻,你要學(xué)到sudo service iptables stop 如果你有心,你肯定不只想知道這句話是關(guān)防火墻,你還想知道每個單詞的意思及用法linux可以做很多東西,你從中可以學(xué)很多東西!主攻書籍:linux內(nèi)核完全剖析、unix環(huán)境高級編程、深入理解linux內(nèi)核、情景分析和源代。
關(guān)于系統(tǒng)編程
不建議直接整APUE,因為如果基礎(chǔ)不好很可能有些地方看不懂, linux系統(tǒng)編程其實就是函數(shù)調(diào)用,就是io 進(jìn)程線程,ipc(進(jìn)程通信),網(wǎng)絡(luò)編程,可能還會有UI?焖倭私釲inux編程是什么東西,快速知道如何寫一個簡單的程序,如文件拷貝程序(想想是不是很多時候你整了一大堆理論,卻還是寫不出程序來,是不是清楚知道函數(shù)的功能,卻不知道怎么調(diào)用,xxx從入門到精通系列正好解決這個問題,它儼然就是帶實例的中文man手冊,講解參數(shù),講返回,然后給個例程…)。可以找一家大書店,去計算機(jī)分類中找到這方面的書,可以在書店里看,也可以買下來?焖俚牧私鈒inux編程是何物。然后再看apue 這類書會很好上手。另外,經(jīng)常試寫下系統(tǒng)命令:ls cd cp 等,經(jīng)?磎an。
關(guān)于驅(qū)動
眾所周知嵌入式開發(fā)包含至少兩個級別,一個是嵌入式內(nèi)核驅(qū)動級別,另外一個是嵌入式應(yīng)用層開發(fā),而薪酬高的、最具價值的無疑是嵌入式內(nèi)核驅(qū)動級別的開發(fā)者。真正的嵌入式高手或者企業(yè)中的核心開發(fā)人員,一定是嵌入式底層的內(nèi)核驅(qū)動開發(fā)工程師,這些工程師成長比較緩慢,造成對內(nèi)核驅(qū)動人才的大量需求,所以這些人才是真正企業(yè)需要的香餑餑。掌握驅(qū)動開發(fā)會讓自己的核心能力有極大的飛躍,真正實現(xiàn)嵌入式最有價值的就業(yè)。
學(xué)驅(qū)動不要只限于驅(qū)動框架,一定要知道它每個功能的實現(xiàn)原理,比如你給驅(qū)動添加了poll功能,不要只知道這樣寫就可以實現(xiàn)poll,以后按這個寫就可以了,你還要知道它的原理!!就是到內(nèi)核里看它是怎樣一步步調(diào)用過來的,中間經(jīng)歷了什么?!
學(xué)驅(qū)動要多看內(nèi)核原碼!了解內(nèi)核子系統(tǒng)!不要說你看不懂,一開始誰也看不懂。必須有塊開發(fā)板(arm9及以上),有條件可參加培訓(xùn)(進(jìn)步快,能認(rèn)識些朋友)。主攻書籍:毛德操的《嵌入式系統(tǒng)》及其他arm9手冊與arm匯編指令等
勤于實踐:
要增加自己Linux 的技能,只有通過實踐來實現(xiàn)了。所以,趕快找一部計算機(jī),趕快安裝一個 Linux 發(fā)行版本,然后進(jìn)入精彩的Linux世界。相信對于你自己的 Linux 能力必然大有斬獲。
其實,一般學(xué)習(xí)嵌入式linux,我建議你可以去培訓(xùn)一下,培訓(xùn)會比自學(xué)又好,因為培訓(xùn)會根據(jù)企業(yè)的需求來教會你,而自學(xué)的話,一般很難去跟隨企業(yè)的需求,不能滿足企業(yè)的需求,這樣的話,自學(xué)完也會很迷茫的,這都是看你個人的想法了。
相關(guān)推薦:嵌入式linux各方面知識圖書都有