怎么學習(xi)嵌(qian)入式(shi)?嵌(qian)入式(shi)linux學習(xi)方法及步驟
時間:2018-05-09 來源:未知
怎么學習嵌(qian)入式(shi):如(ru)果(guo)是大學生,請再學好以(yi)下課(ke)程
1、精(jing)通(tong)c語(yu)言、數據結構 、計(ji)算機(ji)原(yuan)理(li)(包括匯編的)、編譯原(yuan)理(li) 、操作系統
先做以上(shang)的,別著急!要(yao)做好嵌入式工(gong)程(cheng)師請遠離浮(fu)躁!雖科目眾多,不一定全學,可根據需要(yao)選修。主(zhu)攻書籍:the c programming language、數據結構。
如(ru)果你(ni)嚴厲的(de)覺得覺得你(ni)學的(de)可以了,請考慮以下問題(ti):不參考任何代碼的(de)情況下,能自(zi)己(ji)(ji)寫(xie)鏈表嗎?樹的(de)遍歷呢?圖(tu)的(de)最短路徑(jing)怎(zen)么實現?能自(zi)己(ji)(ji)寫(xie)小(xiao)型(xing)搶占式內(nei)核嗎?如(ru)何用(yong)c實現語(yu)法分析,詞(ci)法分析?
ps:以上四門課是(shi)嵌入式大(da)神必修課!
2、然(ran)后就(jiu)可(ke)以搞塊開發板了,只(zhi)提一點:先搞裸機(請自動把這句話復述(shu)三遍)。linux接觸越(yue)早越(yue)好,命令越(yue)熟越(yue)好,vim操作越(yue)眼花繚亂越(yue)好…
先(xian)搞裸機可(ke)(ke)以考慮51系列(lie)也未嘗(chang)不可(ke)(ke),可(ke)(ke)買個板(ban)子,也可(ke)(ke)以直接用proteus仿真。了(le)解(jie)下(xia)什么(me)是IO、串口通信、中斷等(deng),最好(hao)用模擬時序的(de)方式(shi)用IO引腳寫個iic和(he)spi的(de)驅動。在51上不要(yao)花太多時間,新手一(yi)個月(yue)左右吧,(假如我上面說的(de)基(ji)礎你學的(de)OK的(de)話(hua),視(shi)自身學習能力而定)。
3、然后(hou)你(ni)(ni)可以(yi)(yi)學習一(yi)(yi)下mcu或處(chu)理(li)器了,建(jian)議(yi)是(shi)ARM,因(yin)為你(ni)(ni)用(yong)別的(de)(de)(de)架(jia)構會發現(xian)板子少的(de)(de)(de)可憐,且價格(ge)也貴。建(jian)議(yi)先玩裸(luo)機,還是(shi)和(he)51一(yi)(yi)樣(yang),從(cong)點(dian)(dian)燈開(kai)始熟悉(xi)。請注意(yi):最好(hao)(hao)不要一(yi)(yi)上來就鉆到(dao)里(li)面把所有的(de)(de)(de)模(mo)塊都整一(yi)(yi)遍(bian),因(yin)為那(nei)樣(yang)好(hao)(hao)費時(shi)間(jian)(這(zhe)里(li)說的(de)(de)(de)不是(shi)浪費),不是(shi)不可以(yi)(yi),但效(xiao)果我感覺不一(yi)(yi)定是(shi)最好(hao)(hao)的(de)(de)(de)。學裸(luo)機編(bian)(bian)程(cheng)其實(shi)就是(shi)學CPU編(bian)(bian)程(cheng)思想,因(yin)為你(ni)(ni)后(hou)面肯定不只是(shi)用(yong)一(yi)(yi)種(zhong)CPU,怎么控制引腳,怎么配置寄(ji)存器可能每(mei)款(kuan)CPU都不一(yi)(yi)樣(yang)。要學到(dao)的(de)(de)(de)是(shi)這(zhe)種(zhong)方法,這(zhe)種(zhong)原理(li)。還是(shi)像上面所說的(de)(de)(de),先把cpu本身的(de)(de)(de)資源搞懂(dong)!!IO、中斷(duan)(就單片機編(bian)(bian)程(cheng)來說相當重(zhong)要)、UART、內存尋址方式等等。如果可以(yi)(yi),學一(yi)(yi)下它的(de)(de)(de)匯(hui)編(bian)(bian)。如果匯(hui)編(bian)(bian)你(ni)(ni)也學了,好(hao)(hao)!!請基于這(zhe)個cpu寫(xie)個時(shi)間(jian)片的(de)(de)(de)調度器,不用(yong)太復(fu)雜,運行個多任(ren)務就可以(yi)(yi)了。(這(zhe)里(li)重(zhong)點(dian)(dian)不是(shi)寫(xie)調度器,而是(shi)寫(xie)它的(de)(de)(de)時(shi)候會涉及(ji)到(dao)各種(zhong)棧操作,現(xian)場(chang)的(de)(de)(de)保護與恢復(fu),用(yong)到(dao)大量匯(hui)編(bian)(bian))然后(hou)再根據外圍的(de)(de)(de)器件做(zuo)些實(shi)驗(yan),這(zhe)就不說了,你(ni)(ni)會接觸到(dao)一(yi)(yi)個東西:datasheet,如果英(ying)國話(hua)不好(hao)(hao),它會讓你(ni)(ni)頭(tou)疼。
4、 然后(hou)像什么數(shu)模模數(shu),語(yu)音,lcd屏,按鍵(jian),時鐘芯(xin)片,等根據板子的資(zi)源放開(kai)整吧!!單(dan)(dan)片機這(zhe)塊最后(hou)說(shuo)一句(ju):玩(wan)單(dan)(dan)片機千(qian)萬別(bie)不買(mai)開(kai)發板!!!!不玩(wan)單(dan)(dan)片機千(qian)萬別(bie)買(mai)開(kai)發板!!
嵌(qian)入式linux方(fang)法步驟:
1:命令
2:系統編程
3:驅動
4:vim
其(qi)他還有(you)(you)好多(duo)東(dong)西:服(fu)務器搭(da)建,內(nei)核,shell…。想想自(zi)己(ji)怎樣熟(shu)悉windows的(de)(de)?在(zai)用(yong)(yong)win的(de)(de)時候有(you)(you)沒有(you)(you)天天去網上問(wen),如(ru)何裝軟件,如(ru)何配ip,你(ni)肯定(ding)問(wen)過(guo),有(you)(you)人會說我用(yong)(yong)win是圖(tu)形(xing)界面,linux也用(yong)(yong)圖(tu)形(xing)界面能學什么(me)!!首先,圖(tu)形(xing)界面照樣能做很多(duo)事情(qing),just like eclips.另外(wai)你(ni)要(yao)用(yong)(yong)linux可能不接觸到(dao)命令嗎(ma)?win下面沒有(you)(you)人會說在(zai)cmd下裝軟件,就(jiu)像(xiang)linux大部分是yum, aptget, make install一樣。久而(er)久之你(ni)就(jiu)熟(shu)了。不管什么(me)系統,它都只是一個(ge)(ge)工具(ju)而(er)已,用(yong)(yong)的(de)(de)時間越(yue)長越(yue)順手,越(yue)熟(shu)練。只不過(guo)這個(ge)(ge)工具(ju)并不那么(me)簡(jian)單(dan)。學linux一定(ding)不要(yao)只看(kan)書,一定(ding)要(yao)多(duo)用(yong)(yong),多(duo)用(yong)(yong)!多(duo)用(yong)(yong)!熟(shu)能生巧。
關于命令
當(dang)然(ran)是(shi)知道的越多越好,用(yong)的越熟越好,但別(bie)只為了練命(ming)令(ling)而練命(ming)令(ling):搜(sou)linux常用(yong)命(ming)令(ling),得到一堆結果,對(dui)著敲!枯燥!效率(lv)低!易忘!我的建議是(shi)從使用(yong)中學習,比如(ru)你(ni)(ni)(ni)要(yao)配samba,你(ni)(ni)(ni)就要(yao)安(an)(an)裝samba:yum ,aptget或make install,你(ni)(ni)(ni)會(hui)學到安(an)(an)裝命(ming)令(ling)及用(yong)法,關(guan)防(fang)火墻,你(ni)(ni)(ni)要(yao)學到sudo service iptables stop 如(ru)果你(ni)(ni)(ni)有(you)心,你(ni)(ni)(ni)肯定不只想知道這句話是(shi)關(guan)防(fang)火墻,你(ni)(ni)(ni)還想知道每(mei)個單詞的意思及用(yong)法linux可以做很(hen)(hen)多東西,你(ni)(ni)(ni)從中可以學很(hen)(hen)多東西!主攻書(shu)籍(ji):linux內核完全剖析(xi)、unix環境高級(ji)編程、深入理解linux內核、情景分析(xi)和源代。
關于系統編程
不(bu)建議(yi)直接(jie)整APUE,因為如果基礎不(bu)好很可(ke)能(neng)有些地(di)方(fang)看不(bu)懂, linux系統(tong)編程(cheng)(cheng)(cheng)其實就(jiu)是(shi)(shi)函數調用(yong),就(jiu)是(shi)(shi)io 進(jin)程(cheng)(cheng)(cheng)線程(cheng)(cheng)(cheng),ipc(進(jin)程(cheng)(cheng)(cheng)通信),網絡編程(cheng)(cheng)(cheng),可(ke)能(neng)還(huan)會有UI。快(kuai)速(su)了(le)解(jie)(jie)(jie)Linux編程(cheng)(cheng)(cheng)是(shi)(shi)什么東西,快(kuai)速(su)知(zhi)道(dao)如何寫一個簡單的程(cheng)(cheng)(cheng)序,如文件拷貝程(cheng)(cheng)(cheng)序(想(xiang)想(xiang)是(shi)(shi)不(bu)是(shi)(shi)很多(duo)時候你(ni)整了(le)一大(da)堆理論,卻還(huan)是(shi)(shi)寫不(bu)出(chu)程(cheng)(cheng)(cheng)序來(lai),是(shi)(shi)不(bu)是(shi)(shi)清楚知(zhi)道(dao)函數的功能(neng),卻不(bu)知(zhi)道(dao)怎(zen)么調用(yong),xxx從入門(men)到精通系列正好解(jie)(jie)(jie)決這(zhe)個問題,它儼然就(jiu)是(shi)(shi)帶實例(li)的中(zhong)文man手冊,講解(jie)(jie)(jie)參數,講返(fan)回,然后給個例(li)程(cheng)(cheng)(cheng)…)。可(ke)以找一家大(da)書(shu)店,去計算機(ji)分類中(zhong)找到這(zhe)方(fang)面的書(shu),可(ke)以在(zai)書(shu)店里看,也可(ke)以買(mai)下(xia)來(lai)。快(kuai)速(su)的了(le)解(jie)(jie)(jie)linux編程(cheng)(cheng)(cheng)是(shi)(shi)何物。然后再看apue 這(zhe)類書(shu)會很好上手。另外(wai),經常試寫下(xia)系統(tong)命令:ls cd cp 等,經常看man。
關于驅動
驅(qu)動(dong)(dong)是個很深奧(ao)的東西,學驅(qu)動(dong)(dong)不要只限于驅(qu)動(dong)(dong)框架,一(yi)定要知道(dao)(dao)它每個功(gong)(gong)能(neng)的實現原理,比如你(ni)(ni)給驅(qu)動(dong)(dong)添加了poll功(gong)(gong)能(neng),不要只知道(dao)(dao)這樣寫就(jiu)可(ke)以實現poll,以后(hou)按這個寫就(jiu)可(ke)以了,你(ni)(ni)還要知道(dao)(dao)它的原理!!就(jiu)是到內核(he)里看它是怎樣一(yi)步步調用過來(lai)的,中(zhong)間經歷了什么(me)?!
學驅動(dong)要多(duo)看內(nei)核原(yuan)碼!了解內(nei)核子(zi)系統!不要說你看不懂,一開始誰也看不懂。必須有塊開發板(arm9及(ji)以上),有條件可(ke)參加培訓(進步(bu)快,能認識些朋友(you))。主攻書籍:毛德(de)操的(de)《嵌入(ru)式系統》及(ji)其他(ta)arm9手冊與arm匯編指令等
關于vim
還(huan)是那(nei)句話(hua),操(cao)作的越眼花繚亂越好!請(qing)自行(xing)Google它的配置(zhi)放法!這里提幾個常用插件:ctags, cscope, clang, wm, 還(huan)有很多!請(qing)自行(xing)Google!別用百(bai)度!! vim是個神器!功(gong)能上完全不輸source insight等任何IDE!
最后對于學習(xi)c,理由是(shi)(shi)c不(bu)只是(shi)(shi)一種語言,一種工具(ju),它還是(shi)(shi)一種藝(yi)術,一種文(wen)化,一種哲學理念、但不(bu)是(shi)(shi)拿來(lai)炫耀得東西(xi)。對于linux內核(he),學習(xi)編程,讀一些優秀代碼也是(shi)(shi)有(you)必要的。

