如何(he)著手嵌入式linux開發(fa),老鳥來教(jiao)你
時(shi)間:2018-07-11 來源:未知
現在學(xue)嵌(qian)入(ru)(ru)式(shi)(shi)(shi)的(de)人也是(shi)越來越多了,而對(dui)于嵌(qian)入(ru)(ru)式(shi)(shi)(shi)linux開(kai)發的(de)學(xue)習(xi)不是(shi)一蹴(cu)而就(jiu)的(de),需要不斷(duan)的(de)積累,那么我們在學(xue)習(xi)嵌(qian)入(ru)(ru)式(shi)(shi)(shi)linux開(kai)發時(shi),應該從哪些(xie)方面(mian)來著手學(xue)習(xi)呢,我這只老(lao)鳥就(jiu)來獻獻丑了,都是(shi)一些(xie)嵌(qian)入(ru)(ru)式(shi)(shi)(shi)linux開(kai)發最重要的(de),結合(he)學(xue)習(xi)中遇到的(de)一些(xie)問題,讓你更深入(ru)(ru)的(de)認(ren)識(shi)嵌(qian)入(ru)(ru)式(shi)(shi)(shi)linux開(kai)發
很多學習嵌(qian)入(ru)式(shi)(shi)linux的(de)人在學習嵌(qian)入(ru)式(shi)(shi)linux時買大(da)(da)量的(de)linux書(shu)(shu)籍,從圖(tu)書(shu)(shu)館(guan)借(jie)了(le)一(yi)(yi)大(da)(da)堆關(guan)于(yu)linux的(de)書(shu)(shu):什么《linux使用(yong)基礎(chu)教程》、《linux源碼深度分析》、《linux情景分析等(deng)》、 《linux高(gao)級使用(yong)指南》等(deng)等(deng)。結果抱著這(zhe)些(xie)圖(tu)書(shu)(shu)看(kan)了(le)10天半(ban)個(ge)月還是不知所云,當初學習的(de)激情慢(man)慢(man)就(jiu)消退(tui)了(le),最后不了(le)了(le)之,終究(jiu)沒(mei)有進入(ru)嵌(qian)入(ru)式(shi)(shi)開發(fa)大(da)(da)門。究(jiu)其原因,是因為沒(mei)有找到合適學習嵌(qian)入(ru)式(shi)(shi)開發(fa)的(de)方法,做(zuo)任何事情都(dou)有方法可循,找對了(le)學習方法往往就(jiu)能(neng)事半(ban)功(gong)倍;否則就(jiu)可能(neng)是事倍功(gong)半(ban),甚至勞而無功(gong)。接下來(lai)就(jiu)結合對學習嵌(qian)入(ru)式(shi)(shi)linux開發(fa)的(de)幾種(zhong)常(chang)見的(de)學習誤區來(lai)給你們一(yi)(yi)個(ge)好(hao)的(de)學習方法
誤區(qu)一、直(zhi)接閱讀linux內(nei)核源(yuan)代碼(ma)
很多想學(xue)linux,在(zai)連(lian)linux是(shi)什么東(dong)西,一點(dian)都還不會使用的(de)情況(kuang)下去(qu)就(jiu)閱讀(du)linux內核(he)源(yuan)代碼(ma)(ma),花(hua)了(le)(le)大(da)量時間去(qu)閱讀(du)《linux源(yuan)碼(ma)(ma)深度分析》、《linux情景分析等》等書。這樣的(de)結(jie)果(guo)很可能(neng)就(jiu)是(shi)看的(de)頭(tou)昏(hun)眼花(hua),不知所云,最(zui)后(hou)(hou)只能(neng)放棄了(le)(le)。這也是(shi)同學(xue)們學(xue)習嵌入(ru)式(shi)linux的(de)一個誤區,在(zai)有(you)一定(ding)嵌入(ru)式(shi)linux開(kai)發基(ji)礎后(hou)(hou),帶著一定(ding)的(de)目的(de)去(qu)閱讀(du)linux源(yuan)代碼(ma)(ma),這樣可以(yi)極(ji)大(da)的(de)提高你的(de)技(ji)術能(neng)力,但是(shi)你在(zai)沒有(you)任何(he)基(ji)礎,對linux一點(dian)都不了(le)(le)解的(de)情況(kuang)下就(jiu)去(qu)閱讀(du)linux內核(he)源(yuan)代碼(ma)(ma),無(wu)異于以(yi)卵擊石(shi),最(zui)后(hou)(hou)只能(neng)是(shi)撞個頭(tou)破血流(liu)。
誤(wu)區(qu)二、全(quan)身投入學習桌面或服(fu)務器版(ban)本(ben)linux系統
很(hen)多(duo)想(xiang)學(xue)嵌入式(shi)linux 的(de)同學(xue)經常(chang)問我,我不會linux系統,怎么學(xue)習(xi)嵌入式(shi)linux開發(fa),于是(shi)他們就花(hua)費了大量的(de)精力(li)和時間去研究學(xue)習(xi)桌面版本(ben)linux系統的(de)使用,什么redhat 、federo,、ubuntu等等都用過,如何配置linux,linux的(de)各(ge)種(zhong)使用命令都背(bei)的(de)滾瓜爛熟,linux各(ge)種(zhong)服務器的(de)配置,還原(yuan)備份各(ge)種(zhong)操作非常(chang)熟悉,以為這樣就學(xue)會了嵌入式(shi)linux開發(fa)。其實這是(shi)一個學(xue)習(xi)嵌入式(shi)Linux開發(fa)的(de)誤區。

Linux桌(zhuo)面(mian)環(huan)境(jing)(jing)只(zhi)是(shi)嵌(qian)入(ru)(ru)式(shi)(shi)linux的(de)(de)(de)(de)一(yi)個開發(fa)工(gong)(gong)具(ju),開發(fa)環(huan)境(jing)(jing)而已(yi)。我們(men)的(de)(de)(de)(de)目標不(bu)是(shi)學習(xi)linux服務器的(de)(de)(de)(de)配置和(he)使(shi)用,linux服務器的(de)(de)(de)(de)高級配置和(he)使(shi)用那是(shi)另(ling)外一(yi)個領域,不(bu)屬于嵌(qian)入(ru)(ru)式(shi)(shi)linux討論的(de)(de)(de)(de)范(fan)疇。我們(men)進(jin)行嵌(qian)入(ru)(ru)式(shi)(shi)linux開發(fa),只(zhi)是(shi)把linux桌(zhuo)面(mian)環(huan)境(jing)(jing)當(dang)作(zuo)一(yi)個工(gong)(gong)具(ju),在(zai)linux桌(zhuo)面(mian)環(huan)境(jing)(jing)下運行嵌(qian)入(ru)(ru)式(shi)(shi)linux開發(fa)工(gong)(gong)具(ju),例如gcc 編譯(yi)器,make工(gong)(gong)具(ju)來開發(fa)我們(men)的(de)(de)(de)(de)嵌(qian)入(ru)(ru)式(shi)(shi)linux應用程序而已(yi),對于嵌(qian)入(ru)(ru)式(shi)(shi)開發(fa)工(gong)(gong)程師來說,沒(mei)有(you)(you)必要花費(fei)那么多的(de)(de)(de)(de)精力和(he)時間去研究linux桌(zhuo)面(mian)版和(he)服務器的(de)(de)(de)(de)應用,只(zhi)要能(neng)了解最基本的(de)(de)(de)(de)操(cao)作(zuo)即可。現(xian)在(zai)的(de)(de)(de)(de)桌(zhuo)面(mian)linux系統(tong)的(de)(de)(de)(de)圖(tu)形(xing)化界(jie)面(mian)做的(de)(de)(de)(de)也(ye)相(xiang)當(dang)好,跟(gen)window具(ju)有(you)(you)相(xiang)同(tong)的(de)(de)(de)(de)易用性(xing)能(neng),例如ubuntu很多操(cao)作(zuo)都(dou)可以在(zai)圖(tu)形(xing)界(jie)面(mian)下完成,就沒(mei)有(you)(you)必要去記每個linux命令(ling)了。熟悉linux桌(zhuo)面(mian)系統(tong)的(de)(de)(de)(de)使(shi)用和(he)基本操(cao)作(zuo)命令(ling),安排1~2天時間學習(xi)基本就可以掌握(wo)了。
以上分析了同學們學習(xi)嵌入式linux 開(kai)發(fa)的2個誤區,那么如何(he)正確的嵌入式linux開(kai)發(fa)呢?
做(zuo)任何事情都有一(yi)(yi)(yi)個循序漸進(jin)的(de)(de)(de)過(guo)程(cheng),學(xue)習嵌(qian)入(ru)式(shi)(shi)(shi)(shi)linux也一(yi)(yi)(yi)樣。在(zai)(zai)有了(le)一(yi)(yi)(yi)定的(de)(de)(de)嵌(qian)入(ru)式(shi)(shi)(shi)(shi)開(kai)(kai)發(fa)(fa)(fa)(fa)基礎后,學(xue)習嵌(qian)入(ru)式(shi)(shi)(shi)(shi)linux開(kai)(kai)發(fa)(fa)(fa)(fa)比(bi)較適合的(de)(de)(de)切入(ru)點是(shi)從嵌(qian)入(ru)式(shi)(shi)(shi)(shi)linux應(ying)(ying)用程(cheng)序開(kai)(kai)發(fa)(fa)(fa)(fa)開(kai)(kai)始,即暫(zan)時先(xian)不(bu)去關(guan)心嵌(qian)入(ru)式(shi)(shi)(shi)(shi)硬件平(ping)臺,不(bu)去關(guan)心linux的(de)(de)(de)底(di)層驅動,先(xian)把(ba)精力集中在(zai)(zai)現有的(de)(de)(de)嵌(qian)入(ru)式(shi)(shi)(shi)(shi)linux平(ping)臺上進(jin)行(xing)嵌(qian)入(ru)式(shi)(shi)(shi)(shi)linux應(ying)(ying)用程(cheng)序設(she)計(ji)開(kai)(kai)發(fa)(fa)(fa)(fa)。學(xue)習嵌(qian)入(ru)式(shi)(shi)(shi)(shi)linux開(kai)(kai)發(fa)(fa)(fa)(fa)絕不(bu)是(shi)看看書(shu)就(jiu)可(ke)以學(xue)好的(de)(de)(de),需要多實踐,編程(cheng)調試;因為嵌(qian)入(ru)式(shi)(shi)(shi)(shi)開(kai)(kai)發(fa)(fa)(fa)(fa)不(bu)同于(yu)(yu)普通的(de)(de)(de)基于(yu)(yu)PC機或(huo)服(fu)務器的(de)(de)(de)應(ying)(ying)用程(cheng)序開(kai)(kai)發(fa)(fa)(fa)(fa),嵌(qian)入(ru)式(shi)(shi)(shi)(shi)開(kai)(kai)發(fa)(fa)(fa)(fa)的(de)(de)(de)應(ying)(ying)用程(cheng)序是(shi)要燒寫到嵌(qian)入(ru)式(shi)(shi)(shi)(shi)板(ban)卡(ka)或(huo)開(kai)(kai)發(fa)(fa)(fa)(fa)板(ban)上運(yun)行(xing)的(de)(de)(de),所以首(shou)先(xian)你要給自己購(gou)買一(yi)(yi)(yi)塊開(kai)(kai)發(fa)(fa)(fa)(fa)板(ban),現在(zai)(zai)普遍流行(xing)的(de)(de)(de)嵌(qian)入(ru)式(shi)(shi)(shi)(shi)開(kai)(kai)發(fa)(fa)(fa)(fa)板(ban)都是(shi)基于(yu)(yu)三星的(de)(de)(de)ARM9 CPU S3C2440,性價比(bi)極高。
有(you)了(le)開(kai)發(fa)(fa)(fa)板后,先后開(kai)始學(xue)(xue)習嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux開(kai)發(fa)(fa)(fa)環境搭建(jian)、嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux開(kai)發(fa)(fa)(fa)模型、linux內核移(yi)植和文(wen)件(jian)(jian)(jian)系統、嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux應(ying)(ying)用程(cheng)(cheng)(cheng)(cheng)序移(yi)植、嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux多進(jin)(jin)(jin)程(cheng)(cheng)(cheng)(cheng),多線程(cheng)(cheng)(cheng)(cheng)應(ying)(ying)用程(cheng)(cheng)(cheng)(cheng)序設(she)計、嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux網(wang)絡編(bian)程(cheng)(cheng)(cheng)(cheng),如果對嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)數據庫或(huo)圖形軟(ruan)件(jian)(jian)(jian)開(kai)發(fa)(fa)(fa)有(you)興(xing)趣的(de)(de)(de)(de),可以進(jin)(jin)(jin)一(yi)步學(xue)(xue)習嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux數據庫開(kai)發(fa)(fa)(fa)或(huo)基(ji)于QT的(de)(de)(de)(de)嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux圖形應(ying)(ying)用軟(ruan)件(jian)(jian)(jian)設(she)計。每學(xue)(xue)一(yi)章節都要(yao)通過(guo)(guo)相關實(shi)驗(yan)來(lai)來(lai)驗(yan)證你從書上(shang)(shang)學(xue)(xue)到的(de)(de)(de)(de)東西,同(tong)時提高自(zi)(zi)己(ji)(ji)編(bian)寫代碼,調(diao)試程(cheng)(cheng)(cheng)(cheng)序的(de)(de)(de)(de)能(neng)力(li)。這個過(guo)(guo)程(cheng)(cheng)(cheng)(cheng)根(gen)據不同(tong)學(xue)(xue)員(yuan)的(de)(de)(de)(de)基(ji)礎不同(tong),大概要(yao)花上(shang)(shang)1 ~ 2個月時間。學(xue)(xue)完這些課(ke)程(cheng)(cheng)(cheng)(cheng)后,你就(jiu)有(you)了(le)再現(xian)(xian)(xian)有(you)的(de)(de)(de)(de)嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux平(ping)(ping)臺(tai)上(shang)(shang)進(jin)(jin)(jin)行(xing)應(ying)(ying)用程(cheng)(cheng)(cheng)(cheng)式(shi)(shi)(shi)(shi)(shi)設(she)計開(kai)發(fa)(fa)(fa)的(de)(de)(de)(de)能(neng)力(li),到一(yi)些嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)軟(ruan)件(jian)(jian)(jian)公司去,能(neng)夠勝任在(zai)現(xian)(xian)(xian)有(you)的(de)(de)(de)(de)嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux平(ping)(ping)臺(tai)上(shang)(shang)進(jin)(jin)(jin)行(xing)上(shang)(shang)層的(de)(de)(de)(de)應(ying)(ying)用程(cheng)(cheng)(cheng)(cheng)序開(kai)發(fa)(fa)(fa)工作(zuo)。但(dan)是目前你還(huan)不能(neng)進(jin)(jin)(jin)行(xing)嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux系統和驅動(dong)的(de)(de)(de)(de)開(kai)發(fa)(fa)(fa),也就(jiu)是說,你現(xian)(xian)(xian)在(zai)只(zhi)能(neng)在(zai)一(yi)個已(yi)經(jing)構(gou)建(jian)好的(de)(de)(de)(de)嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux平(ping)(ping)臺(tai)上(shang)(shang)進(jin)(jin)(jin)行(xing)應(ying)(ying)用程(cheng)(cheng)(cheng)(cheng)序開(kai)發(fa)(fa)(fa),而自(zi)(zi)己(ji)(ji)還(huan)沒有(you)能(neng)力(li)根(gen)據實(shi)際(ji)需(xu)要(yao)去重新構(gou)建(jian)一(yi)個嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux平(ping)(ping)臺(tai)。要(yao)讓自(zi)(zi)己(ji)(ji)有(you)能(neng)力(li)根(gen)據實(shi)際(ji)需(xu)要(yao)重新構(gou)建(jian)一(yi)個嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux軟(ruan)硬(ying)件(jian)(jian)(jian)平(ping)(ping)臺(tai),這時候(hou)就(jiu)需(xu)要(yao)進(jin)(jin)(jin)行(xing)下一(yi)階段(duan)的(de)(de)(de)(de)學(xue)(xue)習了(le),即(ji)嵌(qian)(qian)(qian)入(ru)(ru)(ru)式(shi)(shi)(shi)(shi)(shi)linux系統和驅動(dong)開(kai)發(fa)(fa)(fa)。
對于嵌入式(shi)linux開發(fa)初(chu)級你是否了解了呢,嵌入式(shi)linux開發(fa)學(xue)習更(geng)多(duo)需要的(de)是你的(de)實踐,而不是你學(xue)學(xue)懂了,就(jiu)不管了,所(suo)以學(xue)習嵌入式(shi)linux開發(fa)需要你多(duo)下功夫,把理論和實踐相結(jie)合,這樣(yang)你才會學(xue)而有所(suo)得。

