劉陽(yáng) 龍潛 孫永政
當(dāng)前,嵌入式的技術(shù)應(yīng)用越來(lái)越廣發(fā),從航天科技到民用產(chǎn)品,嵌入式產(chǎn)品的身影無(wú)處不在,而這些嵌入式產(chǎn)品的核心——處理器決定了產(chǎn)品的市場(chǎng)和性能。在32位嵌入式處理器市場(chǎng)中,ARM處理器占有很大份額。ARM不僅是一個(gè)公司、一種技術(shù)也是一種經(jīng)營(yíng)理念,即由ARM公司提供核心技術(shù),只出售芯片中的IP授權(quán),采取了別具一格的“Chipless模式”(無(wú)芯片的芯片企業(yè)),不參與生產(chǎn),而是由合作廠商去生產(chǎn)具體的芯片和產(chǎn)品。
現(xiàn)在由于存儲(chǔ)空間等原因,在嵌入式芯片上編程有較大的困難,選取合適的平臺(tái)就顯得很重要。由于Linux是開(kāi)放源碼的操作系統(tǒng),吸引著全世界的程序員參與到發(fā)展和完善的工作中來(lái),所以Linux保持了穩(wěn)定而且卓越的性能。由于源代碼可以修改、移植,Linux在嵌入式領(lǐng)域中的應(yīng)用也越來(lái)越廣。選用Linux作為平臺(tái),可以根據(jù)具體需要自由裁減源碼,打造適合目標(biāo)平臺(tái)的環(huán)境,編寫(xiě)最有效率的應(yīng)用程序。
可以預(yù)見(jiàn),ARM與Linux在未來(lái)已經(jīng)越來(lái)越壯大,在嵌入式產(chǎn)品市場(chǎng)上會(huì)占有越來(lái)越大的份額。在這種形式下,學(xué)習(xí)和研究ARM非常有必要,所以在這里介紹一下關(guān)于基于Linux系統(tǒng)的ARM9嵌入式系統(tǒng)設(shè)計(jì)的基礎(chǔ)理論。
首先進(jìn)行一下ARM開(kāi)發(fā)環(huán)境的簡(jiǎn)介:
根據(jù)功能的不同,ARM應(yīng)用軟件的開(kāi)發(fā)工具可分為編輯軟件、編譯軟件、匯編軟件、鏈接軟件、調(diào)試軟件、嵌入式實(shí)時(shí)操作系統(tǒng)、函數(shù)庫(kù)、評(píng)估板、JTAG仿真器、在線仿真器等。因此,一套含有編輯軟件、編譯軟件、匯編軟件、鏈接軟件、調(diào)試軟件、嵌入式實(shí)時(shí)操作系統(tǒng)及函數(shù)庫(kù)的集成開(kāi)發(fā)環(huán)境一般來(lái)說(shuō)是必不可少的。至于嵌入式實(shí)時(shí)操作系統(tǒng)、評(píng)估板等其他開(kāi)發(fā)工具則可以根據(jù)應(yīng)用軟件規(guī)模和開(kāi)發(fā)計(jì)劃選用。使用集成開(kāi)發(fā)環(huán)境開(kāi)發(fā)基于ARM的應(yīng)用軟件時(shí),其中涉及的編輯、編譯、匯編、鏈接等工作可全部在PC機(jī)上完成,調(diào)試工作則需要配合其他的模塊或產(chǎn)品完成。目前進(jìn)行ARM嵌入式系統(tǒng)開(kāi)發(fā)常見(jiàn)的開(kāi)發(fā)工具主要有Real View MDK、IAR EWARM、ADS1.2、WinARM等。
RealView MDK開(kāi)發(fā)工具是ARM公司目前最新推出的針對(duì)各種嵌入式處理器的軟件開(kāi)發(fā)工具。RealView MDK集成了業(yè)內(nèi)最領(lǐng)先的技術(shù),支持所有基于ARM的設(shè)備,能夠自動(dòng)配置啟動(dòng)代碼,集成了flash燒寫(xiě)模塊,還具有強(qiáng)大的仿真模擬、性能分析等功能。
IAR Embedded Workbench for ARM是IAR System公司為ARM微處理器開(kāi)發(fā)的一個(gè)集成開(kāi)發(fā)環(huán)境。比較其他的ARM開(kāi)發(fā)環(huán)境,IAR EWARM具有入門(mén)容易、使用方便和代碼緊湊等特點(diǎn)。IAR EWARM中包含一個(gè)全軟件的模擬程序,用戶不需要任何硬件支持就可以模擬各種ARM內(nèi)核、外部設(shè)備甚至中斷的軟件運(yùn)行環(huán)境。由于ADS集成開(kāi)發(fā)環(huán)境已經(jīng)不再更新,因此無(wú)法支持新推出的微控制器芯片,而IAR EWARM在持續(xù)的更新環(huán)境中,因此IAR EWARM將成為越來(lái)越多的人進(jìn)行嵌入式系統(tǒng)開(kāi)發(fā)的首選開(kāi)發(fā)環(huán)境。
基于ARM芯片的應(yīng)用系統(tǒng),多數(shù)為復(fù)雜的片上系統(tǒng)。在該復(fù)雜系統(tǒng)中,多數(shù)硬件模塊都是可配置的,配置工作需要由軟件預(yù)先完成。因此在用戶的應(yīng)用程序運(yùn)行之前,需要專門(mén)的一段代碼來(lái)完成系統(tǒng)基本的初始化工作。由于此類(lèi)代碼直接面對(duì)處理器內(nèi)核和硬件控制器進(jìn)行編程,所以一般使用匯編語(yǔ)言實(shí)現(xiàn),這里我們稱之為硬件啟動(dòng)程序。
在應(yīng)用系統(tǒng)的程序設(shè)計(jì)中,如果所有的編程工作都由匯編語(yǔ)言來(lái)完成,其工作量巨大,并且不容易移植。由于ARM處理器的運(yùn)算速度高,存儲(chǔ)器的存取速度和存儲(chǔ)量也很高,因此大部分編程工作可以使用c語(yǔ)言來(lái)實(shí)現(xiàn)。由此可見(jiàn),c語(yǔ)言在ARM編程中具有非常重要的地位。
其次介紹一下ARM9嵌入式系統(tǒng)開(kāi)發(fā)的過(guò)程:
第一,嵌入式軟件開(kāi)發(fā)的特點(diǎn)。學(xué)習(xí)嵌入式開(kāi)發(fā)的過(guò)程,首先要了解嵌入式開(kāi)發(fā)的特點(diǎn)。嵌入式系統(tǒng)與通用計(jì)算機(jī)在以下幾個(gè)方面的差別比較明顯:
一是人機(jī)交互界面,這是最大的區(qū)別,因?yàn)榍度胧较到y(tǒng)很可能就不存在鍵盤(pán),顯示器等在計(jì)算機(jī)中常見(jiàn)的實(shí)現(xiàn)人機(jī)交互的設(shè)備,它所完成的事情也只能是不同的傳感器的變化情況,并且按照事先規(guī)定好的過(guò)程儀式完成相應(yīng)的處理任務(wù);二是功能是有限的,嵌入式系統(tǒng)只能反復(fù)執(zhí)行設(shè)計(jì)時(shí)已經(jīng)定制好的并且在開(kāi)發(fā)完成后不再變化的功能任務(wù);三是時(shí)間的關(guān)鍵性和穩(wěn)定性,大部分的嵌入式系統(tǒng)因?yàn)楣δ芤髮?shí)時(shí)響應(yīng)并且受到工作環(huán)境的影響很大,需要選擇合理的硬件和保護(hù)措施,保證系統(tǒng)的穩(wěn)定性可以正常運(yùn)行。
除此之外,還要了解嵌入式軟件開(kāi)發(fā)具有的自身特點(diǎn):
一是需要交叉的開(kāi)發(fā)環(huán)境;二是引入設(shè)計(jì)方法;三是固化的程序;四是開(kāi)發(fā)的難度很大。
第二,嵌入式軟件開(kāi)發(fā)的流程。嵌入式軟件的開(kāi)發(fā)因?yàn)樗拈_(kāi)發(fā)難度大等自身特點(diǎn),需要將硬件、軟件、人力資源等集中起來(lái),并進(jìn)行適當(dāng)?shù)慕M合以實(shí)現(xiàn)目標(biāo)應(yīng)用對(duì)功能和性能的要求,而且實(shí)時(shí)性和功能一樣重要。這就使嵌入式開(kāi)發(fā)關(guān)注的方面更廣,精準(zhǔn)度更高。嵌入式軟件開(kāi)發(fā)的每個(gè)階段都體現(xiàn)著嵌入式開(kāi)發(fā)的特點(diǎn)。
一是需求分析階段;二是設(shè)計(jì)階段;三是生成代碼階段;四是固化階段。
第三,嵌入式系統(tǒng)的調(diào)試。在進(jìn)行嵌入式軟件開(kāi)發(fā)過(guò)程中,可以選擇不同的調(diào)試方式,但應(yīng)根據(jù)實(shí)際的開(kāi)發(fā)需求和實(shí)際的條件進(jìn)行選擇,有以下幾種主要的調(diào)試方式。
一是源程序模擬器方式;二是監(jiān)控器方式;三是仿真器方式。
嵌入式系統(tǒng)的調(diào)試方法被分成不同的層次,就調(diào)試方法而言,分為硬件調(diào)試和軟件調(diào)試兩種。在使用硬件調(diào)試的時(shí)候,可以獲得比軟件調(diào)試功能更強(qiáng)大的調(diào)試性能,但是有的時(shí)候會(huì)價(jià)格昂貴,需要合適的開(kāi)發(fā)工具。軟件調(diào)試可以分為操作系統(tǒng)的內(nèi)核調(diào)試和應(yīng)用程序的調(diào)試,前者的操作比較困難,因?yàn)椴僮飨到y(tǒng)內(nèi)核不方便增加一個(gè)調(diào)試器程序,而后者相對(duì)比較簡(jiǎn)單。
在這里我們只是對(duì)ARM9嵌入式系統(tǒng)做一個(gè)基礎(chǔ)理論的講解。嵌入式技術(shù)正在飛速發(fā)展,并期待著各種行業(yè)的深入滲透。我國(guó)具有雄厚的制造業(yè)基礎(chǔ),與傳統(tǒng)的制造業(yè)結(jié)合,嵌入式系統(tǒng)有著巨大的市場(chǎng)空間。同時(shí),基于嵌入式的應(yīng)用可技術(shù)創(chuàng)新,將推動(dòng)新產(chǎn)品、新產(chǎn)業(yè)的誕生。在新的高科技浪潮來(lái)臨之際,我國(guó)正全力迎接機(jī)遇和挑戰(zhàn),嵌入式領(lǐng)域方興未艾,Linux也越來(lái)越成熟,我們需要掌握更新的知識(shí),實(shí)現(xiàn)自我價(jià)值,為祖國(guó)貢獻(xiàn)力量!
參考文獻(xiàn):
[1] 馬忠梅,馬廣云,徐穎慧,等. ARM嵌入式處理器結(jié)構(gòu)與應(yīng)用基礎(chǔ)(2版)[M].北京:北京航空航天大學(xué)出版社,2007.
[2] 馬忠梅,李善平,等. ARM&Linux嵌入式系統(tǒng)教程(3版)[M].北京:北京航空航天大學(xué)出版社,2014.
作者簡(jiǎn)介:劉陽(yáng)(1993—),男,遼寧盤(pán)錦人,沈陽(yáng)理工大學(xué)學(xué)生。
龍潛(1995—),男,江蘇連云港人,沈陽(yáng)理工大學(xué)學(xué)生。
孫永政(1994—),男,遼寧大連人,沈陽(yáng)理工大學(xué)學(xué)生。