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