當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > IT培訓(xùn)問題庫 > 怎么學(xué)習(xí)嵌入式?嵌入式linux學(xué)習(xí)方法及步驟
怎么學(xué)習(xí)嵌入式?嵌入式linux學(xué)習(xí)方法及步驟
時間:2018-05-09 來源:未知
怎么學(xué)習(xí)嵌入式:如果是大學(xué)生,請再學(xué)好以下課程
1、精通c語言、數(shù)據(jù)結(jié)構(gòu) 、計算機(jī)原理(包括匯編的)、編譯原理 、操作系統(tǒng)
先做以上的,別著急!要做好嵌入式工程師請遠(yuǎn)離浮躁!雖科目眾多,不一定全學(xué),可根據(jù)需要選修。主攻書籍:the c programming language、數(shù)據(jù)結(jié)構(gòu)。
如果你嚴(yán)厲的覺得覺得你學(xué)的可以了,請考慮以下問題:不參考任何代碼的情況下,能自己寫鏈表嗎?樹的遍歷呢?圖的最短路徑怎么實(shí)現(xiàn)?能自己寫小型搶占式內(nèi)核嗎?如何用c實(shí)現(xiàn)語法分析,詞法分析?
ps:以上四門課是嵌入式大神必修課!
2、然后就可以搞塊開發(fā)板了,只提一點(diǎn):先搞裸機(jī)(請自動把這句話復(fù)述三遍)。linux接觸越早越好,命令越熟越好,vim操作越眼花繚亂越好…
先搞裸機(jī)可以考慮51系列也未嘗不可,可買個板子,也可以直接用proteus仿真。了解下什么是IO、串口通信、中斷等,最好用模擬時序的方式用IO引腳寫個iic和spi的驅(qū)動。在51上不要花太多時間,新手一個月左右吧,(假如我上面說的基礎(chǔ)你學(xué)的OK的話,視自身學(xué)習(xí)能力而定)。
3、然后你可以學(xué)習(xí)一下mcu或處理器了,建議是ARM,因?yàn)槟阌脛e的架構(gòu)會發(fā)現(xiàn)板子少的可憐,且價格也貴。建議先玩裸機(jī),還是和51一樣,從點(diǎn)燈開始熟悉。請注意:最好不要一上來就鉆到里面把所有的模塊都整一遍,因?yàn)槟菢雍觅M(fèi)時間(這里說的不是浪費(fèi)),不是不可以,但效果我感覺不一定是最好的。學(xué)裸機(jī)編程其實(shí)就是學(xué)CPU編程思想,因?yàn)槟愫竺婵隙ú恢皇怯靡环NCPU,怎么控制引腳,怎么配置寄存器可能每款CPU都不一樣。要學(xué)到的是這種方法,這種原理。還是像上面所說的,先把cpu本身的資源搞懂!!IO、中斷(就單片機(jī)編程來說相當(dāng)重要)、UART、內(nèi)存尋址方式等等。如果可以,學(xué)一下它的匯編。如果匯編你也學(xué)了,好!!請基于這個cpu寫個時間片的調(diào)度器,不用太復(fù)雜,運(yùn)行個多任務(wù)就可以了。(這里重點(diǎn)不是寫調(diào)度器,而是寫它的時候會涉及到各種棧操作,現(xiàn)場的保護(hù)與恢復(fù),用到大量匯編)然后再根據(jù)外圍的器件做些實(shí)驗(yàn),這就不說了,你會接觸到一個東西:datasheet,如果英國話不好,它會讓你頭疼。
4、 然后像什么數(shù)模模數(shù),語音,lcd屏,按鍵,時鐘芯片,等根據(jù)板子的資源放開整吧!!單片機(jī)這塊最后說一句:玩單片機(jī)千萬別不買開發(fā)板!!!!不玩單片機(jī)千萬別買開發(fā)板!!
嵌入式linux方法步驟:
1:命令
2:系統(tǒng)編程
3:驅(qū)動
4:vim
其他還有好多東西:服務(wù)器搭建,內(nèi)核,shell…。想想自己怎樣熟悉windows的?在用win的時候有沒有天天去網(wǎng)上問,如何裝軟件,如何配ip,你肯定問過,有人會說我用win是圖形界面,linux也用圖形界面能學(xué)什么!!首先,圖形界面照樣能做很多事情,just like eclips.另外你要用linux可能不接觸到命令嗎?win下面沒有人會說在cmd下裝軟件,就像linux大部分是yum, aptget, make install一樣。久而久之你就熟了。不管什么系統(tǒng),它都只是一個工具而已,用的時間越長越順手,越熟練。只不過這個工具并不那么簡單。學(xué)linux一定不要只看書,一定要多用,多用!多用!熟能生巧。
關(guān)于命令
當(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,因?yàn)槿绻A(chǔ)不好很可能有些地方看不懂, linux系統(tǒng)編程其實(shí)就是函數(shù)調(diào)用,就是io 進(jìn)程線程,ipc(進(jìn)程通信),網(wǎng)絡(luò)編程,可能還會有UI。快速了解Linux編程是什么東西,快速知道如何寫一個簡單的程序,如文件拷貝程序(想想是不是很多時候你整了一大堆理論,卻還是寫不出程序來,是不是清楚知道函數(shù)的功能,卻不知道怎么調(diào)用,xxx從入門到精通系列正好解決這個問題,它儼然就是帶實(shí)例的中文man手冊,講解參數(shù),講返回,然后給個例程…)�?梢哉乙患掖髸�,去計算機(jī)分類中找到這方面的書,可以在書店里看,也可以買下來�?焖俚牧私鈒inux編程是何物。然后再看apue 這類書會很好上手。另外,經(jīng)常試寫下系統(tǒng)命令:ls cd cp 等,經(jīng)�?磎an。
關(guān)于驅(qū)動
驅(qū)動是個很深奧的東西,學(xué)驅(qū)動不要只限于驅(qū)動框架,一定要知道它每個功能的實(shí)現(xiàn)原理,比如你給驅(qū)動添加了poll功能,不要只知道這樣寫就可以實(shí)現(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匯編指令等
關(guān)于vim
還是那句話,操作的越眼花繚亂越好!請自行Google它的配置放法!這里提幾個常用插件:ctags, cscope, clang, wm, 還有很多!請自行Google!別用百度!! vim是個神器!功能上完全不輸source insight等任何IDE!
最后對于學(xué)習(xí)c,理由是c不只是一種語言,一種工具,它還是一種藝術(shù),一種文化,一種哲學(xué)理念、但不是拿來炫耀得東西。對于linux內(nèi)核,學(xué)習(xí)編程,讀一些優(yōu)秀代碼也是有必要的。

