ARM小記
ARM何物
ARM(AdvancedRISCMachines,進(jìn)階精簡(jiǎn)指令集機器),如果你一直把這個(gè)單詞讀成“A”-“R”-“M”,那么將有一個(gè)好消息和一個(gè)壞消息要告訴你。好消息是:你這是初次接觸到ARM技術(shù)相關(guān)的文章,而本文內容正是專(zhuān)為你量身打造的,無(wú)論你是嵌入式系統的門(mén)外漢還是單片機技術(shù)的初學(xué)者,都可以通過(guò)本文輕松地了解ARM技術(shù)。請相信我,這并不困難!壞消息是:我很抱歉的告訴你,它的正確讀法應該是“arm”,是手臂、胳膊的英文發(fā)音。很出丑是不是?但除非你是在大聲朗讀,不然沒(méi)人會(huì )知道的。你又多了一個(gè)知識和一個(gè)不可告人的秘密。調整一下心態(tài),我們的故事就從這里開(kāi)始吧!
1990年,有一家高科技公司在美麗的英國安了家,公司是由一群先知先覺(jué)的工程師組成的,他們致力于一種新的CPU體系結構的設計。他們想讓這款CPU的性能更為出色,有精簡(jiǎn)的指令集(可以理解成給CPU發(fā)出命令的咒語(yǔ),當然是越簡(jiǎn)單越好了)和較低的功耗(適合在需要高速度運算又采用電池充電的設備當中使用)。當時(shí)傳統的電腦CPU發(fā)熱量大,需要使用風(fēng)扇散熱,這確實(shí)很不方便,至少我不希望我的智能手機看上去像電吹風(fēng)。所以,他們夜以繼日的開(kāi)發(fā),努力實(shí)現這個(gè)偉大構想。終于,他們成功了!大家興高采烈地為這款新的處理器結構取了一個(gè)響亮的名字——AdvancedRISCMachines,簡(jiǎn)稱(chēng)ARM。有趣的是這家公司的名字也是AdvancedRISCMachinesLtd.,簡(jiǎn)稱(chēng)ARM,不得不說(shuō)他們當初成立公司時(shí)的偉大目標現在實(shí)現了,可是這個(gè)巧合里面有什么精彩秘密呢?其實(shí)早在我出生的前一年——1983年,一家名為Acorn的電腦公司就已經(jīng)開(kāi)始著(zhù)手開(kāi)發(fā)精簡(jiǎn)指令集的32位微處理器。在我1歲的時(shí)候——1985年,該公司已經(jīng)研發(fā)出了ARM1處理器,一年之后又推出了ARM2處理器并批量生產(chǎn),之后不久又推出了ARM3處理器。這個(gè)時(shí)候已經(jīng)大名鼎鼎的蘋(píng)果公司看到了商機,于是想和Acorn公司合作開(kāi)發(fā)。后來(lái)雙方研究決定另外開(kāi)設一家新公司,專(zhuān)門(mén)設計、研發(fā)精簡(jiǎn)指令集處理器。于是才有了前面提到的ARM公司的成立。ARM公司成立之后所研發(fā)的是ARM6型處理器結構,推出之后就被自己的兩個(gè)東家(蘋(píng)果和Acorn公司)應用在其新款的產(chǎn)品上?,F在好了,我們的ARM處理器結構誕了。一開(kāi)始ARM公司的處理器自產(chǎn)、自用,可是隨后吸引了一大批世界級的芯片生產(chǎn)廠(chǎng)商(也可能是ARM公司邀請他們過(guò)來(lái)的,誰(shuí)知道呢)。這些大廠(chǎng)商們正在為處理器市場(chǎng)的弊端而發(fā)愁,所以很快雙方建立了合作,即ARM公司自己不生產(chǎn)芯片,而是出售其ARM處理器結構的設計方案,各大芯片生產(chǎn)廠(chǎng)商根據設計方案來(lái)生產(chǎn)ARM結構的處理器芯片。這是一樁一本萬(wàn)利的生意,各大廠(chǎng)商每生產(chǎn)一片ARM體系結構的處理器,就要向ARM公司支付一筆知識產(chǎn)權費用。僅是出售一套現有的內核方案就需要至少20萬(wàn)美元,如果還需要特殊修改服務(wù)則更是需要上千萬(wàn)美元。ARM公司也在不斷的升級、完善自己的產(chǎn)品以占據更多的市場(chǎng)份額。目前的32位微處理器市場(chǎng)上,ARM體系結構的產(chǎn)品已經(jīng)占到7成以上,而且還在增長(cháng)。ARM公司身體力行,用實(shí)踐證明了“知識就是財富”這句話(huà)的真實(shí)性。當然,這還要是在嚴格保護知識產(chǎn)權、嚴厲打擊盜版的國家和地區才行。
話(huà)分兩頭,單表買(mǎi)家。ARM處理器結構被各大芯片廠(chǎng)商采用,制作出高性能、低功耗的理器,然后推向市場(chǎng)(通常我們叫它“ARM處理器”,還有叫“ARM單片機的”)。這些廠(chǎng)家里包括三星電子(SAMSUNG)、飛思卡爾(Freescale,摩托羅拉旗下公司)、思睿邏輯(CirrusLogic)、愛(ài)特梅爾(ATMEL)、恩智浦(NXP,飛利浦旗下公司)、國際商業(yè)機器公司(IBM)、德州儀器(TI)、富士通(FUJITSU)和任天堂等,相信這些公司不是腦門(mén)發(fā)熱的家伙,它們選擇ARM一定有更長(cháng)遠的考慮。
處理器行業(yè)方興未艾,每天都會(huì )有新的技術(shù)和方案來(lái)滿(mǎn)足我們的需求。在低端市場(chǎng)有51單片機等8位處理器來(lái)滿(mǎn)足我們制作流水燈、電子鐘之類(lèi)的作品,更可以作為控制類(lèi)產(chǎn)品的開(kāi)發(fā)。它們結構簡(jiǎn)單、價(jià)格便宜、易學(xué)易用,是目前電子愛(ài)好者熱衷的玩藝兒。在高端市場(chǎng),由x86結構的32位或64位的處理器來(lái)構成我們PC機的核心部分。它們性能極高、速度飛快,一邊看電影一邊聊QQ都不在話(huà)下。
而一些需要電池供電的手持設備上,如智能手機、高級游戲機、數碼相機、掌上電腦等消費類(lèi)電子產(chǎn)品卻需要一款中端類(lèi)型的處理器。ARM不是唯一的選擇,但卻是最好的選擇。蘋(píng)果的iPod、諾基亞N93、索愛(ài)K系列手機、戴爾的PDA電腦、任天堂的掌上游戲機、多普達的智能手機、還有國內的一些山寨版電子產(chǎn)品上無(wú)不用到ARM的處理器。同時(shí)在世界范圍內的嵌入式行業(yè)也刮起了一股ARM的流行風(fēng),ARM的學(xué)習教程、開(kāi)發(fā)實(shí)驗板、開(kāi)發(fā)工具、仿真軟件日新月異、層出不窮。許多8051單片機的研發(fā)公司也開(kāi)始向ARM轉型,而原本學(xué)習8051單片機的技術(shù)人員和愛(ài)好者也開(kāi)始追趕流行,開(kāi)始學(xué)習ARM技術(shù)。我個(gè)人認為這種“追趕時(shí)尚”多少存在一些非理性和麻木的因素。單片機行業(yè)真的要從8位轉向32位嗎?ARM全面取代8051是未來(lái)市場(chǎng)的趨勢嗎?作為單片機初學(xué)者的你應該怎么辦,是緊跟時(shí)代脈動(dòng),還是專(zhuān)心一門(mén)技術(shù)?以我個(gè)人拙見(jiàn),根本沒(méi)有選擇的必要,下文中再與你細聊。
ARM最好的選擇,但不是唯一的選擇,與之競爭的對手也非等閑之輩。最有名的當屬英特爾公司出品的XScale處理器(芯片是在2003年前后推出的,2006年英特爾退出嵌入式領(lǐng)域,將XScale處理器部門(mén)賣(mài)給了Marvell公司),XScale系列處理器從早期英特爾生產(chǎn)的PXA255、XA270到現在Marvell公司生產(chǎn)的PXA300、PXA310、PXA320,從性能上看都相當優(yōu)秀。XScale處理器曾被應用在掌上電腦和智能手機上(如MOTOE680)。有趣的是,XScale處理器也是在A(yíng)RMV5TE核心的基礎上改進(jìn)而成的。另外還有飛思卡爾公司的ColdFire(冷火)處理器架構、AIM聯(lián)盟(蘋(píng)果、IBM、摩托羅拉的聯(lián)盟)所研發(fā)的PowerPC微處理器架構,以及MIPS技術(shù)公司的MIPS32和MIPS64處理器架構。另外還有像AVR32等新型處理器不斷推出,這些都是32位嵌入式微處理器,這里就不一一介紹了。表1列出了ARM處理器的系列和應用。請注意表中“應用”這一列,也許你會(huì )發(fā)現一些熟知的電子產(chǎn)品。之前你在使用它們的時(shí)候并沒(méi)有去想它們的處理器是什么,因為這個(gè)問(wèn)題顯得相當神秘,現在你知道了,原來(lái)那些看似復雜的產(chǎn)品都有一顆ARM“心”。
最近看到一條新聞,基于A(yíng)RM處理器的上網(wǎng)本(見(jiàn)圖2)將在2010年6月份推出。但因為微軟公司的Windows操作系統不支持ARM處理器,所以ARM處理器的上網(wǎng)本將會(huì )使用Linux等操作系統。這條新聞預示著(zhù)ARM開(kāi)始進(jìn)軍上網(wǎng)本市場(chǎng),以其特有的實(shí)力將筆記本電腦變得更輕巧,未來(lái)的智能產(chǎn)品將會(huì )超出現在的想象。ARM還可以創(chuàng )造多少奇跡?讓我們拭目以待吧。
學(xué)習指南
許多朋友想學(xué)習ARM,可是又不知道該從何入手。想聽(tīng)聽(tīng)我的傳奇經(jīng)歷嗎?那是大學(xué)三年級離畢業(yè)之前,我在哈爾濱的電子市場(chǎng)看到了一款LPC2200處理器(飛利浦公司的ARM處理器產(chǎn)品)的開(kāi)發(fā)板(見(jiàn)圖3),這是飛利浦旗下的一款ARM處理器,帶一個(gè)真彩液晶屏,開(kāi)機時(shí)很炫酷,隨板又贈送一本ARM基礎教程。當時(shí)很開(kāi)心,在還沒(méi)把8051學(xué)出什么名堂的時(shí)候,就開(kāi)始想轉戰ARM技術(shù)。當時(shí)這款產(chǎn)品要價(jià)2000元,我反復掙扎了很久,最后還是壓不住沖動(dòng)的性子,把它買(mǎi)了下來(lái)。當時(shí)向債主爸爸許諾,一定在短期之內把ARM學(xué)好。我還真是下了狠心,在各位同學(xué)紛紛準備畢業(yè)設計論文的時(shí)候,我正抱著(zhù)一本ARM基礎教程的書(shū)反復研究。當時(shí)還沒(méi)有什么好的ARM技術(shù)論壇,21IC論壇上水太深,也不敢隨便冒泡。就這樣,短暫又美好的大學(xué)時(shí)光過(guò)去了,那時(shí)我已經(jīng)自認為對ARM技術(shù)有了一定的了解。
書(shū)中主要講述ARM7TDMI的系統結構及原理,枯燥且難理解。如果是現在,我都懶得翻這種書(shū),可當時(shí)卻是朝圣般地研讀。當時(shí)感覺(jué)ARM是一個(gè)結構非常復雜的微處理器,它是32位處理器,是一個(gè)超級單片機,要了解ARM的內核結構,精簡(jiǎn)指令集的使用,還要學(xué)習匯編語(yǔ)言,最后就是學(xué)習一個(gè)叫μC/OS-II的操作系統??偠灾獙W(xué)的內容比8051復雜,設計制作也就更難?;叵肫饋?lái),對當時(shí)學(xué)過(guò)的內容已沒(méi)有什么印象了。
轉機出現在南下求職中。畢業(yè)之后許多同學(xué)留在了哈爾濱,而我卻選擇只身一人南下深圳,因為那里的電子行業(yè)發(fā)達,如果可以找到一家好公司可以學(xué)到很多經(jīng)驗。和我一樣想法的人應該很多,可是最后的遭遇也各不相同,我還是比較幸運的,找到一家很不錯的嵌入式系統研發(fā)公司,老板對我也很好。我在那里從測試員做起,然后做到技術(shù)支持工程師,最后是產(chǎn)品經(jīng)理。一路下來(lái)經(jīng)歷了許多有趣的事情,也從一個(gè)產(chǎn)品應用的角度重新認識了ARM。我覺(jué)得后來(lái)在工作經(jīng)驗中學(xué)到的ARM更成熟、更鮮活。
實(shí)踐中的ARM和書(shū)中的ARM完全不同。我要學(xué)習的內容從內核結構變成了操作系統,ARM的最大特點(diǎn)就是可以安裝嵌入式操作系統,包括在A(yíng)RM7上安裝μC/OS-II,在A(yíng)RM9上安裝的WindowsCE、VxWorks和Linux。安裝了操作系統的ARM其實(shí)是更簡(jiǎn)單。以應用較廣泛的WindowsCE來(lái)說(shuō),我們要開(kāi)發(fā)的USB接口、以太網(wǎng)之類(lèi)的功能早就已經(jīng)模塊化了,可以直接加載使用。我們需要做的只是在用EVC編譯器制作一個(gè)主程序和用戶(hù)界面。
所以ARM已經(jīng)將強大的操作系統和底層硬件分隔開(kāi)來(lái),學(xué)習ARM其實(shí)是在學(xué)習操作系統。這就好像我們今天學(xué)習PC機的使用,其實(shí)主要是在學(xué)習Windows操作系統的使用一樣。學(xué)習ARM時(shí)如果從電腦軟件一端入手便會(huì )很容易,如果從單片機一端的硬件結構開(kāi)始,那么學(xué)習會(huì )困難一些——主要是思維方式不同,學(xué)習的難度就有不同。但并不是說(shuō)不可以這樣學(xué)習,把ARM處理器當成沒(méi)有操作系統的超級單片機使用也是很好的選擇。市場(chǎng)上許多介紹ARM入門(mén)的書(shū)多是電子行業(yè)的資深人士,他們熟悉8051,當ARM出現時(shí)習慣上將ARM處理器當作高級版的單片機來(lái)看待,自然也就習慣性地從硬件入手教學(xué)。另一方面,現在已經(jīng)非常成熟的電腦軟件開(kāi)發(fā)的專(zhuān)家,多是用VC來(lái)編寫(xiě)電腦軟件,如果讓他們使用EVC(嵌入式VC)來(lái)開(kāi)發(fā)嵌入式系統自然不在話(huà)下,可惜他們并沒(méi)有及時(shí)地進(jìn)入這個(gè)領(lǐng)域。所以由電腦軟件專(zhuān)家編寫(xiě)的嵌入式系統開(kāi)發(fā)教程更是鳳毛麟角。嵌入式系統要想快速發(fā)展,就需要由懂得單片機開(kāi)發(fā)的硬件工程師和通曉電腦軟件開(kāi)發(fā)的專(zhuān)家通力配合才能實(shí)現。目前業(yè)內也都意識到了這一點(diǎn),嵌入式系統的未來(lái)值得期待。
作為個(gè)人來(lái)講,無(wú)論你是單片機愛(ài)好者,還是電子技術(shù)應用專(zhuān)業(yè)的在校大學(xué)生,在掌握8051應用之后都應該盡量學(xué)習一下ARM方面的知識。我個(gè)人推薦你學(xué)習三星電子公司出品的S3C2410或S3C2440處理器。它們是ARM9核心的,可以安裝WindowsCE和Linux操作系統。市場(chǎng)上的學(xué)習板價(jià)格也便宜,圖書(shū)和資料也相當豐富。相信你會(huì )愛(ài)上圖型界面的開(kāi)發(fā)的,那確實(shí)是很讓一個(gè)電子愛(ài)好者著(zhù)迷的事情?,F在行業(yè)內嵌入式系統的開(kāi)發(fā)人才短缺,學(xué)好ARM也會(huì )對找工作大有好處。
小結
文章寫(xiě)到這里,也許有的朋友已經(jīng)開(kāi)始計劃學(xué)習ARM了。我的文章煽動(dòng)性確實(shí)很強,可是面對自己的未來(lái)計劃應該更理性、更冷靜的思考。首先ARM對于單純的電子愛(ài)好者而言并沒(méi)有單片機那么好玩。因為ARM處理器的價(jià)格較高,周邊的元器件也并不便宜。雖然用ARM可以開(kāi)發(fā)一些智能化更高的產(chǎn)品(例如帶有彩色顯示屏的設備、以太網(wǎng)接口的設備等),但是做一個(gè)硬件制作下來(lái)需要幾百到幾千元,作為電子愛(ài)好者的DIY娛樂(lè ),確實(shí)是太奢侈了。所以多數學(xué)習ARM的人都是為了找到福利更好的工作,或者承接一些基于A(yíng)RM的項目開(kāi)發(fā)。如果你不是出于這兩種目的,對于A(yíng)RM只了解就可以了。還有,ARM軟、硬件開(kāi)發(fā)的復雜程度要比8位單片機高,如果8位單片機還沒(méi)有熟悉開(kāi)發(fā)的時(shí)候就轉到ARM的學(xué)習,其實(shí)是不理智的行為。玩轉ARM處理器除了過(guò)硬的單片機功底,還需要軟件開(kāi)發(fā)的能力,ARM開(kāi)發(fā)中有80%的工作都是在軟件層面上,如果你學(xué)過(guò)電腦軟件的開(kāi)發(fā)(如VB、VC開(kāi)發(fā)),也接觸過(guò)操作系統(如Windows、Linux),再學(xué)習ARM就會(huì )事半功倍了。雖然操作系統會(huì )讓開(kāi)發(fā)變得更方便快速,可是花時(shí)間研究操作系統也是必須的。最后結束一句吧:ARM很流行,也要量力而行。
評論