當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > IT培訓(xùn)問(wèn)題庫(kù) > 還在找嵌入式學(xué)習(xí)方法嗎?那你為什么不看看這個(gè)
嵌入式學(xué)習(xí)方法
現(xiàn)代社會(huì)中隨著人工智能,智能機(jī)家居,以及物聯(lián)網(wǎng)這些高科的快速崛起也悄悄地帶動(dòng)了嵌入式軟件開(kāi)發(fā)的發(fā)展腳步,學(xué)習(xí)的朋友數(shù)量呢也是越來(lái)越多,找到一個(gè)好的學(xué)習(xí)方法成為了這一部分朋友急需的東西。今天呢作為一個(gè)一瓶子不滿半瓶子晃蕩的嵌入式軟件開(kāi)發(fā)工程師來(lái)給大家分析一下嵌入式學(xué)習(xí)方法到底應(yīng)該遵循一個(gè)什么樣的路線,大家看看我說(shuō)的有沒(méi)有那么一點(diǎn)道理。
首先我們要先從底層做起學(xué)習(xí)的是基本的裸機(jī)編程
對(duì)于學(xué)硬件的人而言,必須先對(duì)硬件的基本使用方法有感性的認(rèn)識(shí),更必須深刻認(rèn)識(shí)該硬件的控制方式,如果一開(kāi)始就學(xué)linux系統(tǒng)、學(xué)移植那么只會(huì)馬上就陷入一個(gè)很深的漩渦。剛剛開(kāi)始學(xué)ARM的時(shí)候選擇ARM9,從底層的硬件控制著手,因?yàn)闊o(wú)論做多復(fù)雜的系統(tǒng)終都會(huì)落實(shí)到底層的硬件控制,因此對(duì)這些硬件的控制有了感性的認(rèn)識(shí)就會(huì)好很多
第二,下面我們就要使用linux系統(tǒng)進(jìn)行一些基本的實(shí)驗(yàn)
在買(mǎi)一套板子的時(shí)候一般會(huì)提供一些linux的試驗(yàn)例程,好好做一段時(shí)間這個(gè)吧,這個(gè)過(guò)程也是很有意義的,也是為進(jìn)一步的學(xué)習(xí)積累感性認(rèn)識(shí),你能想象一個(gè)從沒(méi)有使用過(guò)linux系統(tǒng)的人能學(xué)好linux的編程嗎?好好按照手冊(cè)上的例程做一做里面的實(shí)驗(yàn),雖然有點(diǎn)娃娃學(xué)走路,有點(diǎn)弱智,但是很多高手都會(huì)經(jīng)歷這個(gè)過(guò)程。
第三,研究完整的linux系統(tǒng)的的運(yùn)行過(guò)程
所謂完整的linux系統(tǒng)包括哪些部分呢?
主要分為三部分:bootloader、linuxkernel(linux內(nèi)核)、rootfile(根文件系統(tǒng))。
那么這3部分是怎么相互協(xié)作來(lái)構(gòu)成這個(gè)系統(tǒng)的呢?各自有什么用呢?三者有什么聯(lián)系?怎么聯(lián)系?系統(tǒng)的執(zhí)行流程又是怎么樣的呢?搞清楚這個(gè)問(wèn)題你對(duì)整個(gè)系統(tǒng)的運(yùn)行就很清楚了,對(duì)于下一步制作這個(gè)linux系統(tǒng)就打下了另一個(gè)重要的根基。
第四,開(kāi)始做系統(tǒng)移植
上面說(shuō)到完整的linux有3部分,而且你也知道了他們之間的關(guān)系和作用,那么現(xiàn)在你要做的便是自己動(dòng)手學(xué)會(huì)制作這些東西。
當(dāng)然不可能叫你編寫(xiě)這些代碼,這不實(shí)現(xiàn)。事實(shí)上這個(gè)3者都能在網(wǎng)下載到相應(yīng)的源代碼,但是這個(gè)源代碼不可能下載編譯后就能在你的系統(tǒng)上運(yùn)行,需要很多的修改,直到他能運(yùn)行在你的板子上,這個(gè)修改的過(guò)程就叫移植。在進(jìn)行移植的過(guò)程中你要學(xué)的東西很多,要懂的相關(guān)知識(shí)也很多,等你完成了這個(gè)過(guò)程你會(huì)發(fā)現(xiàn)你已經(jīng)算是一個(gè)初出茅廬的高手了。
第五,研究linux驅(qū)動(dòng)程序的編寫(xiě)
移植系統(tǒng)并不是終的目的,終的目的是開(kāi)發(fā)產(chǎn)品,做項(xiàng)目,這些都要進(jìn)行驅(qū)動(dòng)程序的開(kāi)發(fā)。
Linux的驅(qū)動(dòng)程序可以說(shuō)是五花八門(mén),linux2.4和linux2.6的編寫(xiě)有相當(dāng)大的區(qū)別,就是同為linux2.6但是不同版本間的驅(qū)動(dòng)程序也有區(qū)別,因此編寫(xiě)linux的驅(qū)動(dòng)程序變都不是那么容易的事情,對(duì)于新版本的驅(qū)動(dòng)程序的編寫(xiě)甚至還沒(méi)有足夠的參考資料。那么我的建議就是使用、移植一個(gè)不算很新的版本內(nèi)核,這樣到時(shí)學(xué)驅(qū)動(dòng)的編程就有足夠的資料了。
第六,研究應(yīng)用程序的編寫(xiě)
做作品做項(xiàng)目除了編寫(xiě)驅(qū)動(dòng)程序,后還要編寫(xiě)應(yīng)用程序。現(xiàn)在的趨勢(shì)是圖形應(yīng)用程序的開(kāi)發(fā),而圖形應(yīng)用程序中用得多的還是qt/e函數(shù)庫(kù)。建議使用國(guó)產(chǎn)的MiniGUI函數(shù)庫(kù)。MiniGUI的編程比較相似Windows下的VC編程,比較容易上手,效果應(yīng)該說(shuō)是相當(dāng)不錯(cuò)的。不過(guò)MiniGUI大的不好就是沒(méi)有像qtopia這樣的圖形操作平臺(tái),這大大限制了他的推廣,完成這一步你基本就學(xué)完了嵌入式linux的全部?jī)?nèi)容了。
暫時(shí)就寫(xiě)這么多,關(guān)于嵌入式系統(tǒng)學(xué)習(xí)方法,還可以做更深入的探討,新手掌握以上內(nèi)容大概就不再是新手了。