當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > IT培訓(xùn)問題庫 > arm嵌入式系統(tǒng)開發(fā)如何學(xué),一只老鳥的經(jīng)驗(yàn)之談
嵌入式系統(tǒng)在我們身邊我們隨處可見,我們用的手機(jī)啊,mp3等消費(fèi)品,還有一些飛機(jī),地鐵等航空航天設(shè)備,你無時(shí)不刻的都在接觸著嵌入式系統(tǒng)設(shè)備,可見嵌入式系統(tǒng)發(fā)展是如此的好,伴隨著發(fā)展的優(yōu)勢,許多人開始著手學(xué)習(xí)嵌入式,那么在嵌入式系統(tǒng)學(xué)習(xí)中,會(huì)接觸到ARM嵌入式系統(tǒng)開發(fā),在這里,我這只老鳥就來談?wù)剬?duì)于ARM嵌入式系統(tǒng)開發(fā)學(xué)習(xí)方法,都是在學(xué)習(xí)工作中總結(jié)的。
首先學(xué)習(xí)arm嵌入式系統(tǒng)開發(fā),那就要先要做一個(gè)最小系統(tǒng)板
在這里做最小系統(tǒng)板,你要是剛開始學(xué),就要從基礎(chǔ)的開始,建議先布一個(gè)僅有Flash,SRAM或SDRAM、CPU、JTAG、和復(fù)位信號(hào)的小系統(tǒng)板,留出擴(kuò)展接口。使最小系統(tǒng)能夠正常運(yùn)行,你的任務(wù)就完成了一半,好在ARM的外圍接口基本都是標(biāo)準(zhǔn)接口,如果你已有這些硬件的布線經(jīng)驗(yàn),這對(duì)你來講是一件很容易的事情。
接下來就是程序代碼了,你需要寫一個(gè)啟動(dòng)代碼,根據(jù)硬件地址先寫一個(gè)能夠啟動(dòng)的小代碼,包括以下部分:
初始化端口,屏蔽中斷,把程序拷貝到SRAM中;完成代碼的重映射;配置中斷句柄,連接到C語言入口。也許你看到給你的一些示例程序當(dāng)中,bootloader會(huì)有很多東西,但是不要被這些復(fù)雜的程序所困擾,因?yàn)槟悴皇亲鲩_發(fā)板的,你的任務(wù)就是做段小程序,讓你的應(yīng)用程序能夠運(yùn)行下去
多看一些操作系統(tǒng)程序,在ARM嵌入式開發(fā)的應(yīng)用開放源代碼的程序很多,要想提高自己,就要多看別人的程序,linux,uc/os-II等等這些都是很好的原碼。
對(duì)你所用的芯片要研究透徹,盡管ARM在內(nèi)核上兼容,但每家芯片都有自己的特色,編寫程序時(shí)必須考慮這些問題。尤其是女孩子,在這兒千萬別有依賴心理,總想拿別人的示例程序修改,卻越改越亂。
在這里要注意如果你是作硬件,每個(gè)廠家基本上都有針對(duì)該芯片的DEMO板原理圖。先將原理圖消化。這樣你以后做設(shè)計(jì)時(shí),對(duì)資源的分配心中有數(shù)。器件的DATSHEET一定要好好消化。
你如果是要做軟件最好對(duì)操作系統(tǒng)的機(jī)理要有所了解。當(dāng)然這對(duì)軟件工程師來說是小菜一碟。但如果是硬件出身的想做ARM嵌入式開發(fā)的人就有點(diǎn)費(fèi)勁。
在這里你需要知道一個(gè)問題:有很多人再問做最小系統(tǒng)板是2層還是4層好呢?在這里告訴你:只有AT91可以用兩層板,其他的最少4層;44b0的地和電源處理好也可用兩層板;
選用四層板不僅是電源和地的問題,高速數(shù)字電路對(duì)走線的阻抗有要求,二層板不好控制阻抗。33歐電阻一般加在驅(qū)動(dòng)器端,也是起阻抗匹配作用的;布線時(shí)要先布數(shù)據(jù)地址線,和需要保證的高速線;
在高頻的時(shí)候,PCB板上的走線都要看成傳輸線。傳輸線有其特征阻抗,學(xué)過傳輸線理論的都知道,當(dāng)傳輸線上某處出現(xiàn)阻抗突變(不匹配)時(shí),信號(hào)通過就會(huì)發(fā)生反射,反射對(duì)原信號(hào)造成干擾,嚴(yán)重時(shí)就會(huì)影響電路的正常工作。采用四層板時(shí),通常外層走信號(hào)線,中間兩層分別為電源和地平面,這樣一方面隔離了兩個(gè)信號(hào)層,更重要的是外層的走線與它們所靠近的平面形成稱為“微帶”(microstrip) 的傳輸線,它的阻抗比較固定,而且可以計(jì)算。對(duì)于兩層板就比較難以做到這樣。這種傳輸線阻抗主要于走線的寬度、到參考平面的距離、敷銅的厚度以及介電材料的特性有關(guān),有許多現(xiàn)成的公式和程序可供計(jì)算。
還有一點(diǎn)就是arm嵌入式系統(tǒng)開發(fā)的“裸機(jī)”編程
(1)首先打好C語言基礎(chǔ),推薦看《C程序設(shè)計(jì)語言》,因?yàn)樗械?ldquo;裸機(jī)”編程都是基于C語言開發(fā)的,并且后邊我們接觸到的嵌入式linux分時(shí)系統(tǒng)也是完全用C語言實(shí)現(xiàn)的,學(xué)好C語言不僅利于當(dāng)前的單片機(jī)編程,也為后來學(xué)習(xí)嵌入式linux打下基礎(chǔ);
(2)一般的,單片機(jī)編程默認(rèn)的是從51開始學(xué)起,我這里推薦直接從STM學(xué)起,利用ST封裝的庫函數(shù)編程,你會(huì)開始慢慢理解封裝和分層的概念了。這里推薦選擇意法半導(dǎo)體家的STM8系列單片機(jī),該系列單片機(jī)功耗低,性價(jià)比高,片上資源豐富。前期學(xué)習(xí)時(shí),根據(jù)芯片手冊(cè),對(duì)片上的外設(shè)進(jìn)行編程練習(xí),了解每一種外設(shè)的工作原理;在此之后,開始了解芯片的工作模式,即一般的用戶模式,中斷模式,管理模式等。
(3)熟悉編譯器的使用,針對(duì)arm內(nèi)核的處理器,一般的選擇arm公司支持的keilMDK編譯器,重點(diǎn)學(xué)習(xí)該軟件的仿真功能。
(4)學(xué)習(xí)基礎(chǔ)的arm匯編語言,閱讀Start.S啟動(dòng)文件,明白單片機(jī)的工作原理,以及代碼是如何在單片機(jī)硬件內(nèi)部執(zhí)行的。
這些都是arm嵌入式系統(tǒng)開發(fā)需要注意的和學(xué)習(xí)的步驟,我總結(jié)的這些都是學(xué)習(xí)工作中需要的,也是我在學(xué)習(xí)中的一些方法,對(duì)你學(xué)習(xí)arm嵌入式系統(tǒng)開發(fā)還是百利而無一害的,掌握這些方法步驟,那你對(duì)arm嵌入式系統(tǒng)開發(fā)已經(jīng)是入門階段了,在這里還需要注意一點(diǎn)就是要理論和實(shí)踐要相結(jié)合,這樣才更有效果。