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