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