配套課件-嵌入式系統(tǒng)原理與開發(fā)(第二版)_第1頁(yè)
配套課件-嵌入式系統(tǒng)原理與開發(fā)(第二版)_第2頁(yè)
配套課件-嵌入式系統(tǒng)原理與開發(fā)(第二版)_第3頁(yè)
配套課件-嵌入式系統(tǒng)原理與開發(fā)(第二版)_第4頁(yè)
配套課件-嵌入式系統(tǒng)原理與開發(fā)(第二版)_第5頁(yè)
已閱讀5頁(yè),還剩863頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1章嵌入式系統(tǒng)概述1.1嵌入式系統(tǒng)的產(chǎn)生和發(fā)展

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

1.3嵌入式系統(tǒng)的應(yīng)用領(lǐng)域

1.4嵌入式系統(tǒng)的發(fā)展趨勢(shì)

思考與練習(xí)題

1.1嵌入式系統(tǒng)的產(chǎn)生和發(fā)展

嵌入式系統(tǒng)起源于微型計(jì)算機(jī)時(shí)代。20世紀(jì)70年代,微處理器的出現(xiàn)使得計(jì)算機(jī)發(fā)生了歷史性的變化,以微處理器為核心的微型計(jì)算機(jī)走出機(jī)房,深入到千家萬(wàn)戶。這一時(shí)期被人們稱為PC時(shí)代。

由微型機(jī)不斷強(qiáng)大的計(jì)算能力所表現(xiàn)出來(lái)的智能化水平,人們首先想到的就是將其用于自動(dòng)控制領(lǐng)域中。然而更多的場(chǎng)合要求將計(jì)算機(jī)嵌入到對(duì)象體系中,實(shí)現(xiàn)對(duì)象體系的智能化控制在如此眾多的應(yīng)用背景下,這類計(jì)算機(jī)便逐漸失去了原來(lái)的形態(tài)和通用的計(jì)算功能,從而成為一種嵌入到對(duì)象體系中,實(shí)現(xiàn)對(duì)象體系智能化控制的計(jì)算機(jī),我們稱之為嵌入式計(jì)算機(jī)系統(tǒng),簡(jiǎn)稱嵌入式系統(tǒng)。分析嵌入式計(jì)算機(jī)系統(tǒng)的產(chǎn)生背景,可以發(fā)現(xiàn)它與通用計(jì)算機(jī)系統(tǒng)有著完全不同的技術(shù)要求和技術(shù)發(fā)展方向。通用計(jì)算機(jī)系統(tǒng)要求的是高速、海量的數(shù)值運(yùn)算,在技術(shù)發(fā)展方向上追求總線速度的不斷提升、存儲(chǔ)容量的不斷擴(kuò)大。而嵌入式計(jì)算機(jī)系統(tǒng)要求的是對(duì)象體系的智能化控制能力,在技術(shù)發(fā)展方向上追求針對(duì)特定對(duì)象系統(tǒng)的嵌入性、專用性和智能化。這種技術(shù)發(fā)展的分歧導(dǎo)致20世紀(jì)末計(jì)算機(jī)進(jìn)入了通用計(jì)算機(jī)系統(tǒng)和嵌入式計(jì)算機(jī)系統(tǒng)兩大分支并行發(fā)展的時(shí)期。這一時(shí)期被人們稱為后PC時(shí)代。?世界上最早的單片機(jī)是1976年Intel公司開發(fā)的8048,幾年后Intel公司又在它的基礎(chǔ)上開發(fā)出了著名的8051,同時(shí)期的還有Motorola公司的68HC05、Zilog公司的Z80等。Philips公司又進(jìn)一步將MCS-51發(fā)展成為MCU(MicroControllerUnit,微控制器)。單片機(jī)一般都集成了8/16位微處理器、RAM、ROM、串口、并口、定時(shí)器、ADC/DAC、看門狗、PWM定時(shí)器、中斷控制器等。用戶在單片機(jī)的外圍增加若干接口電路、設(shè)計(jì)相應(yīng)的控制程序就可以實(shí)現(xiàn)多種應(yīng)用。單片機(jī)被廣泛用于消費(fèi)電子、醫(yī)療電子、智能控制、通信、儀器儀表、工業(yè)控制、安全報(bào)警、交通管理等各領(lǐng)域。根據(jù)應(yīng)用的需求,單片機(jī)的發(fā)展方向主要有兩個(gè):一個(gè)是提升CPU的性能,如提高微處理器的運(yùn)行速度、降低芯片的功耗等;另一個(gè)是擴(kuò)充各種功能,把各種不同的外圍設(shè)備繼續(xù)向芯片內(nèi)部集成,并與成本相結(jié)合,衍生出面向不同應(yīng)用的各種型號(hào)。

數(shù)字信號(hào)處理(DigitalSignalProcessing,DSP)在20世紀(jì)60~70年代主要處于理論研究階段。進(jìn)入80年代,隨著微電子技術(shù)的發(fā)展,出現(xiàn)了DSP器件,這些器件的出現(xiàn)使得各種DSP的算法得以實(shí)現(xiàn),使DSP從僅限于理論研究進(jìn)而推廣到實(shí)際應(yīng)用。1983年,美國(guó)TI公司推出TMS320系列的第一個(gè)產(chǎn)品,標(biāo)志著實(shí)時(shí)數(shù)字信號(hào)處理領(lǐng)域的重大突破。DSP技術(shù)的迅速發(fā)展,使其應(yīng)用范圍拓展到通信、控制、計(jì)算機(jī)等領(lǐng)域。

20世紀(jì)80年代后,嵌入式系統(tǒng)的另一個(gè)發(fā)展來(lái)源得益于軟件技術(shù)的進(jìn)步,一方面體現(xiàn)在編程語(yǔ)言上,另一方面體現(xiàn)在實(shí)時(shí)操作系統(tǒng)的使用上。20世紀(jì)80年代初,一些軟件公司開始推出商業(yè)嵌入式實(shí)時(shí)操作系統(tǒng)和各種開發(fā)工具,如ReadySystem公司的VRTX和XRAY,IntegratedSystemIncorporation(ISI)的pSOS和PRISM+,WindRiver公司的VxWorks和Tornado,QNX公司的QNX等。嵌入式系統(tǒng)的全面發(fā)展是從20世紀(jì)90年代開始的,主要被分布式控制、數(shù)字化通信、信息家電、網(wǎng)絡(luò)等應(yīng)用需求所牽引。現(xiàn)在,人們可以隨處發(fā)現(xiàn)嵌入式系統(tǒng)的應(yīng)用,如手機(jī)、MP3播放器、數(shù)碼相機(jī)、VCD、機(jī)頂盒、路由器、交換機(jī)等。嵌入式系統(tǒng)在軟、硬件技術(shù)方面迅速發(fā)展:首先,面向不同應(yīng)用領(lǐng)域、功能更加強(qiáng)大、集成度更高、種類繁多、價(jià)格低廉、低功耗的32位微處理器逐漸占領(lǐng)統(tǒng)治地位,DSP器件向高速、高精度、低功耗發(fā)展,而且可以和其他的嵌入式微處理器相集成;其次,隨著微處理器性能的提高,嵌入式軟件的規(guī)模也呈指數(shù)型增長(zhǎng),所體現(xiàn)出的嵌入式應(yīng)用具備了更加復(fù)雜和高度智能的功能,軟件在系統(tǒng)中體現(xiàn)出來(lái)的重要程度越來(lái)越大,嵌入式操作系統(tǒng)在嵌入式軟件中的使用越來(lái)越多,所占的比例逐漸提高,同時(shí),嵌入式操作系統(tǒng)的功能不斷豐富,在內(nèi)核基礎(chǔ)上發(fā)展成為包括圖形接口、文件、網(wǎng)絡(luò)、嵌入式Java、嵌入式CORBA、分布式處理等完備功能的集合;最后,嵌入式開發(fā)工具更加豐富,已經(jīng)覆蓋了嵌入式系統(tǒng)開發(fā)過(guò)程的各個(gè)階段,現(xiàn)在主要向著集成開發(fā)環(huán)境和友好人機(jī)界面等方向發(fā)展。

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

1.2.1嵌入式系統(tǒng)的定義

《嵌入式計(jì)算系統(tǒng)設(shè)計(jì)原理》里這樣定義:“不嚴(yán)格地說(shuō):它是任意包含一個(gè)可編程計(jì)算機(jī)的設(shè)備,但是這個(gè)設(shè)備不是作為通用計(jì)算機(jī)而設(shè)計(jì)的。因此,一臺(tái)個(gè)人電腦并不能稱之為嵌入式計(jì)算系統(tǒng),盡管個(gè)人電腦經(jīng)常被用于搭建嵌入式計(jì)算系統(tǒng)?!?/p>

IEEE(國(guó)際電氣和電子工程師協(xié)會(huì))的定義是:“Deviceusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants”。微機(jī)學(xué)會(huì)的定義是:“嵌入式系統(tǒng)是以嵌入式應(yīng)用為目的的計(jì)算機(jī)系統(tǒng)”,并將其分為系統(tǒng)級(jí)、板級(jí)、片級(jí)。系統(tǒng)級(jí)包括各類工控器、PC104模塊等;板級(jí)包括各類帶CPU的主板和OEM產(chǎn)品;片級(jí)包括各種以單片機(jī)、DSP、微處理器為核心的產(chǎn)品。

目前被大多數(shù)人接受的一般性定義是:“嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟、硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積和功耗等嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。”

1.2.2嵌入式系統(tǒng)的特點(diǎn)

1.專用的計(jì)算機(jī)系統(tǒng)

主要表現(xiàn)在如下幾個(gè)方面:

(1)形式多樣。在共同的基本計(jì)算機(jī)系統(tǒng)架構(gòu)上,針對(duì)不同的應(yīng)用領(lǐng)域,嵌入式系統(tǒng)的構(gòu)造不盡相同,處理器、硬件平臺(tái)、操作系統(tǒng)、應(yīng)用軟件等種類繁多。不同的嵌入式微處理器的體系結(jié)構(gòu)和類型的適應(yīng)面不同。嵌入式系統(tǒng)工業(yè)成為不可壟斷、高度分散的工業(yè)。

(2)對(duì)運(yùn)行環(huán)境的依賴性。在眾多應(yīng)用背景下,溫度、濕度、震動(dòng)、干擾、輻射等因素構(gòu)成了嵌入式系統(tǒng)賴以生存的環(huán)境,因此在系統(tǒng)設(shè)計(jì)時(shí)就需要充分考慮其運(yùn)行環(huán)境的各種因素。

(3)綜合考慮成本、資源、功耗、體積因素。這些原本在基于通用計(jì)算平臺(tái)進(jìn)行系統(tǒng)設(shè)計(jì)時(shí)無(wú)需考慮或無(wú)需過(guò)多考慮的因素,在基于專用計(jì)算平臺(tái)的系統(tǒng)設(shè)計(jì)中都需要充分考慮。對(duì)于大量的消費(fèi)類數(shù)字化產(chǎn)品,成本是影響產(chǎn)品競(jìng)爭(zhēng)力的關(guān)鍵因素之一。為了節(jié)省成本,就必須精簡(jiǎn)使用和合理利用資源。進(jìn)一步講,在很多情況下,由于環(huán)境、功耗、體積等因素的存在,系統(tǒng)能夠使用的資源可能會(huì)受到限制。

(4)軟、硬件緊密結(jié)合,高效設(shè)計(jì)。嵌入式微處理器與通用微處理器的最大區(qū)別在于每種嵌入式微處理器大多專用于某種或幾種特定應(yīng)用,工作在為特定用戶群設(shè)計(jì)的系統(tǒng)中。它通常具有功耗低、體積小、集成度高等特點(diǎn)。把通用微處理器中許多由板卡完成的功能集成在芯片內(nèi)部,有利于嵌入式系統(tǒng)設(shè)計(jì)小型化,增強(qiáng)移動(dòng)能力,增強(qiáng)與網(wǎng)絡(luò)的耦合度。嵌入式軟件是應(yīng)用程序和操作系統(tǒng)兩種軟件的一體化程序。對(duì)于嵌入式軟件而言,系統(tǒng)軟件和應(yīng)用軟件的界限并不明顯,原因在于嵌入式環(huán)境下應(yīng)用系統(tǒng)的配置差別較大,所需操作系統(tǒng)的裁剪配置不同,I/O操作沒有標(biāo)準(zhǔn)化,驅(qū)動(dòng)程序通常需要自行設(shè)計(jì)。

2.代碼固化

3.實(shí)時(shí)性要求

4.可靠性要求

5.操作系統(tǒng)的支持

6.專門的開發(fā)工具、環(huán)境和方法

交叉開發(fā)環(huán)境由宿主機(jī)和目標(biāo)機(jī)組成,如圖1-1所示。圖1-1交叉開發(fā)環(huán)境

7.知識(shí)集成系統(tǒng)

嵌入式系統(tǒng)是先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)、電子技術(shù)、通信網(wǎng)絡(luò)技術(shù)以及各個(gè)應(yīng)用領(lǐng)域的專用技術(shù)相結(jié)合的產(chǎn)物。這一特點(diǎn)決定了它必然是一個(gè)技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識(shí)集成系統(tǒng)。嵌入式系統(tǒng)的廣泛應(yīng)用和巨大的發(fā)展?jié)摿σ咽顾蔀?1世紀(jì)IT技術(shù)發(fā)展的熱點(diǎn)之一。1.2.3嵌入式系統(tǒng)的組成結(jié)構(gòu)

在不同的應(yīng)用場(chǎng)合,嵌入式系統(tǒng)雖然呈現(xiàn)出不同的外觀和形式,但是其核心的計(jì)算系統(tǒng)仍然可以抽象出一個(gè)典型的組成模型。嵌入式系統(tǒng)的組成結(jié)構(gòu)一般可劃分為硬件層、中間層、軟件層和功能層,如圖1-2所示。圖1-2嵌入式系統(tǒng)的組成結(jié)構(gòu)

1.硬件層

硬件層由嵌入式微處理器、存儲(chǔ)系統(tǒng)、通信接口、人機(jī)交互接口、其他I/O接口(A/D、D/A、通用I/O等)以及電源等組成。嵌入式系統(tǒng)的硬件層以嵌入式微處理器為核心,附帶有電源電路、時(shí)鐘電路和存儲(chǔ)器電路(RAM和ROM等)。它們共同構(gòu)成了一個(gè)嵌入式核心控制模塊,操作系統(tǒng)和應(yīng)用程序都可以固化在ROM中。

2.中間層

硬件層與軟件層之間為中間層,它把系統(tǒng)軟件與底層硬件部分隔離,使得系統(tǒng)的底層設(shè)備驅(qū)動(dòng)程序與硬件無(wú)關(guān)。中間層一般包括硬件抽象層(HardwareAbstractLayer,HAL)和板級(jí)支持包(BoardSupportPackage,BSP)。

3.軟件層

軟件層由實(shí)時(shí)操作系統(tǒng)(RealTimeOperatingSystem,RTOS)、文件系統(tǒng)、圖形用戶接口(GraphicalUserInterfaces,GUI)、網(wǎng)絡(luò)組件組成。RTOS是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺(tái)。大多數(shù)RTOS都是針對(duì)不同微處理器優(yōu)化設(shè)計(jì)的高效實(shí)時(shí)多任務(wù)內(nèi)核,可以在不同微處理器上運(yùn)行而為用戶提供相同的API接口。因此,基于RTOS開發(fā)的應(yīng)用程序具有非常好的可移植性。

4.功能層

功能層由基于RTOS開發(fā)的應(yīng)用程序組成,用來(lái)完成實(shí)際所需的應(yīng)用功能。功能層是面向被控對(duì)象和用戶的,當(dāng)用戶操作時(shí)往往需要提供一個(gè)友好的人機(jī)界面。1.2.4嵌入式系統(tǒng)的分類

嵌入式系統(tǒng)可按照嵌入式微處理器的位數(shù)、實(shí)時(shí)性、軟件結(jié)構(gòu)以及應(yīng)用領(lǐng)域等進(jìn)行分類。

1.按照嵌入式微處理器的位數(shù)分類

按照嵌入式微處理器字長(zhǎng)的位數(shù),嵌入式系統(tǒng)可分為4位、8位、16位、32位和64位。

2.按照實(shí)時(shí)性分類

實(shí)時(shí)系統(tǒng)是指系統(tǒng)執(zhí)行的正確性不僅取決于計(jì)算的邏輯結(jié)果,還取決于結(jié)果產(chǎn)生的時(shí)間。根據(jù)嵌入式系統(tǒng)是否具有實(shí)時(shí)性,可將其分為嵌入式實(shí)時(shí)系統(tǒng)和嵌入式非實(shí)時(shí)系統(tǒng)。

3.按照嵌入式軟件結(jié)構(gòu)分類

按照嵌入式軟件的結(jié)構(gòu)分類,嵌入式系統(tǒng)可分為循環(huán)輪詢系統(tǒng)、前后臺(tái)系統(tǒng)和多任務(wù)系統(tǒng)。

1)循環(huán)輪詢系統(tǒng)

循環(huán)輪詢(pollingloop)是最簡(jiǎn)單的軟件結(jié)構(gòu),程序依次檢查系統(tǒng)的每個(gè)輸入條件,如果條件成立就執(zhí)行相應(yīng)處理。其流程圖如圖1-3所示。圖1-3循環(huán)輪詢流程圖

2)前后臺(tái)系統(tǒng)

前后臺(tái)(foreground/background)系統(tǒng)屬于中斷驅(qū)動(dòng)機(jī)制。后臺(tái)程序是一個(gè)無(wú)限循環(huán),通過(guò)調(diào)用函數(shù)實(shí)現(xiàn)相應(yīng)操作,又稱任務(wù)級(jí)。前臺(tái)程序是中斷處理程序,用來(lái)處理異步事件,又稱中斷級(jí)。設(shè)計(jì)前后臺(tái)的目的主要是通過(guò)中斷服務(wù)來(lái)保證時(shí)間性很強(qiáng)的關(guān)鍵操作(criticaloperation)。通常情況下,中斷只處理需要快速響應(yīng)的事件,將輸入/輸出數(shù)據(jù)存放在內(nèi)存的緩沖區(qū)里,再向后臺(tái)發(fā)信號(hào),由后臺(tái)來(lái)處理這些數(shù)據(jù),如運(yùn)算、存儲(chǔ)、顯示、打印等。其流程圖如圖1-4所示。圖1-4前后臺(tái)系統(tǒng)流程圖

3)多任務(wù)系統(tǒng)

對(duì)于較復(fù)雜的嵌入式系統(tǒng)而言,許多互不相關(guān)的過(guò)程有時(shí)需要計(jì)算機(jī)同時(shí)處理,在這種情況下就需要采用多任務(wù)(multitasking)系統(tǒng)。采用多任務(wù)結(jié)構(gòu)設(shè)計(jì)軟件有利于降低系統(tǒng)的復(fù)雜度,保證系統(tǒng)的實(shí)時(shí)性和可維護(hù)性。

多任務(wù)系統(tǒng)的軟件由多個(gè)任務(wù)、多個(gè)中斷服務(wù)程序以及嵌入式操作系統(tǒng)組成。任務(wù)是順序執(zhí)行的,并行性通過(guò)操作系統(tǒng)完成。操作系統(tǒng)主要負(fù)責(zé)任務(wù)切換、任務(wù)調(diào)度、任務(wù)間以及任務(wù)與中斷服務(wù)程序之間的通信、同步、互斥、實(shí)時(shí)時(shí)鐘管理、中斷管理等。其流程圖如圖1-5所示。圖1-5多任務(wù)系統(tǒng)流程圖多任務(wù)系統(tǒng)的特點(diǎn)包括如下內(nèi)容:

(1)每個(gè)任務(wù)都是一個(gè)無(wú)限循環(huán)的程序,等待特定的輸入,從而執(zhí)行相應(yīng)的處理。

(2)這種程序模型將系統(tǒng)分成相對(duì)簡(jiǎn)單、相互合作的模塊。

(3)不同的任務(wù)共享同一個(gè)CPU和其他硬件,嵌入式操作系統(tǒng)對(duì)這些共享資源進(jìn)行管理。

(4)多個(gè)順序執(zhí)行的任務(wù)在宏觀上看是并行執(zhí)行的,每個(gè)任務(wù)都運(yùn)行在自己獨(dú)立的CPU上。

表1-1對(duì)這三種系統(tǒng)的優(yōu)、缺點(diǎn)進(jìn)行了比較。表1-1三種系統(tǒng)的比較

4.按照應(yīng)用領(lǐng)域分類

按照應(yīng)用領(lǐng)域分類,嵌入式系統(tǒng)可分為信息家電類、消費(fèi)電子類、醫(yī)療電子類、移動(dòng)終端類、通信類、汽車電子類、工業(yè)控制類、航空電子類、軍事電子類等。 1.3嵌入式系統(tǒng)的應(yīng)用領(lǐng)域

1.消費(fèi)電子領(lǐng)域

隨著技術(shù)的發(fā)展,消費(fèi)電子產(chǎn)品正向數(shù)字化、網(wǎng)絡(luò)化的方向發(fā)展。嵌入式技術(shù)和其他電子技術(shù)緊密結(jié)合,應(yīng)用到各種消費(fèi)電子產(chǎn)品中,產(chǎn)生出各種新型的產(chǎn)品,使產(chǎn)品的功能和性能都大大提高。

2.通信網(wǎng)絡(luò)領(lǐng)域

通信領(lǐng)域大量應(yīng)用嵌入式系統(tǒng),主要包括程控交換機(jī)、路由器、IP交換機(jī)和其他傳輸設(shè)備等。隨著寬帶網(wǎng)絡(luò)的發(fā)展,xDSLModem/Router等設(shè)備的數(shù)量將遠(yuǎn)遠(yuǎn)超過(guò)傳統(tǒng)的網(wǎng)絡(luò)設(shè)備。在企業(yè)和家庭網(wǎng)絡(luò)中,這些主要基于32位的嵌入式系統(tǒng)將提供更加廉價(jià)、方便、靈活的網(wǎng)絡(luò)解決方案。

3.工業(yè)控制領(lǐng)域

在工業(yè)控制領(lǐng)域,嵌入式系統(tǒng)主要應(yīng)用于各種智能儀器儀表、數(shù)控裝置、可編程控制器、分布式控制系統(tǒng)、現(xiàn)場(chǎng)總線儀表及控制系統(tǒng)、工業(yè)機(jī)器人、機(jī)電一體化設(shè)備等。

4.汽車電子領(lǐng)域

據(jù)統(tǒng)計(jì),一般家用汽車大約擁有24個(gè)以上的嵌入式微處理器,高檔汽車中大約有60個(gè)以上的嵌入式微處理器在工作。圖1-6所示為VOLVOS80汽車的CAN總線網(wǎng)絡(luò)。圖1-6VOLVOS80汽車的CAN總線網(wǎng)絡(luò)

5.醫(yī)療儀器領(lǐng)域

在醫(yī)療儀器領(lǐng)域,嵌入式系統(tǒng)主要應(yīng)用在各種醫(yī)療電子儀器中,如X光機(jī)、超聲診斷儀、計(jì)算機(jī)斷層成像系統(tǒng)、心臟起搏器、監(jiān)護(hù)儀、輔助診斷系統(tǒng)和專家系統(tǒng)等。

6.航空航天與軍事領(lǐng)域

嵌入式系統(tǒng)最早的應(yīng)用是在軍事和航空航天領(lǐng)域。目前軍事應(yīng)用的范圍繼續(xù)拓展,如各種武器控制系統(tǒng)(火炮控制、導(dǎo)彈控制、智能炸彈的制導(dǎo)引爆),坦克、艦艇、戰(zhàn)斗機(jī)等陸、海、空軍用電子裝備,雷達(dá)、電子對(duì)抗軍事通信裝備,各種野戰(zhàn)指揮作戰(zhàn)專用設(shè)備等。航空航天領(lǐng)域的應(yīng)用更是不勝枚舉,航空電子設(shè)備、衛(wèi)星、導(dǎo)航、航天測(cè)控等系統(tǒng)中到處都可以見到嵌入式系統(tǒng)這個(gè)“幕后英雄”在辛勤工作。 1.4嵌入式系統(tǒng)的發(fā)展趨勢(shì)

針對(duì)這些應(yīng)用需求,嵌入式系統(tǒng)正朝著以下趨勢(shì)進(jìn)一步發(fā)展:

(1)行業(yè)性開放的嵌入式系統(tǒng)正日趨流行,行業(yè)標(biāo)準(zhǔn)日趨完善。

(2)隨著相關(guān)技術(shù)的發(fā)展,SOC將成為應(yīng)用主流。

(3)基于Eclipse平臺(tái)的工具成為嵌入式領(lǐng)域的熱門。

(4)發(fā)展功能更加強(qiáng)大的開發(fā)工具和嵌入式操作系統(tǒng),支持復(fù)雜度越來(lái)越高的嵌入式應(yīng)用軟件的開發(fā)。

(5)面向網(wǎng)絡(luò)互聯(lián)的嵌入式系統(tǒng)成為必然趨勢(shì)。

(6)嵌入式移動(dòng)數(shù)據(jù)庫(kù)技術(shù)將從研究領(lǐng)域向應(yīng)用領(lǐng)域發(fā)展。

(7)嵌入式系統(tǒng)向新的嵌入式計(jì)算模型方向發(fā)展。

新型的嵌入式計(jì)算模型包括:

①支持自然的人機(jī)交互和互動(dòng)、圖形化、多媒體的嵌入式人機(jī)界面,使得用戶使用時(shí)操作簡(jiǎn)便、直觀、無(wú)需學(xué)習(xí)。

②支持二次開發(fā)、可編程的嵌入式系統(tǒng),例如采用嵌入式Java技術(shù)可動(dòng)態(tài)加載、升級(jí)軟件。

③支持分布式計(jì)算,通過(guò)與其他嵌入式系統(tǒng)或通用計(jì)算機(jī)系統(tǒng)進(jìn)行互聯(lián),可構(gòu)成分布式計(jì)算環(huán)境。

思考與練習(xí)題

1.什么是嵌入式系統(tǒng)?試簡(jiǎn)單列舉一些生活中常見的嵌入式系統(tǒng)的實(shí)例。

2.嵌入式系統(tǒng)具有哪些特點(diǎn)?

3.試比較嵌入式系統(tǒng)與通用PC的區(qū)別。

4.嵌入式系統(tǒng)由哪些部分組成?簡(jiǎn)單說(shuō)明各部分的功能與作用。

5.嵌入式系統(tǒng)是怎樣分類的?

6.什么是多任務(wù)系統(tǒng)?多任務(wù)系統(tǒng)的特點(diǎn)有哪些?

7.結(jié)合嵌入式系統(tǒng)的應(yīng)用,簡(jiǎn)要分析嵌入式系統(tǒng)的應(yīng)用現(xiàn)狀和發(fā)展趨勢(shì)。第2章嵌入式處理器2.1引言

2.2嵌入式處理器概述

2.3ARM處理器基礎(chǔ)

2.4ARM指令系統(tǒng)

2.5ARM程序設(shè)計(jì)基礎(chǔ)思考與練習(xí)題

2.1引言

嵌入式處理器是嵌入式系統(tǒng)最核心的部件?,F(xiàn)在幾乎所有的嵌入式系統(tǒng)設(shè)計(jì)都是基于處理器的設(shè)計(jì)。嵌入式處理器的發(fā)展歷程是多樣的,而SOC將成為嵌入式處理器的發(fā)展方向?,F(xiàn)在世界上嵌入式處理器的流行體系結(jié)構(gòu)有30多種,它們根據(jù)各自獨(dú)到的設(shè)計(jì)分別適應(yīng)于相關(guān)應(yīng)用。RISC結(jié)構(gòu)已經(jīng)被證明是嵌入式處理器最適合的結(jié)構(gòu)。ARM處理器是真正意義上的RISC結(jié)構(gòu)的處理器,同時(shí)由于ARM處理器具有處理速度快、功耗低、價(jià)格便宜等方面的優(yōu)點(diǎn),因而得到了廣泛使用。

2.2嵌入式處理器概述

2.2.1嵌入式處理器的分類

根據(jù)功能特點(diǎn),一般可以將嵌入式處理器分為4類:嵌入式微控制器(MicroControllerUnit)、嵌入式微處理器(MicroProcessorUnit)、嵌入式DSP(DigitalSignalProcessor)和嵌入式片上系統(tǒng)(SystemOnChip)。

1.嵌入式微控制器

嵌入式微控制器又稱單片機(jī),就是將整個(gè)計(jì)算機(jī)系統(tǒng)集成到一塊芯片中。從20世紀(jì)70年代末單片機(jī)出現(xiàn)到今天,這種8位的芯片在嵌入式系統(tǒng)設(shè)備中仍然有著極其廣泛的應(yīng)用,常見的有8051。嵌入式微控制器將CPU、存儲(chǔ)器(少量的RAM、ROM或兩者都有)和其他外設(shè)封裝在同一片集成電路里,因?yàn)槠淦贤庠O(shè)資源一般比較豐富,適合于控制,所以稱其為微控制器。

與嵌入式微處理器相比,微控制器的最大特點(diǎn)是單片化,體積大大減小,從而使功耗和成本降低,可靠性提高。

2.嵌入式微處理器

嵌入式微處理器是由通用計(jì)算機(jī)中的CPU演變而來(lái)的。但與計(jì)算機(jī)處理器不同的是,在實(shí)際應(yīng)用中,嵌入式系統(tǒng)是將微處理器裝配在專門設(shè)計(jì)的電路板上,只保留與嵌入式應(yīng)用緊密相關(guān)的功能硬件,這樣可以滿足嵌入式系統(tǒng)體積小、功耗低的特殊要求。

與工業(yè)控制計(jì)算機(jī)相比,嵌入式微處理器具有體積小、重量輕、成本低和可靠性高的優(yōu)點(diǎn)。目前的嵌入式微處理器主要有Am186/88、386EX、PowerPC、ARM、MIPS、Motorola68K等。

3.嵌入式DSP

嵌入式DSP是專門用于信號(hào)處理的嵌入式芯片。DSP處理器在系統(tǒng)結(jié)構(gòu)和指令算法方面進(jìn)行了特殊設(shè)計(jì),使其適合于執(zhí)行DSP算法,因而能夠?qū)﹄x散時(shí)間信號(hào)進(jìn)行極快的處理計(jì)算,提高了編譯效率和執(zhí)行速度。

4.嵌入式片上系統(tǒng)

片上系統(tǒng)SOC(SystemOnChip)是20世紀(jì)90年代后出現(xiàn)的一種新的嵌入式集成器件。在嵌入式系統(tǒng)設(shè)計(jì)從以嵌入式微處理器/DSP為核心的“集成電路”級(jí)設(shè)計(jì)不斷轉(zhuǎn)向“集成系統(tǒng)”級(jí)設(shè)計(jì)的過(guò)程中,人們提出了SOC的概念。SOC追求產(chǎn)品系統(tǒng)的最大包容,已成為提高移動(dòng)通信、網(wǎng)絡(luò)、信息家電、高速計(jì)算、多媒體應(yīng)用以及軍用電子系統(tǒng)性能的核心器件。目前嵌入式系統(tǒng)已進(jìn)入單片SOC的設(shè)計(jì)階段,并開始逐步進(jìn)入實(shí)用化、規(guī)范化階段,集成電路已進(jìn)入SOC的設(shè)計(jì)流程。2.2.2典型的嵌入式處理器

1.ARM處理器

英國(guó)先進(jìn)RISC機(jī)器公司(AdvancedRISCMachines,ARM)是全球領(lǐng)先的16/32位RISC微處理器知識(shí)產(chǎn)權(quán)(IntellectualProperty,IP)供應(yīng)商。ARM公司是專門從事基于RISC技術(shù)芯片設(shè)計(jì)開發(fā)的公司,作為知識(shí)產(chǎn)權(quán)供應(yīng)商,本身不直接從事芯片生產(chǎn),而是依靠轉(zhuǎn)讓微處理器、外圍和系統(tǒng)芯片的設(shè)計(jì)技術(shù)給合作公司,由合作公司使用這些技術(shù)來(lái)生產(chǎn)各具特色的芯片。目前,ARM已成為移動(dòng)通信、手持設(shè)備、多媒體數(shù)字消費(fèi)等嵌入式解決方案事實(shí)上的標(biāo)準(zhǔn)。ARM公司被半導(dǎo)體及電子業(yè)界評(píng)為過(guò)去30年全球最有影響力的10家公司之一?;贏RM核嵌入式芯片的典型應(yīng)用主要有:

●汽車產(chǎn)品,如車載娛樂系統(tǒng)、車載安全裝置、自主導(dǎo)航系統(tǒng)等。

●消費(fèi)娛樂產(chǎn)品,如數(shù)字視頻、Internet終端、交互電視、機(jī)頂盒、數(shù)字音頻播放器、數(shù)字音樂板、游戲機(jī)等。

●數(shù)字影像產(chǎn)品,如信息家電、數(shù)碼相機(jī)、數(shù)字系統(tǒng)打印機(jī)等。

●工業(yè)控制產(chǎn)品,如機(jī)器人控制、工程機(jī)械、冶金控制、化工生產(chǎn)控制等?!窬W(wǎng)絡(luò)產(chǎn)品,如網(wǎng)絡(luò)計(jì)算機(jī)、PCI網(wǎng)絡(luò)接口卡、ADSL調(diào)制解調(diào)器、路由器等。

●安全產(chǎn)品,如電子付費(fèi)終端、銀行系統(tǒng)付費(fèi)終端、智能卡、SIM卡等。

●存儲(chǔ)產(chǎn)品,如PCI到Ultra2SCSI64位RAID控制器、硬盤控制器等。

●無(wú)線產(chǎn)品,如手機(jī)、PDA,目前85%以上的手機(jī)都基于ARM核。

2.PowerPC處理器

PowerPC處理器品種很多,既有通用的處理器,又有嵌入式控制器和內(nèi)核。PowerPC的特點(diǎn)是可伸縮性好、方便靈活,從高端的工作站、服務(wù)器到桌面計(jì)算機(jī)系統(tǒng),從消費(fèi)電子到大型通信設(shè)備等各個(gè)方面,其應(yīng)用范圍非常廣泛。

目前PowerPC處理器的主頻范圍為25~700MHz,它們的能量消耗、大小、整合程度、價(jià)格等差別懸殊,主要產(chǎn)品的芯片型號(hào)有PowerPC750、PowerPC405和PowerPC440。

3.MIPS處理器

MIPS是MicroprocessorwithoutInterlockedPipelineStages的縮寫,即“無(wú)內(nèi)部互鎖流水級(jí)的微處理器”,它是由MIPS技術(shù)公司開發(fā)的。MIPS技術(shù)公司是一家設(shè)計(jì)制造高性能、高檔次的嵌入式32位和64位處理器的廠商,在RISC處理器方面占有重要地位。MIPS計(jì)算機(jī)公司成立于1984年。1992年該公司被SGI收購(gòu)。到了1998年,MIPS脫離SGI,成為MIPS技術(shù)公司。

4.Sparc處理器

Sparc處理器是由著名的Sun公司自行研發(fā)的微處理器芯片。根據(jù)Sun公司的發(fā)展規(guī)劃,在64位UltraSparc處理器方面,主要有3個(gè)系列。首先是可擴(kuò)展的s系列,主要用于高性能、易擴(kuò)展的多處理器系統(tǒng)。其次是集成式i系列,它將多種系統(tǒng)功能集成在一個(gè)處理器上,為單處理器系統(tǒng)提供了更高的效益。已經(jīng)推出的UltraSparcⅢi系列的頻率達(dá)到700MHz,未來(lái)的UltraSparcⅣi的頻率將達(dá)到1GHz。最后是嵌入式e系列,它為用戶提供理想的性能價(jià)格比,其嵌入式應(yīng)用包括瘦客戶機(jī)、電纜調(diào)制解調(diào)器和網(wǎng)絡(luò)接口等。Sun公司還將推出主頻分別為300MHz、400MHz、500MHz等版本的處理器。

5.龍芯處理器

龍芯是中科院計(jì)算所研發(fā)的具有自主知識(shí)產(chǎn)權(quán)的中央處理器(CPU)。從2001年起,龍芯課題組在處理器的研制上取得重大成果,先后研制出龍芯1號(hào)、龍芯2號(hào)和龍芯2號(hào)增強(qiáng)型處理器,目前正進(jìn)行多核龍芯3號(hào)的研制。“龍芯”的誕生被業(yè)內(nèi)人士譽(yù)為民族科技產(chǎn)業(yè)化道路上的一個(gè)里程碑。商品化的“龍芯”CPU的研制成功標(biāo)志著我國(guó)已打破國(guó)外公司對(duì)CPU的壟斷。

2.3ARM處理器基礎(chǔ)

2.3.1ARM簡(jiǎn)介

ARM處理器核因其卓越的性能和顯著優(yōu)點(diǎn),已成為高性能、低功耗、低成本嵌入式處理器核的代名詞,得到了眾多半導(dǎo)體廠家和整機(jī)廠商的大力支持。世界上幾乎所有的半導(dǎo)體公司都獲得了ARM公司的授權(quán),并結(jié)合自身的產(chǎn)品發(fā)展,開發(fā)出具有自己特色的、基于ARM核的嵌入式SOC系統(tǒng)芯片。

1985年4月26日,第一個(gè)ARM原型在英國(guó)劍橋的Acorn計(jì)算機(jī)有限公司誕生,并成功地運(yùn)行了測(cè)試程序。

20世紀(jì)80年代后期,ARM很快開發(fā)成Acorn的臺(tái)式機(jī)產(chǎn)品,奠定了英國(guó)教育界計(jì)算機(jī)技術(shù)的基礎(chǔ)。

1990年,為廣泛推廣ARM技術(shù)而成立了AdvancedRISCMachinesLimited(簡(jiǎn)稱ARMLimited,即ARM公司),新公司由蘋果電腦、Acorn電腦集團(tuán)和VLSIThechnology合資組建。

20世紀(jì)90年代,在ARM公司的精心經(jīng)營(yíng)下,優(yōu)秀的體系結(jié)構(gòu)設(shè)計(jì)以及VLSI器件實(shí)現(xiàn)的技術(shù)上的特點(diǎn)使得ARM處理器可與一些復(fù)雜得多的微處理器相抗衡,從而使其應(yīng)用擴(kuò)展到世界范圍,特別是占據(jù)了低功耗、低成本和高性能的嵌入式系統(tǒng)應(yīng)用領(lǐng)域的領(lǐng)先地位。采用RISC架構(gòu)的ARM微處理器一般具有如下特點(diǎn):

(1)體積小、低功耗、低成本、高性能。

(2)支持Thumb(16位)/ARM(32位)雙指令集,能很好地兼容8位/16位器件。

(3)大量使用寄存器,指令執(zhí)行速度更快。

(4)大多數(shù)數(shù)據(jù)操作都在寄存器中完成,通過(guò)Load/Store結(jié)構(gòu)在內(nèi)存和寄存器之間傳遞數(shù)據(jù)。

(5)尋址方式靈活簡(jiǎn)單,執(zhí)行效率高。

(6)指令長(zhǎng)度固定。除此之外,ARM系列還采用了一些特別的技術(shù),在保證高性能的同時(shí)盡量減小芯片體積、降低芯片功耗。這些技術(shù)包括:

(1)在同一條數(shù)據(jù)處理指令中包含算術(shù)邏輯處理單元,以進(jìn)行算術(shù)處理和移位處理。

(2)使用地址自動(dòng)增加(減少)來(lái)優(yōu)化程序中的循環(huán)處理。

(3)?使用Load/Store指令批量傳輸數(shù)據(jù),從而提高數(shù)據(jù)傳輸?shù)男省?/p>

(4)所有指令都可以根據(jù)前面的指令執(zhí)行結(jié)果決定是否執(zhí)行,以提高指令執(zhí)行的效率。在過(guò)去的10年中,ARM技術(shù)的突出成果表現(xiàn)在以下方面:

(1)引入新穎的“Thumb”壓縮指令格式,降低了小型系統(tǒng)的成本和電源消耗。

(2)?ARM9、ARM10、StrongARM和ARM11等系列處理器的開發(fā),顯著提高了ARM的性能,使得ARM技術(shù)在高端數(shù)字音頻、視頻處理等多媒體產(chǎn)品中的應(yīng)用更加廣泛。

(3)先進(jìn)的軟件開發(fā)和調(diào)試環(huán)境加快了用戶產(chǎn)品的開發(fā)進(jìn)程。

(4)廣泛的產(chǎn)業(yè)聯(lián)盟使得基于ARM的嵌入式應(yīng)用領(lǐng)域更加廣闊。

(5)嵌入在復(fù)雜SOC中、基于ARM核的調(diào)試系統(tǒng)代表著當(dāng)今片上調(diào)試技術(shù)的前沿。2.3.2ARM處理器系列

ARM微處理器目前包括下面幾個(gè)系列:

●?ARM7系列。

●?ARM9系列。

●?ARM9E系列。

●?ARM10系列。

●?SecurCore系列。

●?Intel的StrongARM。

●?Intel的Xscale。

●?ARM11處理器。

1.ARM7微處理器系列

ARM7微處理器系列具有如下特點(diǎn):

(1)具有嵌入式ICE-RT邏輯,調(diào)試開發(fā)方便。

(2)極低的功耗,適合對(duì)功耗要求較高的應(yīng)用,如便攜式產(chǎn)品。

(3)能夠提供0.9MIPS/MHz的三級(jí)流水線結(jié)構(gòu)。

(4)代碼密度高并兼容16位的Thumb指令集。

(5)對(duì)操作系統(tǒng)的支持廣泛,包括WindowsCE、Linux、PalmOS等。

(6)指令系統(tǒng)與ARM9系列、ARM9E系列和ARM10系列兼容,便于用戶的產(chǎn)品升級(jí)換代。

(7)主頻最高可達(dá)130MHz,高速的運(yùn)算處理能力能勝任絕大多數(shù)的復(fù)雜應(yīng)用。

ARM7系列微處理器的主要應(yīng)用領(lǐng)域?yàn)楣I(yè)控制、Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備、移動(dòng)電話等多種多媒體和嵌入式應(yīng)用。

ARM7系列微處理器的組成如圖2-1所示。圖2-1ARM7系列微處理器的組成

2.ARM9微處理器系列

ARM9系列微處理器是在高性能和低功耗特性方面最佳的硬件宏單元。ARM9將流水線級(jí)數(shù)從ARM7的3級(jí)增加到5級(jí),并使用了指令與數(shù)據(jù)存儲(chǔ)器分開的哈佛(Harvard)體系結(jié)構(gòu)。在相同工藝條件下,ARM9TDMI的性能近似為ARM7TDMI的2倍。

ARM9主要具有以下特點(diǎn):

(1)?5級(jí)整數(shù)流水線,指令執(zhí)行效率更高。

(2)提供1.1MIPS/MHz的哈佛結(jié)構(gòu)。

(3)支持32位ARM指令集和16位Thumb指令集。

(4)支持32位的高速AMBA總線接口。

(5)全性能的MMU,支持WindowsCE、Linux、PalmOS等多種主流嵌入式操作系統(tǒng)。

(6)?MPU支持實(shí)時(shí)操作系統(tǒng)。

(7)支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。

ARM9系列微處理器主要應(yīng)用于引擎管理、無(wú)線設(shè)備、儀器儀表、安全系統(tǒng)、機(jī)頂盒、高端打印機(jī)、PDA、網(wǎng)絡(luò)電腦、數(shù)字照相機(jī)和數(shù)字?jǐn)z像機(jī)等。

ARM9系列微處理器的組成如圖2-2所示。圖2-2ARM9系列微處理器的組成

3.ARM9E微處理器系列

ARM9E系列微處理器為可綜合處理器,?使用單一的處理器內(nèi)核,提供了微控制器、DSP、Java應(yīng)用系統(tǒng)的解決方案,極大地減少了芯片的面積和系統(tǒng)的復(fù)雜程度。ARM9E系列微處理器提供了增強(qiáng)的DSP處理能力,很適合于那些需要同時(shí)使用DSP和微控制器的應(yīng)用場(chǎng)合。

ARM9E系列微處理器的主要特點(diǎn)如下:

(1)支持DSP指令集,適合于需要高速數(shù)字信號(hào)處理的場(chǎng)合。

(2)提供1.1MIPS/MHz的5級(jí)整數(shù)流水線和哈佛結(jié)構(gòu),指令執(zhí)行效率更高。

(3)支持32位ARM指令集和16位Thumb指令集。

(4)支持32位的高速AMBA總線接口。

(5)支持VFP9浮點(diǎn)運(yùn)算協(xié)處理器。

(6)全性能的MMU,支持WindowsCE、Linux、PalmOS等多種主流嵌入式操作系統(tǒng)。

(7)?MPU支持實(shí)時(shí)操作系統(tǒng)。

(8)支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。

(9)主頻最高可達(dá)300MHz。

ARM9E系列微處理器的組成如圖2-3所示。圖2-3ARM9E系列微處理器的組成

4.ARM10微處理器系列

ARM10系列微處理器屬于ARM處理器核中的高端處理器核,?具有高性能、低功耗的特點(diǎn)。由于采用了新的體系結(jié)構(gòu),與同等的ARM9器件相比較,在同樣的時(shí)鐘頻率下,ARM10的性能提高了近50%。同時(shí),ARM10系列微處理器采用了兩種先進(jìn)的節(jié)能方式,使其功耗極低。

ARM10系列微處理器的主要特點(diǎn)如下:

(1)支持DSP指令集,適合于需要高速數(shù)字信號(hào)處理的場(chǎng)合。

(2)?6級(jí)整數(shù)流水線,指令執(zhí)行效率更高。

(3)支持32位ARM指令集和16位Thumb指令集。

(4)支持32位的高速AMBA總線接口。

(5)支持VFP10浮點(diǎn)運(yùn)算協(xié)處理器。

(6)全性能的MMU,支持WindowsCE、Linux、PalmOS等多種主流嵌入式操作系統(tǒng)。

(7)支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。

(8)主頻最高可達(dá)400MHz。

(9)內(nèi)嵌并行讀/寫操作部件。

ARM10系列微處理器的組成如圖2-4所示。圖2-4ARM10系列微處理器的組成

5.SecurCore微處理器系列

SecurCore系列微處理器專為安全需要而設(shè)計(jì),提供了完善的32位RISC技術(shù)的安全解決方案,具有特定的抗篡改(resisttampering)和反工程(reverseengineering)特性。

SecurCore系列微處理器除了具有ARM體系結(jié)構(gòu)的各種主要特點(diǎn)外,在系統(tǒng)安全方面還具有如下特點(diǎn):

(1)帶有靈活的保護(hù)單元,以確保操作系統(tǒng)和應(yīng)用數(shù)據(jù)的安全。

(2)采用軟內(nèi)核技術(shù),防止外部對(duì)其進(jìn)行掃描探測(cè)。

(3)可集成用戶自己的安全特性和其他協(xié)處理器。

6.StrongARM微處理器系列

1995年,ARM、Apple和DEC公司聯(lián)合聲明將開發(fā)一種應(yīng)用于PDA的高性能、低功耗、基于ARM體系結(jié)構(gòu)的StrongARM微處理器。當(dāng)時(shí)Digital公司的Alpha微處理器是一個(gè)工作頻率非常高的64位RISC微處理器。1998年Intel公司接管Digital半導(dǎo)體公司到現(xiàn)在,采用了同樣的技術(shù),并且進(jìn)一步考慮了功耗效率,設(shè)計(jì)了StrongARMSA-110,使其成為高性能嵌入式微處理器設(shè)計(jì)的一個(gè)里程碑。StrongARMSA-110處理器是采用ARM體系結(jié)構(gòu)、高度集成的32位RISC微處理器,它融合了Intel公司的設(shè)計(jì)和處理技術(shù)以及ARM體系結(jié)構(gòu)的電源效率,在軟件上兼容ARMv4體系結(jié)構(gòu),同時(shí)又具有Intel的技術(shù)優(yōu)點(diǎn)。

StrongARM的主要特點(diǎn)有:

(1)具有寄存器前推的5級(jí)流水線。

(2)除了64位乘法、多寄存器傳送和存儲(chǔ)器/寄存器交換指令外,其他所有普通指令均是單周期指令。

(3)低功耗的偽靜態(tài)操作。

(4)不論處理器的時(shí)鐘頻率有多高,乘法器每個(gè)周期均計(jì)算12位,用1~3個(gè)時(shí)鐘周期計(jì)算兩個(gè)3位操作數(shù)的乘法。對(duì)于數(shù)字信號(hào)處理性能要求很高的應(yīng)用來(lái)說(shuō),StrongARM的高速乘法器有很大的潛力。

(5)使用系統(tǒng)控制協(xié)處理器來(lái)管理片上MMU和Cache資源,并且集成了JTAG邊界掃描測(cè)試電路以支持印制板連接測(cè)試。

7.Xscale處理器

IntelXscale處理器基于ARMv5TE體系結(jié)構(gòu),是一款全性能、高性價(jià)比、低功耗的處理器。它提供了從手持互聯(lián)網(wǎng)設(shè)備到互聯(lián)網(wǎng)基礎(chǔ)設(shè)施產(chǎn)品的全面解決方案,支持16位的Thumb指令和DSP指令集?;赬scale技術(shù)開發(fā)的系列微處理器,由于超低功率與高性能的組合使其適用于廣泛的互聯(lián)網(wǎng)接入設(shè)備,在因特網(wǎng)的各個(gè)應(yīng)用環(huán)節(jié)中表現(xiàn)出了令人滿意的處理性能。

Xscale的主要特點(diǎn)有:

(1)數(shù)據(jù)Cache的容量從8KB增加到32KB。

(2)指令Cache的容量從16KB增加到32KB。

(3)微小數(shù)據(jù)Cache的容量從512B增加到2KB。

(4)為了提高指令的執(zhí)行速度,超級(jí)流水線結(jié)構(gòu)由5級(jí)增至7級(jí)。

(5)新增乘法/加法器MAC和特定的DSP型協(xié)處理器CP0,以提高對(duì)多媒體技術(shù)的支持。

(6)動(dòng)態(tài)電源管理,使時(shí)鐘頻率可達(dá)1GHz,功耗低至1.6W,并能達(dá)到1200MIPS。

8.ARM11處理器

ARM11系列微處理器是ARM公司近年推出的新一代RISC處理器,它是ARM新指令架構(gòu)——ARMv6的第一代設(shè)計(jì)實(shí)現(xiàn)。該系列主要有ARM1136J、ARM1156T2和ARM1176JZ三個(gè)內(nèi)核型號(hào),分別針對(duì)不同應(yīng)用領(lǐng)域。

ARM11處理器系列可以在使用130nm代工廠技術(shù)、小至2.2mm?×?2mm的芯片面積和低至0.24mW/MHz的前提下達(dá)到高達(dá)500MHz的性能表現(xiàn)。主要的ARM11處理器有ARM1136JF-S、ARM1156T2F-S、ARM1176JZF-S、ARM11MCORE等多種。2.3.3ARM處理器體系結(jié)構(gòu)

1.ARM體系結(jié)構(gòu)的基本版本

為了精確表述在每個(gè)ARM實(shí)現(xiàn)中所使用的指令集,迄今為止,人們定義了6種主要版本,分別用版本號(hào)1~6表示。這6種版本的ARM指令集體系結(jié)構(gòu)如下。

1)版本v1

版本v1包括下列指令:

(1)基本的數(shù)據(jù)處理指令(不包括乘法指令)。

(2)基于字節(jié)、字和半字的加載/存儲(chǔ)(Load/Store)指令。

(3)分支(Branch)指令,包括設(shè)計(jì)用于子程序調(diào)用的分支與鏈接指令。

(4)軟件中斷指令(SWI),用于進(jìn)行操作系統(tǒng)調(diào)用。

版本v1現(xiàn)已廢棄不用。

2)版本v2

以ARMv2為核的Acorn公司的Archimedes(阿基米德)和A3000批量銷售,它使用了ARM公司現(xiàn)在稱為ARM體系結(jié)構(gòu)版本v2的體系結(jié)構(gòu)。版本v2仍然只支持26位的地址空間,但包含了對(duì)32位結(jié)果的乘法指令和協(xié)處理器的支持。

版本v2(2a)在v1的基礎(chǔ)上進(jìn)行了以下擴(kuò)展:

(1)增加了乘法和乘加指令。

(2)增加了支持協(xié)處理器的指令。

(3)對(duì)于快速中斷(FIQ)模式,提供了兩個(gè)以上的影子寄存器。

(4)增加了SWP指令和SWPB指令。

版本v2現(xiàn)已廢棄不用。

3)版本v3

版本v3較以前的版本發(fā)生了如下變化:

(1)地址空間擴(kuò)展到32位,除了3G外的其他版本均向前兼容,支持26位的地址空間。

(2)分開的當(dāng)前程序狀態(tài)寄存器和程序狀態(tài)保存寄存器。

(3)增加了兩種異常模式,使操作系統(tǒng)代碼可以方便地使用數(shù)據(jù)來(lái)訪問中止異常、指令預(yù)取中止異常和未定義指令異常。

(4)增加了兩個(gè)指令(MRS和MSR),以允許對(duì)新增的CPSR和SPSR寄存器進(jìn)行讀/寫。

(5)修改了用于從異常(exception)返回的指令的功能。

4)版本v4

與版本v3相比,版本v4作了以下擴(kuò)展:

(1)增加了有符號(hào)、無(wú)符號(hào)半字和有符號(hào)字節(jié)的Load和Store指令。

(2)增加了T變種,處理器可以工作于Thumb狀態(tài),在該狀態(tài)下的指令集是16位的Thumb指令集。

(3)增加了處理器的特權(quán)模式。在該模式下,使用的是用戶模式寄存器。

版本v4不再?gòu)?qiáng)制要求與26位地址空間兼容,而且還清楚地指明了哪些指令將會(huì)引起未定義指令異常。

5)版本v5

版本v5主要有如下擴(kuò)展:

(1)提高了T變種中ARM/Thumb之間切換的效率。

(2)讓非T變種和T變種一樣,使用相同的代碼生成技術(shù)。

(3)增加了一個(gè)計(jì)數(shù)前導(dǎo)零(CountLeadingZeroes,CLZ)指令,該指令允許更有效的整數(shù)除法和中斷優(yōu)先程序。

(4)增加了軟件斷點(diǎn)(BKPT)指令。

(5)為協(xié)處理器設(shè)計(jì)提供了更多的可選擇的指令。

(6)對(duì)由乘法指令如何設(shè)置條件碼標(biāo)志位進(jìn)行了嚴(yán)密的定義。

6)版本v6

ARM體系結(jié)構(gòu)版本v6是2001年發(fā)布的。新架構(gòu)版本v6在降低耗電量的同時(shí),強(qiáng)化了圖形處理性能,并通過(guò)追加能夠有效進(jìn)行多媒體處理的SIMD功能,將其對(duì)語(yǔ)音及圖像的處理功能提高到了原機(jī)型的4倍。版本v6首先在2002年春季發(fā)布的ARM11處理器中使用。除此之外,版本v6還支持多種微處理器內(nèi)核。

表2-1總結(jié)了每個(gè)核使用的ARM體系結(jié)構(gòu)的版本。表2-1ARM體系結(jié)構(gòu)的版本

2.ARM體系結(jié)構(gòu)的演變

1)?Thumb指令集(T變種)

Thumb指令集是ARM指令集的重編碼子集。Thumb指令(16位)的長(zhǎng)度是ARM指令(32位)長(zhǎng)度的一半,因此使用Thumb指令集可得到比ARM指令集更高的代碼密度,這對(duì)于降低產(chǎn)品成本是非常有意義的。

與ARM指令集相比,Thumb指令集具有以下兩個(gè)限制:

(1)對(duì)同樣的工作來(lái)說(shuō),Thumb代碼通常使用更多的指令。因此,為了充分發(fā)揮時(shí)間關(guān)鍵的代碼的性能,最好采用ARM代碼。

(2)?Thumb指令集不包括異常處理所需的指令。因此,至少頂級(jí)異常處理需要使用ARM代碼。與Thumb版本v1相比,版本v2具有如下特點(diǎn):

(1)通過(guò)增加新的指令和對(duì)已有指令的修改,提高了ARM指令和Thumb指令混合使用時(shí)的效率。

(2)增加了軟件中斷指令,更嚴(yán)格地定義了Thumb乘法指令對(duì)條件碼標(biāo)志位的影響。

2)長(zhǎng)乘法指令(M變種)

ARM指令集的長(zhǎng)乘法指令是一種生成64位相乘結(jié)果的乘法指令。與乘法指令相比,M變種增加了以下兩條指令:一條指令完成32位整數(shù)乘以32位整數(shù),生成64位整數(shù)的長(zhǎng)乘操作(即32?×?32→64);另一條指令完成32位整數(shù)乘以32位整數(shù),然后再加上一個(gè)32位整數(shù),生成64位整數(shù)的長(zhǎng)乘加操作(即32?×?32?+?32→64)。

3)增強(qiáng)型DSP指令(E變種)

它們包括:

(1)幾條新的完成16位數(shù)據(jù)乘法和乘加操作的指令。

(2)實(shí)現(xiàn)飽和的帶符號(hào)算術(shù)運(yùn)算的加法和減法指令。飽和的帶符號(hào)算術(shù)運(yùn)算的加法和減法是整數(shù)算法的一種形式。這種算法在加減法操作溢出時(shí),結(jié)果并不進(jìn)行卷繞(WrappingAround),而是使用最大的整數(shù)或最小的負(fù)數(shù)來(lái)表示。

(3)進(jìn)行雙字?jǐn)?shù)據(jù)操作的指令,包括加載寄存器指令LDRD、存儲(chǔ)寄存器指令STRD和協(xié)處理器寄存器傳送指令MCRR與MRRC。

(4)?Cache預(yù)加載指令PLD。

4)?Java加速器Jazelle(J變種)

ARM的Jazelle技術(shù)將Java語(yǔ)言的優(yōu)勢(shì)和先進(jìn)的32位RISC芯片完美地結(jié)合在了一起。Jazelle技術(shù)提供了Java加速功能,使得Java代碼的運(yùn)行速度比普通Java虛擬機(jī)提高了8倍,而功耗卻降低了80%。

Jazelle技術(shù)允許Java應(yīng)用程序、已經(jīng)建立好的操作系統(tǒng)和中間件以及其他應(yīng)用程序在一個(gè)單獨(dú)的處理器上同時(shí)運(yùn)行。這樣使得一些必須用到協(xié)處理器和雙處理器的場(chǎng)合可以使用單處理器來(lái)代替,在提供高性能的同時(shí)保證低功耗和低成本。

J變種首先在ARM體系版本vTEJ中使用,用字符J表示J變種。

5)?ARM媒體功能擴(kuò)展(SIMD變種)

其主要特點(diǎn)包括:

(1)將處理器的音頻和視頻處理性能提高了2~4倍。

(2)可同時(shí)進(jìn)行2個(gè)16位操作數(shù)或4個(gè)8位操作數(shù)的運(yùn)算。

(3)提供了小數(shù)算術(shù)運(yùn)算。

(4)用戶可自定義飽和運(yùn)算的模式。

(5)可以進(jìn)行2個(gè)16位操作數(shù)的乘加/乘減運(yùn)算。

(6)?32位乘以32位的小數(shù)乘加運(yùn)算。

(7)同時(shí)8位/16位選擇操作。

ARM的SIMD變種主要應(yīng)用在以下領(lǐng)域:

●?Internet應(yīng)用系統(tǒng)。

●?流式媒體應(yīng)用系統(tǒng)。

●?MPEG4編碼/解碼系統(tǒng)。

●?語(yǔ)音和手寫輸入識(shí)別。

●?FFT處理。

●?復(fù)雜的算術(shù)運(yùn)算。

●?Viterbi處理。

3.ARM/Thumb體系結(jié)構(gòu)版本命名

為了精確命名版本和ARM/Thumb體系版本的變種,將下面的字符串連接起來(lái)使用:

(1)基本字符串ARMv。

(2)?ARM指令集的版本號(hào),目前是1~6的數(shù)字字符。

(3)表示變種的字符(除了M變種)。在ARM體系版本v4及以后的版本中,M變種是系統(tǒng)的標(biāo)準(zhǔn)配置,因而字符M通常不單獨(dú)列出。

(4)使用字符x表示排除某種功能。

ARM/Thumb體系版本的名稱及其含義是不斷發(fā)展變化的,最新含義可查閱相關(guān)的ARM資料。表2-2列出了目前ARM/Thumb體系版本的標(biāo)準(zhǔn)名稱,這些名稱提供了描述由ARM處理器實(shí)現(xiàn)精確指令集的最簡(jiǎn)短的方法。表2-2目前有效的ARM/Thumb體系版本2.3.4ARM處理器應(yīng)用選型

1.ARM微處理器內(nèi)核的選擇

ARM微處理器包含一系列的內(nèi)核結(jié)構(gòu),以適應(yīng)不同的應(yīng)用領(lǐng)域,用戶如果希望使用WinCE或標(biāo)準(zhǔn)Linux等操作系統(tǒng)來(lái)減少軟件開發(fā)時(shí)間,就需要選擇ARM7?20T以上帶有MMU(MemoryManagementUnit)功能的ARM芯片。ARM7?20T、ARM9?20T、ARM9?22T、ARM9?46T、StrongARM都帶有MMU功能,而ARM7?TDMI則沒有MMU,不支持WindowsCE和標(biāo)準(zhǔn)Linux,但目前有μC/OS等不需要MMU支持的操作系統(tǒng)可運(yùn)行于ARM7?TDMI硬件平臺(tái)之上。事實(shí)上,μC/OS已經(jīng)成功移植到多種不帶MMU的微處理器平臺(tái)上,并在穩(wěn)定性和其他方面都表現(xiàn)尚佳。

2.系統(tǒng)的工作頻率

系統(tǒng)的工作頻率在很大程度上決定了ARM微處理器的處理能力。ARM7系列微處理器的典型處理速度為0.9MIPS/MHz,常見的ARM7芯片系統(tǒng)主時(shí)鐘為20~133MHz,ARM9系列微處理器的典型處理速度為1.1MIPS/MHz,常見的ARM9的系統(tǒng)主時(shí)鐘頻率為100~233MHz,ARM10最高可以達(dá)到700?MHz。不同芯片對(duì)時(shí)鐘的處理不同,有的芯片只需要一個(gè)主時(shí)鐘頻率,有的芯片內(nèi)部的時(shí)鐘控制器可以分別為ARM核和USB、UART、DSP、音頻等功能部件提供不同頻率的時(shí)鐘。

3.芯片內(nèi)存儲(chǔ)器的容量

大多數(shù)ARM微處理器的片內(nèi)存儲(chǔ)器的容量都不太大,需要用戶在設(shè)計(jì)系統(tǒng)時(shí)外擴(kuò)存儲(chǔ)器,但也有部分芯片具有相對(duì)較大的片內(nèi)存儲(chǔ)空間,如ATMEL的AT91F40162就具有高達(dá)2MB的片內(nèi)程序存儲(chǔ)空間。用戶在設(shè)計(jì)時(shí)可考慮選用這種類型,以簡(jiǎn)化系統(tǒng)的設(shè)計(jì)。

4.片內(nèi)外圍電路的選擇

除ARM微處理器核以外,幾乎所有的ARM芯片均根據(jù)各自不同的應(yīng)用領(lǐng)域,擴(kuò)展了相關(guān)的功能模塊,并集成在芯片之中,我們稱之為片內(nèi)外圍電路,如USB接口、IIS接口、LCD控制器、鍵盤接口、RTC、ADC和DAC、DSP協(xié)處理器等。設(shè)計(jì)者應(yīng)分析系統(tǒng)的需求,盡可能采用片內(nèi)外圍電路完成所需的功能,這樣既可簡(jiǎn)化系統(tǒng)的設(shè)計(jì),又可提高系統(tǒng)的可靠性。 2.4ARM指令系統(tǒng)

2.4.1ARM編程模型

1.流水線

流水線技術(shù)是現(xiàn)代微處理器普遍采用的一種技術(shù),它可以使得幾條指令并行執(zhí)行,因此可以大大提高處理器的運(yùn)行效率。下面對(duì)ARM7的三級(jí)流水線作簡(jiǎn)要介紹。

三級(jí)流水線分為以下三級(jí):

(1)取指:從程序存儲(chǔ)器中讀取指令,放入流水線中。

(2)譯碼:操作碼和操作數(shù)被譯碼,決定執(zhí)行什么功能,為下一個(gè)時(shí)鐘周期準(zhǔn)備數(shù)據(jù)路徑所需要的控制信號(hào)。

(3)執(zhí)行:執(zhí)行已譯碼的指令。具體過(guò)程是,指令進(jìn)入數(shù)據(jù)路徑,寄存器堆被讀取,操作數(shù)被移位,ALU進(jìn)行相應(yīng)的運(yùn)算,將結(jié)果寫到目的寄存器,同時(shí)ALU運(yùn)算的結(jié)果還會(huì)根據(jù)指令的要求改變寄存器的條件位。

在正常情況下,每條指令都被劃分成3個(gè)時(shí)鐘周期來(lái)完成,即取指、譯碼和執(zhí)行。但對(duì)于流水線來(lái)講,可以使得每個(gè)時(shí)鐘周期完成一條指令,即每個(gè)周期流水線都有一條指令的吞吐量(Throughput)。通常將這種情況稱為單周期指令的三級(jí)流水線操作,如圖2-5所示。圖2-5ARM單周期指令的多級(jí)流水線操作然而并不是在所有情況下都能保持一個(gè)周期一條指令的完成率。首先遇到的一種情況就是多周期指令進(jìn)入流水線,這將造成流水線間斷。

下面以圖2-6所示的例子來(lái)說(shuō)明。圖2-6ARM多周期指令的多級(jí)流水線操作分支指令是造成流水線延時(shí)的另一種情況。下面以圖2-7所示的例子來(lái)說(shuō)明。圖2-7ARM分支指令的流水線操作

2.?dāng)?shù)據(jù)類型

ARM處理器支持以下數(shù)據(jù)類型:

●?Byte:字節(jié),8位。

●?Halfword:半字,16位(半字必須與2字節(jié)邊界對(duì)準(zhǔn))。

●?Word:字,32位(字必須與4字節(jié)邊界對(duì)準(zhǔn))。

這些類型的數(shù)據(jù)在存儲(chǔ)器中的組織如圖2-8所示。圖2-8數(shù)據(jù)存儲(chǔ)圖

3.處理器模式

ARM體系結(jié)構(gòu)支持7種處理器模式,如表2-3所示。表2-3ARM處理器模式

4.處理器工作狀態(tài)

ARM處理器具有兩種特殊的工作狀態(tài):

(1)?ARM狀態(tài):32位,執(zhí)行字對(duì)準(zhǔn)的ARM指令。

(2)?Thumb狀態(tài):16位,執(zhí)行半字對(duì)準(zhǔn)的Thumb指令。

ARM處理器可以在兩種工作狀態(tài)之間切換:

Thumb狀態(tài):當(dāng)操作數(shù)寄存器的狀態(tài)位?[0]?為1時(shí),執(zhí)行BX指令將進(jìn)入Thumb狀態(tài)。如果ARM處理器在Thumb狀態(tài)進(jìn)入異常,則異常處理返回時(shí),自動(dòng)切換到Thumb狀態(tài)。

ARM狀態(tài):當(dāng)操作數(shù)寄存器的狀態(tài)位?[0]?為0時(shí),執(zhí)行BX指令將進(jìn)入ARM狀態(tài)。當(dāng)ARM處理器進(jìn)行異常處理時(shí),如果把PC指針放入異常模式鏈接寄存器中,則程序從異常向量地址開始執(zhí)行,也可以使處理器進(jìn)入ARM狀態(tài)。

5.寄存器組織

ARM處理器共有37個(gè)寄存器:31個(gè)通用寄存器,32位,含程序計(jì)數(shù)器PC;6個(gè)狀態(tài)寄存器,32位,只使用了其中的12位。

雖然這些寄存器都參與指令的執(zhí)行,但在指令執(zhí)行前后只有可見寄存器的值才具有意義。因此,我們僅關(guān)注ARM處理器的可見寄存器,如圖2-9所示。圖2-9ARM狀態(tài)下的寄存器組織當(dāng)編寫用戶程序時(shí),37個(gè)寄存器中只有通用寄存器r0~r14、程序計(jì)數(shù)器PC(r15)和當(dāng)前程序狀態(tài)寄存器(CPSR)需要考慮,其余寄存器僅用于系統(tǒng)級(jí)編程和異常處理(如中斷)。

(1)不分組寄存器r0~r7。不分組意味著在所有處理器模式下,r0~r7都可被同樣訪問,沒有體系結(jié)構(gòu)所隱含的特殊用途。

(2)分組寄存器r8~r14。分組意味著r8~r14的訪問與當(dāng)前處理器的模式相關(guān)。如果要訪問r8~r14,而不依賴于當(dāng)前處理器的模式,就必須使用規(guī)定的寄存器名稱。名稱的形式為:r8_<mode>~r14_<mode>。從ARM寄存器組織的圖中可以看出r8~r12各有兩組物理寄存器:一組為FIQ模式,另一組為FIQ以外的模式。寄存器r8~r12沒有指定特殊用途,而使用r8_fiq~r12_fiq則允許快速中斷。

寄存器r13和r14的用途比較特殊:

①r13通常用作堆棧指針SP,被初始化成指向異常模式分配的堆棧。處理異常時(shí),在程序入口處將異常處理程序用到的其他寄存器的值壓入堆棧,返回時(shí)重新將這些值加載到寄存器中。這樣就可以保證出現(xiàn)異常時(shí)程序狀態(tài)仍可靠。

②r14通常用作子程序鏈接寄存器LR。當(dāng)執(zhí)行分支指令BL時(shí),r15的內(nèi)容拷貝到r14中,從而成為子程序調(diào)用后的返回地址。采用這種方式可以類似地用來(lái)處理異常的返回。

(3)程序計(jì)數(shù)器r15。寄存器r15通常被用作程序計(jì)數(shù)器PC。在ARM狀態(tài)下,由于ARM指令始終是字對(duì)準(zhǔn)的,因此PC的值保存在位[31:2],而位[1:0]為0;在Thumb狀態(tài)下,由于Thumb指令是半字對(duì)準(zhǔn)的,因此PC的值保存在位[31:1],而位[0]為0。

①讀程序計(jì)數(shù)器PC:用指令讀出的r15的值為指令地址加8個(gè)字節(jié)。讀PC主要用于快速對(duì)臨近的指令和數(shù)據(jù)進(jìn)行位置無(wú)關(guān)的尋址。

②寫程序計(jì)數(shù)器PC:寫r15的結(jié)果是將寫到r15的值作為指令地址,并根據(jù)這個(gè)地址跳轉(zhuǎn)。

(4)當(dāng)前程序狀態(tài)寄存器(CPSR)。當(dāng)前程序狀態(tài)寄存器在用戶級(jí)編程時(shí)用于存儲(chǔ)條件碼。例如,使用CPSR的相應(yīng)位來(lái)記錄比較操作的結(jié)果和控制轉(zhuǎn)移的條件。此外,CPSR

還包含了中斷禁止位、當(dāng)前處理器模式以及其他的一些狀態(tài)和控制信息。同時(shí),為了在異常出現(xiàn)時(shí)能夠保存CPSR的狀態(tài),每種異常模式都設(shè)置了一個(gè)程序狀態(tài)保存寄存器(SPSR)。

顯然,CPSR和SPSR具有相同的格式,如圖2-10所示。圖2-10PSR的格式

(5)?Thumb狀態(tài)的寄存器集。?Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集的子集。具體情況如圖2-11所示。圖2-11Thumb狀態(tài)下的寄存器組織

Thumb狀態(tài)寄存器與ARM狀態(tài)寄存器的映射關(guān)系如圖2-12所示。圖2-12Thumb狀態(tài)寄存器到ARM寄存器的映射

6.異常

異常(exception)是指由內(nèi)部或外部源產(chǎn)生、需要處理器處理的一個(gè)事件。

ARM支持7種類型的異常。對(duì)于每種異常,處理器將強(qiáng)制從異常對(duì)應(yīng)的某個(gè)固定地址開始執(zhí)行程序。這些固定地址稱為異常向量。

異常出現(xiàn)時(shí),相應(yīng)異常模式下的r14和SPSR用來(lái)保存當(dāng)前狀態(tài),其過(guò)程可描述如下:r14_<exception_mode>=returnlink

SPSR_<exception_mode>=CPSR

CPSR[4:0]=exceptionmodenumber

CPSR[5]=0 /*使處理器在ARM狀態(tài)下執(zhí)行*/

CPSR[7]=1 /*禁止新的IRQ中斷*/

If<exception_mode>==ResetorFIQthen

CPSR[6]=1 /*禁止新的FIQ中斷*/

PC=exceptionvectoraddress

7.存儲(chǔ)器和存儲(chǔ)器映射I/O

1)地址空間

ARM體系結(jié)構(gòu)使用232個(gè)8位字節(jié)的單一、線性地址空間,字節(jié)地址的范圍為0~232-1;也可以將地址空間看做由230個(gè)32位的字組成,字地址可被4整除,且按字對(duì)準(zhǔn),例如以A為字對(duì)準(zhǔn)地址的字地址由A、A+1、A+2、A+3共4個(gè)字節(jié)組成。在ARM體系結(jié)構(gòu)v4以上版本中,也可以將地址空間看做由231個(gè)16位的半字組成,半字地址可被2整除,且按半字對(duì)準(zhǔn),例如以A為字對(duì)準(zhǔn)地址的半字地址由A、A+1共2個(gè)字節(jié)組成。在程序中,通常使用普通的整數(shù)指令來(lái)計(jì)算地址。在指令按照正常順序執(zhí)行的情況下,下一條指令的地址?=?當(dāng)前指令的地址?+?4。對(duì)于分支指令,目的地址?=?當(dāng)前指令的地址?+?8+偏移量。如果計(jì)算結(jié)果在地址空間中向上或向下溢出,則指令會(huì)出現(xiàn)環(huán)繞,其后果無(wú)法預(yù)知,因此地址轉(zhuǎn)移不應(yīng)超出0x00000000~0xFFFFFFFF的范圍。

2)存儲(chǔ)器格式

存儲(chǔ)器格式是指字、半字、字節(jié)在存儲(chǔ)器中存放的方式,也反映了存儲(chǔ)器中字、半字、字節(jié)之間的映射關(guān)系。

存儲(chǔ)器格式包括小端和大端兩種格式,如圖2-13所示。圖2-13大、小端存儲(chǔ)格式在小端存儲(chǔ)格式下,字或半字地址的低字節(jié)(對(duì)準(zhǔn)字節(jié))存放在低地址;在大端存儲(chǔ)格式下,字或半字地址的低字節(jié)(對(duì)準(zhǔn)字節(jié))存放在高地址。下面舉例說(shuō)明大、小端存儲(chǔ)格式對(duì)程序的影響,如圖2-14所示。圖2-14端配置

3)存儲(chǔ)器訪問對(duì)準(zhǔn)

對(duì)于非對(duì)準(zhǔn)的數(shù)據(jù)訪問,體系結(jié)構(gòu)可能定義成以下行為之一:

(1)不可預(yù)知。

(2)忽略使訪問非對(duì)準(zhǔn)的低地址位。

(3)忽略使訪問非對(duì)準(zhǔn)的低地址位,但使用這些位控制加載數(shù)據(jù)的循環(huán)移位(適用于LDR和SWP指令)。

4)存儲(chǔ)器映射I/O

ARM系統(tǒng)實(shí)現(xiàn)I/O功能的標(biāo)準(zhǔn)方法是使用存儲(chǔ)器映射I/O。這種方法使用特定的存儲(chǔ)器地址,對(duì)這些地址進(jìn)行加載和存儲(chǔ),即可完成I/O操作。通常,對(duì)存儲(chǔ)器映射I/O地址加載對(duì)應(yīng)輸入,對(duì)存儲(chǔ)器映射I/O地址存儲(chǔ)對(duì)應(yīng)輸出。另外,加載和存儲(chǔ)也可執(zhí)行控制功能,替代或附加到正常的I/O操作上。

由于需要映射I/O行為,因此這些特定的存儲(chǔ)地址與正常的存儲(chǔ)地址的使用方式有所差異。通常需要將存儲(chǔ)器映射I/O的位置標(biāo)識(shí)為非高速緩存的(uncachable)和非緩存的(unbufferable),目的是避免改變?cè)L問模式的數(shù)目、類型、順序或定時(shí)。2.4.2ARM尋址方式

尋址方式是指根據(jù)指令給出的地址碼尋找真實(shí)操作數(shù)地址的方式。

1.寄存器尋址

指令地址碼給出寄存器的編號(hào),寄存器中的內(nèi)容為操作數(shù)。例:

ADDR0,R1,R2 ;?R0←R1+R2

這條指令的含義是將寄存器R1和R2的內(nèi)容相加,結(jié)果放入寄存器R0中。注意寫操作數(shù)的順序?yàn)椋旱?個(gè)寄存器R0為結(jié)果寄存器,第2個(gè)寄存器R1為第一操作數(shù)寄存器,第3個(gè)寄存器R2為第二操作數(shù)寄存器。

2.立即尋址

指令操作碼后的地址碼是立即數(shù),即操作數(shù)本身。例:

ADDR3,R3,#1 ;?R3←R3+1

ANDR8,R7,#&FF ;?R8←R7[7:0]

立即數(shù)的表示以“#”為前綴,十六進(jìn)制的立即數(shù)在“#”后面加“&”符號(hào)。

第1條指令將R3的內(nèi)容加1,結(jié)果放入R3中;第2條指令將R7的32位值與立即數(shù)0FFH邏輯與,結(jié)果是將R7的低8位放入R8中。

3.寄存器移位尋址

寄存器移位尋址是ARM指令集特有的尋址方式。?第2個(gè)操作數(shù)與第1個(gè)操作數(shù)結(jié)合之前,選擇進(jìn)行移位操作。例:

ADDR3,R2,R1,LSL#3 ;?R3←R2+8×R1

寄存器R1的內(nèi)容邏輯左移3位,再與寄存器R2的內(nèi)容相加,結(jié)果放入R3中。

可采取的移位操作包括:

LSL:邏輯左移(LogicalShiftLeft)。寄存器中字的低端空出的位補(bǔ)0。

LSR:邏輯右移(LogicalShiftRight)。寄存器中字的高端空出的位補(bǔ)0。

ASR:算術(shù)右移(ArithmeticShiftRight)。算術(shù)移位的對(duì)象是帶符號(hào)數(shù)。在移位過(guò)程中必須保持操作數(shù)的符號(hào)不變。若源操作數(shù)為正數(shù),則字的高端空出的位補(bǔ)0;若源操作數(shù)為負(fù)數(shù),則字的高端空出的位補(bǔ)1。

ROR:循環(huán)右移(ROtateRight)。從字的最低端移出的位填入字的高端空出的位。

RRX:擴(kuò)展為1的循環(huán)右移(RotateRighteXtendedby1place)。操作數(shù)右移1位,空位(位[31])用“C”標(biāo)志填充。

移位操作過(guò)程如圖2-15所示。圖2-15移位操作過(guò)程

4.寄存器間接尋址

指令地址碼給出寄存器的編號(hào),寄存器為地址指針,存放操作數(shù)的有效地址。例:

LDRR0,[R1] ;?R0←[R1]

STRR0,[R1] ;?R0→[R1]

第1條指令將寄存器R1所指向的地址單元的內(nèi)容加載到寄存器R0中。第2條指令將寄存器R0的內(nèi)容存入寄存器R1指向的地址單元。

5.基址尋址

基址尋址是將基址寄存器的內(nèi)容與指令中給出的位移量相加,形成操作數(shù)有效地址?;穼ぶ酚糜谠L問基址附近的存儲(chǔ)單元,包括基址加偏移量尋址和基址加索引尋址,可以將寄存器間接尋址看作是位移量為0的基址加偏移量尋址。

1)基址加偏移量尋址

基址加偏移量尋址中的偏移量最大為4KB,可分為前索引尋址和后索引尋址。

2)基址加索引尋址

基址加索引尋址是指先指定一個(gè)基址寄存器,再指定另一個(gè)寄存器(稱為索引),其值作為位移加到基址上形成存儲(chǔ)器地址。例:

LDRR0,[R1,R2] ;?R0←[R1+R2]

這條指令是將R1和R2的內(nèi)容相加得到操作數(shù)的地址,再將此地址單元的內(nèi)容加載到R0。

6.多寄存器尋址

多寄存器尋址是指一次可以傳送多個(gè)寄存器的值,允許一條指令一次傳送16個(gè)寄存器的任何子集,包括16個(gè)寄存器。例:

LDMIAR1,{R0,R2,R5} ;?R0←[R1]

;?R2←[R1+4]

;?R5←[R1+8]

由于傳送的數(shù)據(jù)總是32位的字,因此基址寄存器R1應(yīng)當(dāng)字對(duì)準(zhǔn)。這條指令是將R1指向的連續(xù)存儲(chǔ)單元的內(nèi)容送到寄存器R0、R2和R5。

7.堆棧尋址

堆棧是一種按照特定順序進(jìn)行存取的存儲(chǔ)區(qū)。這種特定的順序是指“后進(jìn)先出(LIFO)”或“先進(jìn)后出(FILO)”。使用堆棧時(shí)需要使用一個(gè)專門的寄存器作為堆棧指針,堆棧指針?biāo)付ǖ拇鎯?chǔ)單元就是堆棧的棧頂。如果堆棧指針指向最后壓入堆棧的有效數(shù)據(jù)項(xiàng),就稱為滿堆棧(fullstack);如果堆棧指針指向下一個(gè)數(shù)據(jù)項(xiàng)放入的空位置,就稱為空堆棧(emptystack)。另外,根據(jù)堆棧存儲(chǔ)區(qū)地址增長(zhǎng)的方向,可將堆棧分為遞增堆棧(ascendingstack)和遞減堆棧(descen

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論