本文主要介紹嵌入式開(kāi)發(fā)板技術(shù)的學(xué)習(xí)步驟。 嵌入式技術(shù)的知識(shí)面非常廣,學(xué)起來(lái)往往不知道如何下手,那么嵌入式技術(shù)應(yīng)該從哪里開(kāi)始學(xué)起,以及按照什么樣的步驟學(xué)習(xí),順利入門(mén),成為一個(gè)合格的嵌入式工程師。 最初最基本的東西呢就是要搞清楚幾個(gè)概念,要搞清楚什么是bootloadre引導(dǎo)程序,什么是Linux操作系統(tǒng)內(nèi)核Kernel,什么是文件系統(tǒng)。如果搞不明白,直接去學(xué)其他的內(nèi)容,學(xué)起來(lái)就比較迷糊,實(shí)際上是在走彎路。 接下來(lái)大多數(shù)工作都是圍繞這幾個(gè)文件展開(kāi)的,比如編譯環(huán)境的搭建, 源代碼的編譯和燒寫(xiě), 應(yīng)用程序和驅(qū)動(dòng)程序的編程等等,就是說(shuō)這幾個(gè)文件是貫穿我們整個(gè)嵌入式學(xué)習(xí)的始終的。把這幾個(gè)文件搞明白了,后面的學(xué)習(xí)也就有了目標(biāo),所以說(shuō)搞明白這幾個(gè)文件的含義非常重要。 接下來(lái)需要我們做的是搭建編譯環(huán)境,迅為公司為了讓大家少走彎路,已經(jīng)把安裝步驟做了很大程度的簡(jiǎn)化,比如已經(jīng)做好了虛擬機(jī)的ubuntu鏡像,直接拷貝進(jìn)去就可以使用了。 開(kāi)發(fā)環(huán)境搭建起來(lái)以后,這個(gè)時(shí)候可以學(xué)習(xí)一下對(duì)源碼進(jìn)行編譯,同時(shí)也可以學(xué)習(xí)一下燒寫(xiě),一步步按照教程去做就可以了。 系統(tǒng)的編譯和燒寫(xiě)都是依賴(lài)于這個(gè)開(kāi)發(fā)環(huán)境的,也就是必須在虛擬機(jī)上安裝好ubuntu,并且把源代碼從光盤(pán)中拷貝到ubuntu的環(huán)境下面,只要按照教程的提示往下做就可以了。 在熟練掌握系統(tǒng)的編譯和燒寫(xiě)以后,就可以進(jìn)一步開(kāi)始嵌入式開(kāi)發(fā)了,那么這個(gè)時(shí)候建議先學(xué)習(xí)一下Linux應(yīng)用程序的設(shè)計(jì),也就是按照教程開(kāi)始逐步深入。 這個(gè)時(shí)候要按照網(wǎng)盤(pán)里的‘iTOP-4412開(kāi)發(fā)板視頻教程及其相關(guān)’里的‘嵌入式linux視頻’。 大家在初學(xué)的時(shí)候,還是要按照這個(gè)實(shí)驗(yàn)的順序來(lái)走一遍,這里強(qiáng)調(diào)兩個(gè)方面,來(lái)幫助大家理解: 一、第一個(gè)實(shí)驗(yàn)也就是第0個(gè),是制作linux的最小系統(tǒng),那么什么是最小系統(tǒng)呢,就是Linux運(yùn)行的時(shí)候能跑的起來(lái)的最小系統(tǒng),也就是說(shuō)我們?cè)谖募到y(tǒng)當(dāng)中把圖形系統(tǒng)的內(nèi)容從這個(gè)文件系統(tǒng)里面砍掉了;在很多設(shè)備里面,比如說(shuō)路由器,或者一些通訊類(lèi)或者控制類(lèi)的產(chǎn)品中是不需要圖形界面的,這樣我們就可以做一個(gè)簡(jiǎn)化的Linux文件系統(tǒng),這時(shí)候最小系統(tǒng)的設(shè)計(jì)就排上用場(chǎng)了。 二、這些實(shí)驗(yàn)都是通過(guò)燒寫(xiě)文件系統(tǒng)的方式來(lái)測(cè)試的,其實(shí)有一種比較簡(jiǎn)單和實(shí)用的方法,那就是通過(guò)網(wǎng)絡(luò)文件系統(tǒng)來(lái)進(jìn)行(NFS),至于什么是NFS,以及如何搭建,大家一定要學(xué)習(xí)一下,具體可以參考第12個(gè)試驗(yàn),就是‘實(shí)驗(yàn)12’,因?yàn)閷?lái)我們調(diào)試應(yīng)用程序或者驅(qū)動(dòng)都是要通過(guò)這個(gè)手段來(lái)進(jìn)行的,它是公認(rèn)的比較好用的調(diào)試辦法。也就是說(shuō)我們這些實(shí)驗(yàn)回過(guò)頭來(lái),都是可以通過(guò)NFS來(lái)進(jìn)行調(diào)試的,這時(shí)候就不用每次燒寫(xiě),整個(gè)調(diào)試工作變得更容易,在實(shí)際的Linux調(diào)試中,多數(shù)是通過(guò)這種方式來(lái)進(jìn)行的。 所以說(shuō)大家一定要學(xué)會(huì)NFS的調(diào)試方法。 學(xué)完Linux的應(yīng)用程序設(shè)計(jì),接著應(yīng)該學(xué)習(xí)一下Linux驅(qū)動(dòng)方面的編程了。Linux驅(qū)動(dòng)程序全部掌握是非常困難的,但是要明確我們的目標(biāo)是能利用Linux這個(gè)操作系統(tǒng)來(lái)開(kāi)發(fā)產(chǎn)品。大家都知道,Linux的驅(qū)動(dòng)分為網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)、塊設(shè)備驅(qū)動(dòng)以及字符類(lèi)設(shè)備驅(qū)動(dòng),如前面所述,我們只需要把字符類(lèi)設(shè)備的驅(qū)動(dòng)掌握好就可以了。 因?yàn)樵陂_(kāi)發(fā)產(chǎn)品的時(shí)候,網(wǎng)絡(luò)設(shè)備以及塊設(shè)備驅(qū)動(dòng)在開(kāi)發(fā)套件里都是做好的,直接用就可以了,幾乎沒(méi)有人從頭去做,就算開(kāi)發(fā)不同的網(wǎng)絡(luò)接口驅(qū)動(dòng),也是直接把現(xiàn)成寫(xiě)好的驅(qū)動(dòng)拿來(lái)直接調(diào)試一下。所以說(shuō)塊設(shè)備和網(wǎng)絡(luò)設(shè)備不需要我們?nèi)ヌ嚓P(guān)注,但是對(duì)于字符類(lèi)設(shè)備驅(qū)動(dòng)就需要我們仔細(xì)研究并且完全掌握了,那么最基本的字符類(lèi)驅(qū)動(dòng)就是針對(duì)GPIO的驅(qū)動(dòng)設(shè)計(jì),這個(gè)是一定要掌握的。比如我們的產(chǎn)品增加一個(gè)步進(jìn)電機(jī),驅(qū)動(dòng)幾個(gè)開(kāi)關(guān)、繼電器、采集電流電壓模擬量、擴(kuò)展并對(duì)外部RAM內(nèi)存數(shù)據(jù)的讀取等等,都是基本的字符類(lèi)的驅(qū)動(dòng),至于RFID、GPS模塊、GPRS模塊、CAN總線等等實(shí)際都是利用Linux本身已經(jīng)做好的驅(qū)動(dòng),歸根到底是使用串口、I2C以及SPI等來(lái)實(shí)現(xiàn)的,很多開(kāi)發(fā)并不需要我們做什么。對(duì)于網(wǎng)絡(luò)設(shè)備,只需要在上層做個(gè)應(yīng)用程序,用SOCKET來(lái)實(shí)現(xiàn)數(shù)據(jù)通訊就可以了。 那么在學(xué)習(xí)這部分內(nèi)容之前呢,建議大家讀一下另一個(gè)聊天記錄:‘Linux驅(qū)動(dòng)初探_精英版QQ群聊天記錄.doc’,這個(gè)文檔會(huì)對(duì)大家理解驅(qū)動(dòng)的架構(gòu)很有好處。 那么我們前面說(shuō)到了,應(yīng)用程序的調(diào)試要通過(guò)NFS來(lái)進(jìn)行,驅(qū)動(dòng)也是這樣的,而且要學(xué)會(huì)用模塊的方法來(lái)調(diào)試驅(qū)動(dòng)。 我們?cè)?a href="http://www.qingdxww.cn/keyword/Android" target="_blank" class="relatedlink">Android的視頻中比較詳細(xì)的介紹了Linux的底層如何構(gòu)建LED的驅(qū)動(dòng)程序。除此之外呢,我們會(huì)在補(bǔ)充文檔里面跟大家說(shuō)明如何使用模塊,也就是module的方法來(lái)調(diào)試驅(qū)動(dòng)程序。掌握這些方法是很重要的。也就是說(shuō)大家一定要掌握通過(guò)module的方法動(dòng)態(tài)加載和卸載驅(qū)動(dòng)來(lái)調(diào)試驅(qū)動(dòng)程序。 當(dāng)大家熟練學(xué)會(huì)了以上強(qiáng)調(diào)的Linux系統(tǒng)的開(kāi)發(fā)技術(shù),我想大家對(duì)Linux的體系有了基本的了解,這個(gè)時(shí)候其實(shí)已經(jīng)算是入門(mén)了,也就是說(shuō)可以嘗試去做一些產(chǎn)品,并不是說(shuō)我們對(duì)Linux的源碼分析一遍才能真正做事情,不是那樣的,我們的目標(biāo)是做產(chǎn)品,學(xué)會(huì)利用Linux這個(gè)操作系統(tǒng),開(kāi)發(fā)出目標(biāo)產(chǎn)品! |