1. 程式人生 > >ARM與微控制器的區別和選擇?

ARM與微控制器的區別和選擇?

1 軟體方面

這應該是最大的區別了。引入了作業系統。為什麼引入作業系統?有什麼好處?
1、方便。主要體現在後期的開發,即在作業系統上直接開發應用程式。不像微控制器一樣一切都要重新寫。前期的作業系統移植工作,還是要專業人士來做。
2、安全。這是LINUX的一個特點。LINUX的核心與使用者空間的記憶體管理分開,不會因為使用者的單個程式錯誤而引起系統死掉。這在微控制器的軟體開發中沒見到過。
3、高效。引入程序的管理排程系統,使系統執行更加高效。在傳統的微控制器開發中大多是基於中斷的前後臺技術,對多工的管理有侷限性。

2 硬體方面

現在的8位微控制器技術硬體發展的也非常得快,也出現了許多功能非常強大的微控制器。但是與32arm相比還是有些差距吧。


1、arm晶片大多把SDRAM、LCD等控制器整合到片子當中。在8位機,大多要進行外擴。
2、微控制器是個微控制器,arm顯然已經是個微處理器了。
3、引入嵌入式作業系統之後,可以實現許多微控制器系統不能完成的功能。比如:嵌入式web伺服器,java虛擬機器等。也就是說,有很多免費的資源可以利用,上述兩種服務就是例子。如果在微控制器上開發這些功能可以想象其中的難度。

3 初學者如何選擇ARM開發硬體?

1、 如果你有做硬體和微控制器的經驗,建議自己做個最小系統板:假如你從沒有做過ARM的開發,建議你一開始不要貪大求全,把所有的應用都做好,因為ARM的啟動方式和dsp或微控制器有所不同,往往會碰到各種問題,所以建議先佈一個僅有Flash、SRAM或SDRAM、CPU、JTAG、和復位訊號的小系統板,留出擴充套件介面。使最小系統能夠正常執行,你的任務就完成了一半,好在arm的外圍介面基本都是標準介面,假如你已有這些硬體的佈線經驗,這對你來講是一件很輕易的事情。


2、動手寫啟動程式碼,根據硬體地址先寫一個能夠啟動的小程式碼,包括以下部分:

初始化埠,遮蔽中斷,把程式拷貝到SRAM中
完成程式碼的重對映
配置中斷控制代碼,連線到C語言入口。
也許你看到給你的一些示例程式當中,bootloader會有很多東西,但是不要被這些複雜的程式所困擾,因為你不是做開發板的,你的任務就是做段小程式,讓你的應用程式能夠執行下去。

3、假如你是作硬體,每個廠家基本上都有針對該晶片的DEMO板原理圖。先將原理圖消化。這樣你以後做設計時,對資源的分配心中有數。器件的DATSHEET一定要好好消化。

4、 仔細研究你所用的晶片的資料,儘管arm在核心上相容,但每家晶片都有自己的特色,編寫程式時必須考慮這些問題。尤其是女孩子,在這兒千萬別有依靠心理,總想拿別人的示例程式修改,卻越改越亂。


5、多看一些作業系統程式,在arm的應用開放原始碼的程式很多,要想提高自己,就要多看別人的程式,Linux、uCos-II等等這些都是很好的原碼。

6、假如做軟體最好對作業系統的機理要有所瞭解。當然這對軟體工程師來說是小菜一碟。但假如是硬體出身的就有點費勁。

7、最好買一塊現成的ARM板,學嵌入式系統的話,選擇ARM9、Cortex-A8等板子,這樣學習效率會大大提高,也會比自己做板子省成本。