《ARM原理與C程序設(shè)計(jì)》課件第一章_第1頁
《ARM原理與C程序設(shè)計(jì)》課件第一章_第2頁
《ARM原理與C程序設(shè)計(jì)》課件第一章_第3頁
《ARM原理與C程序設(shè)計(jì)》課件第一章_第4頁
《ARM原理與C程序設(shè)計(jì)》課件第一章_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第一章ARM概述與開發(fā)環(huán)境1.1嵌入式系統(tǒng)的概念1.2ARM發(fā)展歷程及應(yīng)用領(lǐng)域1.3ARM芯片級(jí)開發(fā)環(huán)境本章小結(jié)

1.1嵌入式系統(tǒng)的概念

數(shù)字技術(shù)和軟件技術(shù)是嵌入式系統(tǒng)的核心技術(shù),其中,數(shù)字技術(shù)包括數(shù)字信號(hào)處理技術(shù)和數(shù)字化芯片技術(shù),軟件技術(shù)包括芯片級(jí)的程序設(shè)計(jì)技術(shù)和操作系統(tǒng)級(jí)的程序設(shè)計(jì)技術(shù)。電路系統(tǒng)由傳統(tǒng)的模擬電子系統(tǒng)演化為以可編程數(shù)字化芯片為核心,添加必要的外設(shè)接口實(shí)現(xiàn)相應(yīng)功能的嵌入式系統(tǒng),在三個(gè)相互關(guān)聯(lián)又相對(duì)獨(dú)立的技術(shù)領(lǐng)域表現(xiàn)突出,即以單片機(jī)為核心的嵌入式控制領(lǐng)域、以DSP(數(shù)字信號(hào)處理器)或FPGA(現(xiàn)場可編程門陣列)為核心的嵌入式數(shù)字信號(hào)處理領(lǐng)域和以ARM或SOC(片內(nèi)系統(tǒng)芯片)為核心的嵌入式操作系統(tǒng)及其應(yīng)用領(lǐng)域。1.1.1嵌入式系統(tǒng)與ARM的關(guān)系

廣義上講,凡是嵌入到應(yīng)用系統(tǒng)中的電子系統(tǒng)可以統(tǒng)稱為嵌入式系統(tǒng),即使通用的計(jì)算機(jī)系統(tǒng),如果是嵌入在特定的應(yīng)用系統(tǒng)中時(shí),也可被稱為嵌入式系統(tǒng)。例如,在虛擬儀表系統(tǒng)中用于數(shù)據(jù)采集、分析和顯示的嵌入式計(jì)算機(jī)系統(tǒng)。狹義上講,嵌入式系統(tǒng)除具有硬件和軟件之外,還要求硬件系統(tǒng)具有體積小、重量輕、功耗低、成本低、可靠性高、可升級(jí)等特點(diǎn),要求軟件系統(tǒng)具有體積小、可裁剪性、健壯性、專用性、實(shí)時(shí)性等特點(diǎn)。因此,從狹義上講,嵌入式系統(tǒng)硬件往往是以ARM芯片為核心的硬件平臺(tái),嵌入式系統(tǒng)軟件為基于芯片級(jí)開發(fā)的無操作系統(tǒng)匯編或C語言實(shí)時(shí)性軟件,或者是基于嵌入式操作系統(tǒng)開發(fā)的圖形界面應(yīng)用程序。而ARM是指ARM公司設(shè)計(jì)的基于RISC架構(gòu)的32位高性能微處理器,一般采用哈佛總線結(jié)構(gòu),具有高速指令緩存和數(shù)據(jù)緩存,指令長度固定且多級(jí)流水執(zhí)行,具有MMU(存儲(chǔ)器管理單元)和AMBA(高級(jí)微處理器總線結(jié)構(gòu))總線接口等。ARM芯片除具有ARM核心外,通常還具有豐富的外設(shè)接口,例如,外擴(kuò)RAM(隨機(jī)訪問存儲(chǔ)器)和FLASH控制器、LCD控制器、串行接口、SD接口、USB接口、I2C和I2S總線接口等,此外,ARM芯片還具有低功耗、體積小等特性。ARM芯片的高性能、多接口特點(diǎn)決定了其比單片機(jī)和DSP更適合作為嵌入式系統(tǒng)的核心微處理器,從而,ARM系統(tǒng)幾乎成了嵌入式系統(tǒng)的代名詞。1.1.2嵌入式系統(tǒng)與嵌入式操作系統(tǒng)的關(guān)系

一般地,嵌入式系統(tǒng)是面向特定的應(yīng)用和環(huán)境,集成了硬件和軟件的單板機(jī)。嵌入式系統(tǒng)的硬件資源有限,突出地表現(xiàn)在其具有較小容量的RAM和ROM空間,通過外擴(kuò)SD卡等存儲(chǔ)介質(zhì)擴(kuò)展存儲(chǔ)空間;嵌入式系統(tǒng)的軟件,包括嵌入式操作系統(tǒng)軟件,都固化在FLASH芯片中。因此,嵌入式操作系統(tǒng)軟件體積較小,一般在32?MB以下。嵌入式系統(tǒng)的軟件分為兩種:其一為直接基于ARM芯片開發(fā)的匯編或C語言實(shí)時(shí)性程序,這時(shí)的程序代碼負(fù)責(zé)管理ARM片上所有的資源,包括存儲(chǔ)空間和片上外設(shè),程序除根據(jù)需要設(shè)計(jì)特定的功能之外,還要編寫ARM芯片初始化代碼和中斷向量表,更重要的是,程序在訪問嵌入式系統(tǒng)的硬件時(shí),必須充分考慮硬件接口的時(shí)序特點(diǎn);其二是為嵌入式系統(tǒng)定制多任務(wù)、實(shí)時(shí)的嵌入式操作系統(tǒng),嵌入式操作系統(tǒng)抽象了嵌入式系統(tǒng)的硬件訪問方式,通過提供API(應(yīng)用程序接口)函數(shù)的方式,在嵌入式操作系統(tǒng)基礎(chǔ)上設(shè)計(jì)用戶應(yīng)用程序,只需調(diào)用相應(yīng)的API函數(shù)即可,使得嵌入式系統(tǒng)的應(yīng)用程序設(shè)計(jì)工作更加簡單方便。嵌入式操作系統(tǒng)也具有桌面操作系統(tǒng)的特點(diǎn),即管理硬件資源、調(diào)度軟件進(jìn)程、處理軟件中斷等。嵌入式操作系統(tǒng)通常包括硬件驅(qū)動(dòng)軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動(dòng)接口、文件系統(tǒng)、圖形界面等。嵌入式操作系統(tǒng)要求具有實(shí)時(shí)性、多任務(wù)、模塊化、可移植性、可定制等特點(diǎn),流行的嵌入式操作系統(tǒng)有WindowsCE、嵌入式Linux、mC/OS-Ⅱ、VxWorks等。

因此,嵌入式系統(tǒng)可以表示為:

嵌入式系統(tǒng)=ARM硬件系統(tǒng)+嵌入式操作系統(tǒng)

+操作系統(tǒng)級(jí)應(yīng)用軟件系統(tǒng)

或者

嵌入式系統(tǒng)=ARM硬件系統(tǒng)+芯片級(jí)應(yīng)用軟件系統(tǒng)1.1.3嵌入式系統(tǒng)的研發(fā)特點(diǎn)

嵌入式系統(tǒng)研發(fā)可分為四類,即:首先,嵌入式系統(tǒng)的硬件平臺(tái)設(shè)計(jì),需要根據(jù)應(yīng)用環(huán)境選擇合適的ARM芯片,滿足處理速度和存儲(chǔ)深度的要求,同時(shí),需要兼顧性價(jià)比和芯片特點(diǎn)與生存周期等因素。ARM芯片選型后,根據(jù)需要實(shí)現(xiàn)的功能添加相應(yīng)的外設(shè)接口處理芯片和電源與時(shí)鐘芯片等,借助ProtelDXP等EDA軟件完成硬件平臺(tái)的原理性設(shè)計(jì)和PCB設(shè)計(jì)。目前,嵌入式系統(tǒng)硬件平臺(tái)的設(shè)計(jì)基本上實(shí)現(xiàn)了模型化設(shè)計(jì),即ARM芯片與外設(shè)芯片的接口電路都形成了規(guī)范,只需要按“模型”將ARM芯片與所需外設(shè)芯片連接起來就可以得到特定的嵌入式系統(tǒng)硬件平臺(tái)。盡管如此,讀懂和分析這個(gè)“模型”仍然需要一定的電路基礎(chǔ)。其次,基于ARM芯片的芯片級(jí)匯編或C語言程序設(shè)計(jì),這類程序包括系統(tǒng)初始化程序和特定功能的算法程序,要求設(shè)計(jì)者對(duì)ARM芯片工作原理和內(nèi)部結(jié)構(gòu)有較好的認(rèn)識(shí)和理解,需要對(duì)匯編語言和指令以及C語言編程有一定的基礎(chǔ)。目前,芯片級(jí)軟件設(shè)計(jì)達(dá)到了框架化的水平,即在現(xiàn)有的框架程序的基礎(chǔ)上,添加特定的軟件功能達(dá)到程序設(shè)計(jì)的目的。因此,程序員需對(duì)框架程序有全面深入的了解,程序員的主要工作集中在使用C語言開發(fā)算法上。然后,嵌入式操作系統(tǒng)的定制和驅(qū)動(dòng)程序的開發(fā),這類研發(fā)已經(jīng)完全商業(yè)化。設(shè)計(jì)者可以根據(jù)自己選用的ARM芯片,直接購買到特定的相兼容的嵌入式操作系統(tǒng)軟件,只需要點(diǎn)幾下鼠標(biāo)就可以定制出功能強(qiáng)大的專用嵌入式操作系統(tǒng),并且,嵌入式操作系統(tǒng)供應(yīng)商也會(huì)提供幾乎所有常見外設(shè)的驅(qū)動(dòng)程序,例如,觸摸屏、LCD屏、網(wǎng)口、串口、USB口等。如果設(shè)計(jì)者想自行研發(fā)具有獨(dú)立知識(shí)產(chǎn)權(quán)的嵌入式操作系統(tǒng),那么認(rèn)真學(xué)好開源的μC/OS-II嵌入式操作系統(tǒng)是一個(gè)建設(shè)性的忠告。最后,基于嵌入式操作系統(tǒng)開發(fā)用戶應(yīng)用程序,特別是開發(fā)具有良好圖形界面的用戶應(yīng)用程序。這是對(duì)設(shè)計(jì)者的一個(gè)挑戰(zhàn)?;诓煌那度胧讲僮飨到y(tǒng),開發(fā)應(yīng)用程序的方式有很大的不同。嵌入式Linux和WindowsCE都提供了良好的界面設(shè)計(jì)支持,分別可以借助QT和VisualStudio進(jìn)行應(yīng)用軟件開發(fā)。用戶可能需要對(duì)基于事件消息驅(qū)動(dòng)的編程有進(jìn)一步的了解,同時(shí),如果是基于WindowsCE,掌握?.NetFramework編程是一條簡捷的路徑。2008年西安電子科技大學(xué)出版社出版的《WindowsCE應(yīng)用程序設(shè)計(jì)》一書在嵌入式應(yīng)用程序開發(fā)方面能起到較好的引導(dǎo)作用。1.2ARM發(fā)展歷程及應(yīng)用領(lǐng)域

自1985年第一個(gè)ARM1原型誕生至今(ARM公司成立于1990年),ARM公司設(shè)計(jì)的成熟ARM體系結(jié)構(gòu)(或稱指令集體系結(jié)構(gòu)ISA)有ARMv4、ARMv4T、ARMv5TE、ARMv5TEJ、ARMv6和ARMv7等,并且版本號(hào)還在不斷升級(jí),對(duì)應(yīng)的處理器家族有ARM7、ARM9、ARM9E、ARM10E、ARM11、Cortex、SecurCore和XScale等處理器系列。應(yīng)用領(lǐng)域涉及商業(yè)、軍事、航天航空、網(wǎng)絡(luò)與無線通信、消費(fèi)電子、醫(yī)療電子、儀器儀表和汽車電子等各行各業(yè)。1.2.1ARM發(fā)展歷程及命名規(guī)則

每個(gè)ARM處理器都對(duì)應(yīng)于一個(gè)特定的ARM指令集體系結(jié)構(gòu)版本,例如,ARM920T微處理器支持指令集體系結(jié)構(gòu)ARMv4T。ARM體系結(jié)構(gòu)的發(fā)展歷程如表1-1所示。

表1-1中列出了一些典型的ARM微處理器名稱,ARM微處理器是根據(jù)其具有的功能在“ARM”后添加字母來命名的,目前,這些字母有T、D、M、I、E、J、F、S,依次表示支持Thumb指令集、支持在線JTAG調(diào)試、內(nèi)嵌乘法器、支持嵌入式ICE(在線斷點(diǎn)和調(diào)試)技術(shù)、增強(qiáng)DSP指令、支持Java技術(shù)、支持向量浮點(diǎn)處理、可綜合。ARM微處理器名稱中的數(shù)字用于反映處理器系列、存儲(chǔ)管理單元以及高速緩存等信息。1.2.2ARM微處理器系列

目前ARM微處理器主要有八個(gè)系列,即ARM7系列、ARM9系列、ARM9E系列、ARM10E系列、ARM11系列、Cortex系列、SecurCore系列、XScale系列等。各種系列微處理器均有其特點(diǎn)和應(yīng)用場合。

1.ARM7微處理器系列

ARM7微處理器系列內(nèi)核基于馮·諾依曼體系結(jié)構(gòu),數(shù)據(jù)和指令共用相同的總線,內(nèi)核指令三級(jí)流水,支持ARMv4T指令集,包括ARM7TDMI、ARM7TDMI-S、ARM7EJ-S和ARM720T等微處理器核(其中,ARM7EJ-S執(zhí)行ARMv5TEJ指令集,五級(jí)流水,帶Java加速,可綜合;而ARM720T已被ARM926EJ-S替代)。

ARM7TDMI是目前非常流行的32位微處理器內(nèi)核,例如,Samsung公司的S3C4510B芯片采用了該內(nèi)核,它支持16位的Thumb指令集、快速乘法指令和嵌入式ICE調(diào)試技術(shù)。其S變種ARM7TDMI-S是可綜合的。

ARM720T處理器核集成了一個(gè)MMU(存儲(chǔ)器管理單元)和一個(gè)8?KB的高速緩存,支持WindowsCE、Linux、Symbian等實(shí)時(shí)嵌入式操作系統(tǒng)。

ARM7系列微處理器主要應(yīng)用于無線接入手持設(shè)備、打印機(jī)、數(shù)碼相機(jī)和隨身聽等。

ARM7系列微處理器采用0.13mm、0.18?mm或0.25?mm工藝,主頻最高達(dá)130?MIPS,功耗很低,代碼與ARM9、ARM9E和ARM10以及XScale處理器兼容。

ARM7TDMI內(nèi)核的結(jié)構(gòu)框圖如圖1-1所示。圖1-1ARM7TDMI內(nèi)核結(jié)構(gòu)

2.ARM9微處理器系列

ARM9及其后更高系列的微處理器核均采用哈佛體系結(jié)構(gòu),數(shù)據(jù)總線與指令總線相互獨(dú)立,數(shù)據(jù)空間與程序空間相互獨(dú)立。ARM9系列微處理器核包括ARM920T和ARM922T兩種,具有五級(jí)指令流水線(處理速率可達(dá)1.1?MIPS/MHz),ARM922T是ARM920T的變種,其數(shù)據(jù)和指令高速緩存均為8?KB,而ARM920T的數(shù)據(jù)和指令高速緩存均為16KB。

32位的ARM9系列微處理器執(zhí)行ARMv4T指令集,具有兩種工作狀態(tài),即Thumb狀態(tài)和ARM狀態(tài),支持16位的Thumb指令集和32位的ARM指令集。主頻可達(dá)300?MIPS以上,具有一個(gè)32位的AMBA總線接口,具有MMU單元,支持WindowsCE、Linux和SymbianOS等嵌入式操作系統(tǒng)。ARM9核具有8出口的寫緩沖器,用于提高對(duì)外部存儲(chǔ)空間的寫速度。ARM9系列的生產(chǎn)工藝為0.13mm、0.15mm或0.18mm。

ARM9系列微處理器可用于PDA等高檔手持設(shè)備、MP5播放器等數(shù)字終端、數(shù)碼相機(jī)等圖像處理設(shè)備以及汽車電子方面。

ARM920T核的結(jié)構(gòu)框圖如圖1-2所示。圖中,AMBA(AdvancedMicroprocessorBusArchitecture)為高級(jí)微處理器總線結(jié)構(gòu),AHB(AdvancedHigh-performanceBus)為先進(jìn)高性能總線,該總線與APB(AdvancedPeripheralBus)總線協(xié)議隸屬于AMBAv2.0版本。圖1-2ARM920T內(nèi)核結(jié)構(gòu)

ARM920T核是本書的重點(diǎn)。

3.ARM9E微處理器系列

ARM9E微處理器系列目前包括ARM926EJ-S、ARM946E-S、ARM966E-S和ARM996HS等四個(gè)種類,都是可綜合的,采用五級(jí)指令流水技術(shù)(速率可達(dá)1.1?MIPS/MHz),在0.13?mm工藝下主頻可達(dá)300?MIPS,支持ARM、Thumb和DSP指令集,提供了浮點(diǎn)運(yùn)算協(xié)處理器,可用于圖像和視頻處理。其中,ARM926EJ-S微處理器包含了Jazelle技術(shù)(硬件運(yùn)行Java代碼,提高速度近8倍),集成了MMU,支持WindowsCE、Linux等嵌入式操作系統(tǒng)。

ARM9E核具有16出口的寫緩沖器,用于提高處理器向外部存儲(chǔ)空間寫數(shù)據(jù)的速度,支持ETM9,即具有實(shí)時(shí)跟蹤能力的嵌入式跟蹤宏單元,采用軟核技術(shù),工藝為0.13?mm、0.15?mm或0.18?mm。

ARM9E微處理器可應(yīng)用于網(wǎng)絡(luò)通信設(shè)備、移動(dòng)通信設(shè)備、圖像終端、海量數(shù)據(jù)存儲(chǔ)設(shè)備、汽車智能化設(shè)備等。

其中,ARM926EJ-S微處理器執(zhí)行ARMv5TEJ指令集,其內(nèi)核結(jié)構(gòu)框圖如圖1-3所示,圖中,TCM(TightlyCoupledMemory)為緊耦合存儲(chǔ)器。圖1-3ARM926EJ-S內(nèi)核結(jié)構(gòu)這里解釋一下MMU、TCM和Cache的含義。

MMU(MemoryManagementUnit)存儲(chǔ)器管理單元是MPU(MemoryProtectionUnit)存儲(chǔ)器保護(hù)單元的升級(jí)。MPU將物理存儲(chǔ)空間映射到不同的區(qū)域,通過設(shè)置區(qū)域的屬性對(duì)區(qū)域進(jìn)行訪問限制和保護(hù),例如,ARM946E-S核包含MPU。此時(shí),ARM的資源,即存儲(chǔ)器系統(tǒng)和外設(shè)都映射到某個(gè)或某些區(qū)域中。MPU中映射的區(qū)域地址與物理地址是一一映射關(guān)

系,即地址重疊的兩個(gè)程序?qū)?huì)競爭資源;而MMU則是通過頁表轉(zhuǎn)換器技術(shù),將實(shí)際的物理存儲(chǔ)空間映射為虛擬存儲(chǔ)器,虛存是獨(dú)立于物理存儲(chǔ)空間的存儲(chǔ)空間,允許不同的程序使用相同的虛擬地址(MMU映射它們到不同的物理地址上),使得各個(gè)程序在各自獨(dú)立的存儲(chǔ)空間中運(yùn)行而互不影響。

Cache即高速緩存,位于內(nèi)核與存儲(chǔ)器之間,對(duì)于馮·諾依曼體系結(jié)構(gòu)來說,指令和數(shù)據(jù)共用一個(gè)Cache;對(duì)于哈佛體系結(jié)構(gòu)來說,指令Cache和數(shù)據(jù)Cache是分開的。由于內(nèi)核的處理速率一般遠(yuǎn)遠(yuǎn)高于總線訪問存儲(chǔ)器的速率,為了保證內(nèi)核全速運(yùn)行,參與處理的數(shù)據(jù)或指令集一方面先由存儲(chǔ)器讀到Cache備用,另一方面,需要寫到存儲(chǔ)器的運(yùn)算結(jié)果數(shù)據(jù)集可由高速Cache暫存,因此,Cache提高了內(nèi)核的處理速率(高檔的處理器又分出一級(jí)Cache、二級(jí)Cache等)。

Cache的確提高了內(nèi)核的性能,但是,程序代碼執(zhí)行的時(shí)間變得不可預(yù)測,因?yàn)?,Cache裝載和存儲(chǔ)指令和數(shù)據(jù)的時(shí)間不可預(yù)測。而TCM緊耦合存儲(chǔ)器是緊貼內(nèi)核的高速SRAM,用于保證取指令或數(shù)據(jù)操作的準(zhǔn)確時(shí)鐘數(shù),對(duì)于要求確定行為的實(shí)時(shí)算法研究很有幫助。

4.?ARM10E微處理器系列

ARM10E微處理器系列中主推ARM1026EJ-S核,該高性能微處理器核是完全可綜合的軟核,執(zhí)行ARMv5TEJ指令集,六級(jí)指令流水(速度可達(dá)1.35?MIPS/MHz,經(jīng)Dhrystonev2.1測試),支持ARM、Thumb、DSP和Java指令,支持高性能硬件Java字節(jié)代碼執(zhí)行,同時(shí)具有MPU和MMU,支持實(shí)時(shí)操作系統(tǒng)和WindowsCE、Linux、JavaOS等嵌入式操作系統(tǒng)。Dhrystone是1984年ReinholdP.Weicker開發(fā)的用于測量微處理器運(yùn)算能力的基準(zhǔn)程序,常用于處理器整形運(yùn)算性能的測量,用C、Pascal或Java編寫,其計(jì)量單位為多少次Dhrystone,后來把在VAX-11/780機(jī)器上的測試結(jié)果1757?Dhrystones/s定義為1?DhrystoneMIPS,即1?DMIPS。)

ARM1026EJ-S具有獨(dú)立的指令高速緩存和數(shù)據(jù)高速緩存,緩存大小從4?KB至128?KB可配置;具有獨(dú)立的數(shù)據(jù)TCM和指令TCM,TCM支持插入等待狀態(tài),并且大小從0至1?MB可配置;具有雙64位/32位AMBAAHB總線接口。ARM1026EJ-S主要應(yīng)用于高級(jí)手持通信終端、數(shù)字消費(fèi)電子、汽車自動(dòng)駕駛和復(fù)雜工業(yè)控制系統(tǒng)等。

ARM1026EJ-S的內(nèi)部結(jié)構(gòu)框圖如圖1-4所示,圖中的VIC(VectoredInterruptController)為向量中斷控制器。圖1-4ARM1026EJ-S內(nèi)核結(jié)構(gòu)

5.ARM11微處理器系列

ARM11執(zhí)行ARMv6指令集,指令八級(jí)流水執(zhí)行,于2003年發(fā)布,包括ARM1136J(F)-S、ARM1156T2(F)-S、ARM1176JZ(F)-S單核微處理器和ARM11MPCore多核微處理器(最多四核)等四個(gè)系列。ARM11系列微處理器具有低功耗(0.6?mW/MHz,0.13?mm,1.2?V)、處理高性能(例如具有獨(dú)立的裝入/存儲(chǔ)和算術(shù)運(yùn)算流水線)、存儲(chǔ)高效能(例如具有優(yōu)化的TCM等)等特點(diǎn),主要應(yīng)用于數(shù)字TV、機(jī)頂盒、游戲終端、汽車娛樂電子、網(wǎng)絡(luò)設(shè)備等。

ARM1136JF-S的結(jié)構(gòu)框圖如圖1-5所示。圖1-5ARM1136JF-S內(nèi)核結(jié)構(gòu)

6.Cortex微處理器系列

Cortex微處理器系列包括三個(gè)系列,即Cortex-A、Cortex-R和Cortex-M,均支持Thumb-2指令集。其中,Cortex-A支持復(fù)雜操作系統(tǒng)和用戶應(yīng)用,有Cortex-A8和Cortex-A9(單核/多核)等;Cortex-R面向?qū)崟r(shí)應(yīng)用,有Cortex-R4(F)和Cortex-R4X等;Cortex-M進(jìn)行了內(nèi)存和功耗優(yōu)化,僅支持Thumb-2指令集,包括Cortex-M3和Cortex-M1等。

7.SecurCore微處理器系列

SecurCore系列微處理器面向智能卡、電子商務(wù)、銀行、身份識(shí)別、電子購物等信息安全設(shè)備等方面的應(yīng)用,包括SC100、SC200和SC300微處理器,具有高性能和極低功耗等特點(diǎn)。其中,SC100是基于ARM7TDMI內(nèi)核帶有MPU的安全內(nèi)核,而SC200還支持JavaCard2.x加速和其他增強(qiáng)性能。

8.XScale微處理器系列

XScale微處理器是StrongARM的優(yōu)化改良,獨(dú)家許可給Intel公司(現(xiàn)在XScale代工完全轉(zhuǎn)讓給Marvell公司),基于哈佛結(jié)構(gòu),具有獨(dú)立的32?KB數(shù)據(jù)Cache和32?KB指令Cache,五級(jí)流水,指行ARMv5TE架構(gòu)指令,包括MMU,具有動(dòng)態(tài)電源管理特性,工作頻率可達(dá)1?GHz,0.18?mm生產(chǎn)工藝,多媒體處理能力得到增強(qiáng)。XScale微處理器代表芯片為PXA270和PXA320等,主要應(yīng)用于GPS定位系統(tǒng)、無線網(wǎng)絡(luò)設(shè)備、娛樂和消費(fèi)電子等。1.2.3ARM微處理器應(yīng)用領(lǐng)域

ARM微處理器在數(shù)據(jù)密集型應(yīng)用(例如視頻、圖像和數(shù)字信號(hào)處理等)以及控制密集型應(yīng)用(例如流程控制、工業(yè)控制等)方面均得到了廣泛的應(yīng)用,且具有加載嵌入式操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng)的能力,因此,ARM系統(tǒng)在完成特定功能的同時(shí),往往具有友好的人機(jī)交互界面,有取代傳統(tǒng)的單片機(jī)和DSP的趨勢(shì)。

總體而言,ARM在以下幾個(gè)方面具有優(yōu)勢(shì):其一,ARM芯片的生產(chǎn)與設(shè)計(jì)是分離的。ARM公司僅設(shè)計(jì)ARM核,通過出售ARM核知識(shí)產(chǎn)權(quán)給OEM公司而與OEM公司建立合作關(guān)系,OEM公司可以在ARM核的基礎(chǔ)上(不能改變ARM核)添加特定的外設(shè),生產(chǎn)出具有各自特色的芯片,OEM公司出售芯片給第三方用戶。這種經(jīng)營運(yùn)作方式帶有全球性、共享性和非壟斷性,在ARM生產(chǎn)與銷售上達(dá)到了共享和私有的統(tǒng)一。其二,ARM公司推廣軟核設(shè)計(jì)。這是一種可定制內(nèi)核的構(gòu)架內(nèi)核技術(shù),面向特定的應(yīng)用,使得構(gòu)架后的ARM核更具有專用性,而ARM內(nèi)核的構(gòu)架設(shè)計(jì)具有通用性,在ARM內(nèi)核設(shè)計(jì)上達(dá)到了專用性與通用性的統(tǒng)一。

其三,ARM公司推廣定制設(shè)計(jì)。ARM公司根據(jù)第三方用戶的需要進(jìn)行內(nèi)核定制,要求第二方OEM公司進(jìn)行代工,這種針對(duì)第三方用戶的定制設(shè)計(jì)使得ARM芯片的應(yīng)用不但具有專一性,而且能高效地節(jié)省成本,即直接針對(duì)應(yīng)用對(duì)內(nèi)核進(jìn)行了優(yōu)化和裁剪,同時(shí)片上外設(shè)進(jìn)行了相應(yīng)的去冗留精。在這方面,ARM芯片達(dá)到了應(yīng)用與設(shè)計(jì)的統(tǒng)一。其四,ARM公司推廣SOC芯片,即集成了一片或多片ARM、DSP、FPGA等數(shù)字化芯片的統(tǒng)一內(nèi)核,用以彌補(bǔ)單核應(yīng)用的不足。多核處理器主要是面向高端應(yīng)用,這樣,ARM公司形成了自低端至高端的完整研發(fā)策略,且低端至高端的應(yīng)用具有共同性,每個(gè)設(shè)計(jì)人員從第一次接觸ARM芯片后,都能在較短的時(shí)間內(nèi)借助“慣性”充分地掌握如何利用ARM系列芯片進(jìn)行特定項(xiàng)目的設(shè)計(jì)開發(fā)。

ARM的這些特點(diǎn),使得數(shù)字化電子設(shè)計(jì)的硬件設(shè)計(jì)和軟件開發(fā)逐漸走向規(guī)范化、標(biāo)準(zhǔn)化和系列化,這對(duì)于時(shí)間有限的研發(fā)人員來說,是期待已久的。研發(fā)人員只需要具有一套仿真設(shè)備、一套EDA軟件、一系列ARM平臺(tái),就可以應(yīng)對(duì)整個(gè)數(shù)字化領(lǐng)域的研發(fā)設(shè)計(jì)。高等院校是推廣ARM應(yīng)用的主要場所,目前幾乎所有高校的電子、通信、計(jì)算機(jī)、軟件、應(yīng)用數(shù)學(xué)等相關(guān)專業(yè)都開設(shè)了ARM類課程。而ARM在數(shù)字圖像處理、數(shù)字信號(hào)處理、人工智能、機(jī)器人、生物醫(yī)學(xué)、特征識(shí)別、網(wǎng)絡(luò)通信、視頻處理與壓縮、語音處理、雷達(dá)技術(shù)、編碼技術(shù)等技術(shù)領(lǐng)域都深深涉足。

1.3ARM芯片級(jí)開發(fā)環(huán)境

ARM芯片級(jí)的開發(fā)環(huán)境由ARM開發(fā)板(或?qū)嶒?yàn)箱)、仿真器、計(jì)算機(jī)以及ARM開發(fā)軟件等組成。借助于ARM仿真器在線調(diào)試程序的過程稱為仿真階段,而將程序下載到ARM開發(fā)板的FLASH上脫離仿真器工作的過程稱為自舉運(yùn)行階段。仿真階段是自舉運(yùn)行階段的仿真測試運(yùn)行準(zhǔn)備時(shí)期,對(duì)項(xiàng)目的整個(gè)研發(fā)過程起著重要的試金石作用。1.3.1仿真環(huán)境建設(shè)

ARM開發(fā)環(huán)境包括硬件和軟件兩部分,其中,硬件主要包括ARM仿真器和集成了ARM芯片(例如S3C2440A等)的開發(fā)板或?qū)嶒?yàn)箱,提供了JTAG在線仿真接口;軟件主要有RealViewDeveloperSuite(簡稱RVDS)和H-JTAG等。前者是ARM公司研發(fā)的使用匯編或C/C++語言開發(fā)ARM程序的集成開發(fā)環(huán)境,而后者是ARM芯片的仿真服務(wù)器程序(),用于連接ARM芯片和計(jì)算機(jī)上的RVDS仿真軟件。我們使用過大多數(shù)公司研發(fā)的ARM實(shí)驗(yàn)箱后,最終選取了北京博創(chuàng)科技()和深圳技創(chuàng)科技()的ARM9實(shí)驗(yàn)平臺(tái)作為硬件工作平臺(tái)(其中,博創(chuàng)為S3C2410,技創(chuàng)為S3C2440),并將在第二章中綜合這兩個(gè)平臺(tái)的特點(diǎn),公開一個(gè)相對(duì)完整的ARM系統(tǒng)原理圖。本書的所有程序均以這兩個(gè)平臺(tái)和這個(gè)原理圖為基礎(chǔ),由于ARM核心的兼容性,這些程序也可以運(yùn)行在其他公司的ARM實(shí)驗(yàn)箱上(包括ARM7、ARM10、ARM11等)。除了ARM公司的ARM開發(fā)軟件RVDS之外,一些專業(yè)軟件開發(fā)商也提供了ARM開發(fā)軟件,每種ARM開發(fā)軟件都有其優(yōu)缺點(diǎn),目前這些軟件均為商業(yè)化軟件。本書寫作之時(shí),RVDS的版本號(hào)已升至v4.0以上。本書第一至三章采用RVDS軟件,其版本號(hào)為2.2,針對(duì)ARM9來說,該版本能完全發(fā)掘ARM9的功能。在ARM仿真服務(wù)器軟件上,我們選用了H-JTAG軟件(不但這個(gè)軟件,而且這個(gè)軟件的作者也提供了實(shí)質(zhì)性的幫助)。從第四章開始,將使用RealViewMDK軟件(Keil公司開發(fā)的被ARM公司收購的軟件)。第一至三章的程序都將工作在仿真環(huán)境下。完成對(duì)ARM匯編語言指令的測試,使用RVDS軟件十分方便,本節(jié)重點(diǎn)介紹RVDS仿真環(huán)境建設(shè)。第四章時(shí)將具體介紹RealViewMDK和ULINK2的使用方法。當(dāng)然,本質(zhì)上這兩個(gè)軟件是統(tǒng)一的。

1.硬件平臺(tái)介紹

這里重點(diǎn)介紹博創(chuàng)經(jīng)典UP-NETARM2410教學(xué)科研系統(tǒng),如圖1-6所示。圖1-6UP-NETARM2410實(shí)驗(yàn)箱

UP-NETARM2410實(shí)驗(yàn)箱由核心模塊和主機(jī)板構(gòu)成。其中,核心模塊包括基于ARM920T(編號(hào):0x0032409D)內(nèi)核的SAMSUNGS3C2410處理器芯片、64?MB的SDRAM、64?MB的NandFLASH和一個(gè)IO口控制的LED燈;主機(jī)板提供了核心模塊的外設(shè)擴(kuò)展資源,如8英寸的640×480TFT真彩LCD屏、觸摸屏、8×8矩陣LED顯示模塊、1個(gè)中斷按鍵、17鍵數(shù)字鍵盤、2位LED數(shù)碼管、直流電機(jī)模塊、主從USB口、SD/MMC接口、網(wǎng)卡接口等,同時(shí),還提供了一個(gè)168針的擴(kuò)展槽,用于擴(kuò)展GPS/GPRS等模塊。

UP-NETARM2410實(shí)驗(yàn)箱采用單+12?V電源供電。打開實(shí)驗(yàn)箱后,將配套的12?V電源適配器與實(shí)驗(yàn)箱連接好(電源插口在實(shí)驗(yàn)箱的左上角),然后,使用并口線把計(jì)算機(jī)的并口與實(shí)驗(yàn)箱的JTAG并口相連接(JTAG并口在實(shí)驗(yàn)箱的左上方)。檢查連接正確后,撥動(dòng)實(shí)驗(yàn)箱左上角的開關(guān),實(shí)驗(yàn)箱進(jìn)入上電工作狀態(tài)(出廠配置為嵌入式Linux)。

總之,硬件平臺(tái)需要一臺(tái)帶并口的計(jì)算機(jī)(如果使用USB口ARM仿真器,則只需要USB口即可,例如第四章的ULINK2)、并口線、ARM實(shí)驗(yàn)箱等。

2.H-JTAG使用方法

截止本書定稿之時(shí),H-JTAG軟件的最高版本為v0.8.0,下載并安裝完軟件后,點(diǎn)擊菜單“Settings|LPTJTAGSetting”,設(shè)置并口管腳連接如圖1-7所示(針對(duì)UP-NETARM2410實(shí)驗(yàn)箱,實(shí)驗(yàn)箱上的跳線JP1連接1-2腳,JP1位于左上方;不同的實(shí)驗(yàn)箱需視原理圖而定)。

如圖1-7設(shè)置完成后,點(diǎn)擊“OK”按鈕,出現(xiàn)如圖1-8所示界面,表示H-JTAG服務(wù)器已經(jīng)啟動(dòng)且工作正常。圖1-7H-JTAG并口連接設(shè)置圖1-8H-JTAG服務(wù)器注意:計(jì)算機(jī)并口應(yīng)設(shè)為EPP工作模式。

此外,H-JTAG軟件還提供了H-Flasher和H-Converter功能,即通過JTAG口訪問FLASH芯片和目標(biāo)文件格式轉(zhuǎn)化功能,這兩個(gè)功能非常實(shí)用。

3.RVDS仿真環(huán)境

將H-JTAG服務(wù)器最小化到任務(wù)欄托盤,如圖1-9所示。圖1-9H-JTAG服務(wù)器后臺(tái)運(yùn)行安裝RVDS軟件后從開始菜單中運(yùn)行“所有程序|ARM|RealViewDeveloperSuitev2.2|RealViewDebuggerv1.8”(如果彈出“ListSelection”對(duì)話框,則選擇“ARM”,單擊“OK”按鈕,這個(gè)對(duì)話框配置匯編語言代碼配色方案),進(jìn)入“RVDEBUG”窗口,點(diǎn)擊菜單“Target|ConnecttoTarget…Alt+0”(快捷鍵Alt+數(shù)字鍵0),進(jìn)入“ConnectionControl”對(duì)話框,在對(duì)話框中點(diǎn)擊鼠標(biāo)右鍵,選擇“Add/Remove/EditDevices…”,進(jìn)入“RDITargetList”對(duì)話框,選擇“AddDLL…”,將“C:\ProgramFiles\H-JTAG\H-JTAG.dll”添加至該對(duì)話框中,并在H-JTAG.dll前勾選,點(diǎn)擊“Close”按鈕關(guān)閉“RDITargetList”對(duì)話框,此時(shí),“ConnectionControl”對(duì)話框如圖1-10所示。圖1-10配置好的ConnectionControl對(duì)話框關(guān)閉圖1-10所示對(duì)話框,回到“RVDEBUG”窗口,如圖

1-11所示。圖1-11連接目標(biāo)板后的程序仿真調(diào)試窗口點(diǎn)擊圖1-11中的菜單“File|Open…Ctrl+O”,彈出“SelectFiletoOpen”對(duì)話框,在“文件類型(T)”中選擇“Executable[*.axf;*.out;*.alf…”,然后,找到需要仿真的可執(zhí)行文件(一般擴(kuò)展名為?.axf),點(diǎn)擊“打開”按鈕即進(jìn)入到仿真環(huán)境。仿真界面將出現(xiàn)一個(gè)紅色的長條框,其框住的語句為當(dāng)前的PC指針。點(diǎn)擊圖1-11中的圖標(biāo)“LowLevelStepInto”可單步調(diào)試程序。

在圖1-11中,點(diǎn)擊菜單“View|Registers”可查看寄存器情況,寄存器值可以十六進(jìn)制數(shù)或十進(jìn)制數(shù)等格式顯示;點(diǎn)擊菜單“View|Memory”可查看程序存儲(chǔ)器結(jié)果,可設(shè)置存儲(chǔ)器單元地址的值。一般地,進(jìn)入代碼編輯器“CodeWarriorforRVDS”后,進(jìn)行源文件的編輯、編譯和連接,連接成合法的目標(biāo)文件后,在“MetrowerksCodeWarrior”窗口中點(diǎn)擊菜單“Project|DebugF5”或直接按下F5鍵,或點(diǎn)擊窗口工具欄中的“Debug”圖標(biāo),可進(jìn)入圖1-11,并自動(dòng)裝載目標(biāo)文件(RVDEBUG在首次使用時(shí)配置好后將保持配置不變)。1.3.2程序仿真實(shí)例與解釋

如上一節(jié)所述,首先準(zhǔn)備硬件平臺(tái);然后,使用并口線連接計(jì)算機(jī)與ARM實(shí)驗(yàn)箱,打開計(jì)算機(jī)和ARM實(shí)驗(yàn)箱電源;接著,在計(jì)算機(jī)上打開H-JTAG軟件,并出現(xiàn)如圖1-8所示界面,表示仿真環(huán)境已經(jīng)建立好。最后,點(diǎn)擊開始菜單“所有程序|ARM|RealViewDeveloperSuitev2.2|CodeWarriorforRVDS”,進(jìn)入代碼編輯窗口,如圖1-12所示,在其中編寫匯編語言或C/C++語言源程序,其中,匯編語言源程序擴(kuò)展名為?.s。圖1-12CodeWarrior代碼編輯器窗口

1.程序代碼編寫

在圖1-12中點(diǎn)擊菜單“File|New…Ctrl+Shift+N”,如圖1-13所示,新建一個(gè)工程文件,文件名為ex1_1(擴(kuò)展名自動(dòng)添加為?.mcp),路徑為D:\ARM9BOOK\ex1_1,工程文件類型為“ARMExecutableImage”,即ARM可執(zhí)行映像文件。點(diǎn)擊“確定”按鈕將創(chuàng)建工程文件。圖1-13新建工程文件創(chuàng)建工程文件ex1_1.mcp后,再次點(diǎn)擊菜單“File|New…Ctrl+Shift+N”,在彈出的“New”對(duì)話框中選擇“File”選項(xiàng)卡,如圖1-14所示,選中“TextFile”,在“Filename:”文件名欄中輸入“init.s”,即匯編語言源程序文件名為init.s,“Location”中輸入文件存儲(chǔ)位置為“D:\ARM9BOOK\ex1_1”,勾選“AddtoProject”,將init.s加入到工程ex1_1.mcp中,并勾選“Debug”項(xiàng)(Debug表示編譯連接時(shí)將向目標(biāo)文件中添加調(diào)試信息和符號(hào),Release表示編譯連接成無調(diào)試信息的可執(zhí)行目標(biāo)文件,一般稱為發(fā)行版本,比調(diào)試版本字節(jié)少一些)。圖1-14新建源程序文件點(diǎn)擊圖1-14中的“確定”按鈕,然后,輸入代碼并存盤,如圖1-15所示。圖1-15輸入源程序后的工程至圖1-15,具有一個(gè)源文件init.s的工程文件ex1_1.mcp已創(chuàng)建完成(這些指令的理解將在1.3.2節(jié)的3.?和第三章中闡述)。點(diǎn)擊菜單“Edit|DebugSettings…Alt+F7”或者點(diǎn)擊工具欄中的“DebugSettings…”按鈕,彈出“DebugSettings”對(duì)話框,如圖1-16所示。按圖1-16設(shè)置“ROBase”(可執(zhí)行映像文件的只讀段碼起始地址)為0x30000000,點(diǎn)擊“OK”按鈕完成設(shè)置。圖1-16DebugSettings設(shè)置在此,闡述一下圖1-16的配置含義:RVDS生成的目標(biāo)文件被稱為映像文件,擴(kuò)展名為?.axf,這種類型用于調(diào)試,如果要下載到FLASH中,需要轉(zhuǎn)化為?.bin文件。借助于RVDS進(jìn)行ARM程序設(shè)計(jì)的過程包括兩個(gè)階段:其一為在計(jì)算機(jī)上編寫程序代碼,并編譯連接成可執(zhí)行文件;其二為將可執(zhí)行文件下載到ARM核心板上調(diào)試運(yùn)行。所以,這個(gè)過程被稱為交叉調(diào)試???/p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論