版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式系統(tǒng)概述ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式系統(tǒng)是指以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件、硬件可剪裁,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積和功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。它包括硬件和軟件兩部分。硬件包括處理器/微處理器、存儲(chǔ)器及外設(shè)器件和I/O端口、圖形控制器等。軟件包括操作系統(tǒng)軟件(OS)(要求實(shí)時(shí)和多任務(wù)操作)和應(yīng)用程序編程。有時(shí)設(shè)計(jì)人員把這兩種軟件組合在一起。應(yīng)用程序控制著系統(tǒng)的運(yùn)作和行為,而操作系統(tǒng)控制著應(yīng)用程序編程與硬件的交互作用。嵌入式系統(tǒng)的概念A(yù)RM嵌入式系統(tǒng)原理與開發(fā)嵌入式系統(tǒng)通常是面向特定應(yīng)用的嵌入式CPU,與通用型的最大不同就是嵌入式CPU大多工作在為特定用戶群設(shè)計(jì)的系統(tǒng)中,執(zhí)行的是帶有特定要求的預(yù)先定義的任務(wù),如實(shí)時(shí)性、安全性、可用性等。它通常具有低功耗、體積小、集成度高等特點(diǎn),能夠把通用CPU中許多由板卡完成的任務(wù)集成在芯片內(nèi)部,從而有利于嵌入式系統(tǒng)設(shè)計(jì)趨于小型化,移動(dòng)能力大大增強(qiáng),跟網(wǎng)絡(luò)的耦合也越來越緊密嵌入式計(jì)算機(jī)系統(tǒng)特點(diǎn)ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式系統(tǒng)是將先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)與各個(gè)行業(yè)的具體應(yīng)用相結(jié)合的產(chǎn)物。這一點(diǎn)就決定了它必然是一個(gè)技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識(shí)集成系統(tǒng)嵌入式系統(tǒng)的硬件和軟件都必須高效率地設(shè)計(jì),量體裁衣、去除冗余,力爭(zhēng)在同樣的硅片面積上實(shí)現(xiàn)更高的性能,這樣才能在具體應(yīng)用中對(duì)處理器的選擇更具有競(jìng)爭(zhēng)力。由于嵌入式系統(tǒng)通常需要進(jìn)行大量生產(chǎn),所以單個(gè)的成本節(jié)約,能夠隨著產(chǎn)量進(jìn)行成百上千的放大。嵌入式計(jì)算機(jī)系統(tǒng)特點(diǎn)ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式系統(tǒng)和具體應(yīng)用有機(jī)地結(jié)合在一起,它的升級(jí)換代也是和具體產(chǎn)品同步進(jìn)行,因此嵌入式系統(tǒng)產(chǎn)品一旦進(jìn)入市場(chǎng),具有較長(zhǎng)的生命周期。為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲(chǔ)器芯片或單片機(jī)本身中,而不是存儲(chǔ)于磁盤等載體中。嵌入式系統(tǒng)本身不具備自舉開發(fā)能力,即使設(shè)計(jì)完成以后用戶通常也不能對(duì)其中的程序功能進(jìn)行修改,必須有一套開發(fā)工具和環(huán)境才能進(jìn)行開發(fā)。嵌入式計(jì)算機(jī)系統(tǒng)特點(diǎn)ARM嵌入式系統(tǒng)原理與開發(fā)第1階段是以單芯片為核心的可編程控制器形式的系統(tǒng)。將計(jì)算機(jī)做在一個(gè)芯片上,從而開創(chuàng)了嵌入式系統(tǒng)獨(dú)立發(fā)展的單片機(jī)時(shí)代。單片機(jī)就是一個(gè)最典型的嵌入式系統(tǒng),這類系統(tǒng)大部分應(yīng)用于一些專業(yè)性強(qiáng)的工業(yè)控制系統(tǒng)中,一般沒有操作系統(tǒng)的支持,軟件通過匯編語言編寫。這一階段系統(tǒng)的主要特點(diǎn)是:系統(tǒng)結(jié)構(gòu)和功能相對(duì)單一,處理效率較低,存儲(chǔ)容量較小,幾乎沒有用戶接口。由于這種嵌入式系統(tǒng)使用簡(jiǎn)單、價(jià)格低,以前在國(guó)內(nèi)工業(yè)領(lǐng)域應(yīng)用較為普遍,但是現(xiàn)在已經(jīng)遠(yuǎn)不能適應(yīng)高效的、需要大容量存儲(chǔ)的現(xiàn)代工業(yè)控制和新興信息家電等領(lǐng)域的需求。嵌入式系統(tǒng)的歷史ARM嵌入式系統(tǒng)原理與開發(fā)第2階段是以嵌入式CPU為基礎(chǔ)、以簡(jiǎn)單操作系統(tǒng)為核心的嵌入式系統(tǒng)。其主要特點(diǎn)是:CPU種類繁多,通用性比較弱;系統(tǒng)開銷小,效率高;操作系統(tǒng)達(dá)到一定的兼容性和擴(kuò)展性;應(yīng)用軟件較專業(yè)化,用戶界面不夠友好。嵌入式系統(tǒng)的歷史ARM嵌入式系統(tǒng)原理與開發(fā)第3階段是以嵌入式操作系統(tǒng)為標(biāo)志的嵌入式系統(tǒng)。其主要特點(diǎn)是:嵌入式操作系統(tǒng)能運(yùn)行于各種不同類型的微處理器上,兼容性好;操作系統(tǒng)內(nèi)核小、效率高,并且具有高度的模塊化和擴(kuò)展性;具備文件和目錄管理,支持多任務(wù),支持網(wǎng)絡(luò)應(yīng)用,具備圖形窗口和用戶界面;具有大量的應(yīng)用程序接口API,開發(fā)應(yīng)用程序較簡(jiǎn)單;嵌入式應(yīng)用軟件豐富。嵌入式系統(tǒng)的歷史ARM嵌入式系統(tǒng)原理與開發(fā)第4階段是以Internet為標(biāo)志的嵌入式系統(tǒng)。這是一個(gè)正在迅速發(fā)展的階段。目前,大多數(shù)嵌入式系統(tǒng)還孤立于Internet之外,但隨著Internet的發(fā)展以及Internet技術(shù)與信息家電、工業(yè)控制技術(shù)結(jié)合日益密切,嵌入式設(shè)備與Internet的結(jié)合將代表嵌入式系統(tǒng)的未來。嵌入式系統(tǒng)的歷史ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式系統(tǒng)的核心計(jì)算系統(tǒng)可以抽象出一個(gè)典型的組成模型:硬件層、中間層、軟件層和功能層嵌入式系統(tǒng)的組成結(jié)構(gòu)ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式系統(tǒng)硬件層的核心是嵌入式微處理器,嵌入式微處理器與通用CPU最大的不同在于嵌入式微處理器大多工作在為特定用戶群所專用設(shè)計(jì)的系統(tǒng)中,它將通用CPU許多由板卡完成的任務(wù)集成在芯片內(nèi)部,從而有利于嵌入式系統(tǒng)在設(shè)計(jì)時(shí)趨于小型化,同時(shí)還具有很高的效率和可靠性。嵌入式微處理器的體系結(jié)構(gòu)可以采用馮·諾依曼體系或哈佛體系結(jié)構(gòu);指令系統(tǒng)可以選用精簡(jiǎn)指令系統(tǒng)(ReducedInstructionSetComputer,RISC)和復(fù)雜指令系統(tǒng)(ComplexInstructionSetComputer,CISC)嵌入式微處理器ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式微處理器有各種不同的體系,即使在同一體系中也可能具有不同的時(shí)鐘頻率和數(shù)據(jù)總線寬度,或集成了不同的外設(shè)和接口。據(jù)不完全統(tǒng)計(jì),目前全世界嵌入式微處理器已經(jīng)超過1
000多種,體系結(jié)構(gòu)有30多個(gè)系列,其中主流的體系有ARM、MIPS、PowerPC、X86、SH等。但與全球PC市場(chǎng)不同的是,沒有一種嵌入式微處理器可以主導(dǎo)市場(chǎng),僅以32位的產(chǎn)品而言,就有100種以上的嵌入式微處理器。嵌入式微處理器的選擇是根據(jù)具體的應(yīng)用而決定的嵌入式微處理器ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式系統(tǒng)需要存儲(chǔ)器來存放和執(zhí)行代碼。嵌入式系統(tǒng)的存儲(chǔ)器包含Cache、主存和輔助存儲(chǔ)器Cache是一種容量小、速度快的存儲(chǔ)器陣列,它位于主存和嵌入式微處理器內(nèi)核之間,存放的是最近一段時(shí)間微處理器使用最多的程序代碼和數(shù)據(jù)。在需要進(jìn)行數(shù)據(jù)讀取操作時(shí),微處理器盡可能的從Cache中讀取數(shù)據(jù),而不是從主存中讀取,這樣就大大改善了系統(tǒng)的性能,提高了微處理器和主存之間的數(shù)據(jù)傳輸速率存儲(chǔ)器ARM嵌入式系統(tǒng)原理與開發(fā)在嵌入式系統(tǒng)中,Cache全部集成在嵌入式微處理器內(nèi),可分為數(shù)據(jù)Cache、指令Cache或混合Cache,Cache的大小依不同處理器而定。一般中高檔的嵌入式微處理器才會(huì)把Cache集成進(jìn)去存儲(chǔ)器ARM嵌入式系統(tǒng)原理與開發(fā)主存:主存是嵌入式微處理器能直接訪問的寄存器,用來存放系統(tǒng)和用戶的程序及數(shù)據(jù)。它可以位于微處理器的內(nèi)部或外部,其容量為256KB~1GB,根據(jù)具體的應(yīng)用而定,一般片內(nèi)存儲(chǔ)器容量小、速度快,片外存儲(chǔ)器容量大常用作主存的存儲(chǔ)器有以下幾種:ROM類NORFlash、EPROM、PROM等;RAM類SRAM、DRAM、SDRAM等。其中,NORFlash憑借其可擦寫次數(shù)多、存儲(chǔ)速度快、存儲(chǔ)容量大、價(jià)格便宜等優(yōu)點(diǎn),在嵌入式領(lǐng)域內(nèi)得到了廣泛應(yīng)用。存儲(chǔ)器ARM嵌入式系統(tǒng)原理與開發(fā)輔助存儲(chǔ)器:輔助存儲(chǔ)器用來存放大數(shù)據(jù)量的程序代碼或信息,它的容量大,但讀取速度與主存相比就慢很多,用來長(zhǎng)期保存用戶的信息。嵌入式系統(tǒng)中常用的外存有硬盤、NANDFlash、CF卡、MMC、SD卡等存儲(chǔ)器ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式系統(tǒng)和外界交互需要一定形式的通用設(shè)備接口,如A/D、D/A、I/O等,外設(shè)通過和片外其他設(shè)備的或傳感器的連接來實(shí)現(xiàn)微處理器的輸入/輸出功能。每個(gè)外設(shè)通常都只有單一的功能,它可以在芯片外也可以內(nèi)置芯片中。外設(shè)的種類很多,可從一個(gè)簡(jiǎn)單的串行通信設(shè)備到非常復(fù)雜的802.11無線設(shè)備通用設(shè)備接口和I/O接口ARM嵌入式系統(tǒng)原理與開發(fā)硬件層與軟件層之間為中間層,也稱為硬件抽象層(HardwareAbstractLayer,HAL)或板級(jí)支持包(BoardSupportPackage,BSP),它將系統(tǒng)上層軟件與底層硬件分離開來,使系統(tǒng)的底層驅(qū)動(dòng)程序與硬件無關(guān),上層軟件開發(fā)人員無須關(guān)心底層硬件的具體情況,根據(jù)BSP層提供的接口即可進(jìn)行開發(fā)。該層一般包含相關(guān)底層硬件的初始化、數(shù)據(jù)的輸入/輸出操作和硬件設(shè)備的配置功能中間層ARM嵌入式系統(tǒng)原理與開發(fā)BSP具有以下兩個(gè)特點(diǎn)硬件相關(guān)性:因?yàn)榍度胧綄?shí)時(shí)系統(tǒng)的硬件環(huán)境具有應(yīng)用相關(guān)性,而作為上層軟件與硬件平臺(tái)之間的接口,BSP需要為操作系統(tǒng)提供操作和控制具體硬件的方法操作系統(tǒng)相關(guān)性:不同的操作系統(tǒng)具有各自的軟件層次結(jié)構(gòu),因此,不同的操作系統(tǒng)具有特定的硬件接口形式中間層ARM嵌入式系統(tǒng)原理與開發(fā)軟件層由實(shí)時(shí)多任務(wù)操作系統(tǒng)(Real-timeOperationSystem,RTOS)、文件系統(tǒng)、圖形用戶接口(GraphicUserInterface,GUI)、網(wǎng)絡(luò)系統(tǒng)及通用組件模塊組成。RTOS是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺(tái)軟件層ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式操作系統(tǒng)(EmbeddedOperationSystem,EOS)是一種用途廣泛的系統(tǒng)軟件,過去它主要應(yīng)用與工業(yè)控制和國(guó)防系統(tǒng)領(lǐng)域。EOS負(fù)責(zé)嵌入系統(tǒng)的全部軟、硬件資源的分配、任務(wù)調(diào)度,控制、協(xié)調(diào)并發(fā)活動(dòng)。它必須體現(xiàn)其所在系統(tǒng)的特征,能夠通過裝卸某些模塊來達(dá)到系統(tǒng)所要求的功能。入式文件系統(tǒng)比較簡(jiǎn)單,主要提供文件存儲(chǔ)、檢索、更新等功能,一般不提供保護(hù)、加密等安全機(jī)制。它以系統(tǒng)調(diào)用和命令方式提供文件的各種操作,主要有設(shè)置、修改對(duì)文件和目錄的存取權(quán)限。提供建立、修改、改變和刪除目錄等服務(wù)。提供創(chuàng)建、打開、讀寫、關(guān)閉和撤銷文件等服務(wù)。軟件層ARM嵌入式系統(tǒng)原理與開發(fā)圖形用戶接口(GUI)的廣泛應(yīng)用是當(dāng)今計(jì)算機(jī)發(fā)展的重大成就之一,它極大地方便了非專業(yè)用戶的使用,人們從此不再需要死記硬背大量的命令,取而代之的是可用通過窗口、菜單、按鍵等方式來方便地進(jìn)行操作。而嵌入式GUI具有下面幾個(gè)方面的基本要求:輕型、占用資源少、高性能、高可靠性、便于移植、可配置等特點(diǎn)軟件層ARM嵌入式系統(tǒng)原理與開發(fā)功能層也稱為應(yīng)用軟件層,應(yīng)用軟件是由基于實(shí)時(shí)系統(tǒng)開發(fā)的應(yīng)用程序組成,運(yùn)行在嵌入式操作系統(tǒng)之上,一般情況下與操作系統(tǒng)是分開的。應(yīng)用軟件用來實(shí)現(xiàn)對(duì)被控對(duì)象的控制功能。功能層是要面對(duì)被控對(duì)象和用戶,為方便用戶操作,往往需要提供一個(gè)友好的人機(jī)界面功能層ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式處理器是嵌入式系統(tǒng)的核心,是控制、輔助系統(tǒng)運(yùn)行的硬件單元。其產(chǎn)品范圍極其廣闊,從最初的4位處理器、目前仍在大規(guī)模應(yīng)用的8位單片機(jī),到最新的受到廣泛青睞的32位、64位嵌入式CPU目前,世界上具有嵌入式功能特點(diǎn)的處理器已經(jīng)超過1000種,流行體系結(jié)構(gòu)包括MCU、MPU等30多個(gè)系列。嵌入式處理器ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式微處理器(MicroProcessorUnit,MPU)是由通用計(jì)算機(jī)中的CPU演變而來的。它的特征是具有32位以上的處理器,具有較高的性能,其價(jià)格也相應(yīng)較高。但與計(jì)算機(jī)處理器不同的是,在實(shí)際嵌入式應(yīng)用中,只保留和嵌入式應(yīng)用緊密相關(guān)的功能硬件,去除其他的冗余功能部分,這樣就以最低的功耗和資源實(shí)現(xiàn)嵌入式應(yīng)用的特殊要求。嵌入式微處理器具有體積小、重量輕、成本低、可靠性高的優(yōu)點(diǎn)。目前,主要的嵌入式處理器類型有Am186/88、386EX、SC-400、PowerPC、68000、MIPS、ARM/StrongARM系列等嵌入式微處理器ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式微控制器(MicrocontrollerUnit,MCU)的典型代表是單片機(jī),從20世紀(jì)70年代末單片機(jī)出現(xiàn)到今天,雖然已經(jīng)經(jīng)過了20多年的歷史,但這種8位的電子器件目前在嵌入式設(shè)備中仍然有著極其廣泛的應(yīng)用。單片機(jī)芯片內(nèi)部集成ROM/EPROM、RAM、總線、總線邏輯、定時(shí)/計(jì)數(shù)器、看門狗、I/O、串行口、脈寬調(diào)制輸出、A/D、D/A、FlashRAM、EEPROM等各種必要功能和外設(shè),與嵌入式微處理器相比,微控制器的最大特點(diǎn)是單片化,體積大大減小,從而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系統(tǒng)工業(yè)的主流。嵌入式微控制器ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式DSP處理器(EmbeddedDigitalSignalProcessor,EDSP)是專門用于信號(hào)處理方面的處理器,其在系統(tǒng)結(jié)構(gòu)和指令算法方面進(jìn)行了特殊設(shè)計(jì),具有很高的編譯效率和指令的執(zhí)行速度。在數(shù)字濾波、FFT、譜分析等各種儀器上DSP獲得了大規(guī)模的應(yīng)用目前,最為廣泛應(yīng)用的是TI的TMS320C2000/C5000系列,另外如Intel的MCS-296和Siemens的TriCore也有各自的應(yīng)用范圍嵌入式DSP處理器ARM嵌入式系統(tǒng)原理與開發(fā)SoC追求產(chǎn)品系統(tǒng)最大包容的集成器件,是目前嵌入式應(yīng)用領(lǐng)域的熱門話題之一。SoC最大的特點(diǎn)是成功實(shí)現(xiàn)了軟硬件無縫結(jié)合,直接在處理器片內(nèi)嵌入操作系統(tǒng)的代碼模塊。而且SoC具有極高的綜合性,在一個(gè)硅片內(nèi)部運(yùn)用VHDL等硬件描述語言,實(shí)現(xiàn)一個(gè)復(fù)雜的系統(tǒng)SoC(SystemonChip)片上系統(tǒng)ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式操作系統(tǒng)(EmbeddedOperatingSystem,EOS)是一種用途廣泛的系統(tǒng)軟件,過去它主要應(yīng)用于工業(yè)控制和國(guó)防系統(tǒng)領(lǐng)域。EOS負(fù)責(zé)嵌入系統(tǒng)的全部軟、硬件資源的分配、調(diào)度工作,控制協(xié)調(diào)并發(fā)活動(dòng);它必須體現(xiàn)其所在系統(tǒng)的特征,能夠通過裝卸某些模塊來達(dá)到系統(tǒng)所要求的功能EOS是相對(duì)于一般操作系統(tǒng)而言的,它除具備了一般操作系統(tǒng)最基本的功能,如任務(wù)調(diào)度、同步機(jī)制、中斷處理、文件功能等外,還具有以下特點(diǎn):典型的嵌入式操作系統(tǒng)ARM嵌入式系統(tǒng)原理與開發(fā)可裝卸性、開放性、可伸縮性的體系結(jié)構(gòu)強(qiáng)實(shí)時(shí)性,可用于各種設(shè)備控制當(dāng)中統(tǒng)一的接口,提供各種設(shè)備驅(qū)動(dòng)接入操作方便、簡(jiǎn)單,提供友好的圖形用戶界面提供強(qiáng)大的網(wǎng)絡(luò)功能,支持TCP/IP及其他協(xié)議,提供TCP/UDP/IP/PPP支持及統(tǒng)一的MAC訪問層接口,為各種移動(dòng)計(jì)算設(shè)備預(yù)留接口強(qiáng)穩(wěn)定性,弱交互性。嵌入式系統(tǒng)一旦開始運(yùn)行就不需要用戶過多地干預(yù),這就要負(fù)責(zé)系統(tǒng)管理的EOS具有較強(qiáng)的穩(wěn)定性。嵌入式操作系統(tǒng)的用戶接口一般不提供操作命令,它通過系統(tǒng)調(diào)用命令向用戶程序提供服務(wù)典型的嵌入式操作系統(tǒng)ARM嵌入式系統(tǒng)原理與開發(fā)固化代碼。在嵌入系統(tǒng)中,嵌入式操作系統(tǒng)和應(yīng)用軟件被固化在嵌入式系統(tǒng)計(jì)算機(jī)的ROM中。輔助存儲(chǔ)器在嵌入式系統(tǒng)中很少使用,因此,嵌入式操作系統(tǒng)的文件管理功能應(yīng)該能夠很容易地拆卸,而用各種內(nèi)存文件系統(tǒng)更好的硬件適應(yīng)性,也就是良好的移植性典型的嵌入式操作系統(tǒng)ARM嵌入式系統(tǒng)原理與開發(fā)在所有的操作系統(tǒng)中,Linux是發(fā)展最快、應(yīng)用最廣泛的系統(tǒng)之一。Linux本身的種種特性使其成為嵌入式開發(fā)的首選。在進(jìn)入市場(chǎng)的前兩年中,嵌入式Linux的設(shè)計(jì)通過廣泛應(yīng)用而獲得巨大的成功。隨著嵌入式Linux技術(shù)的成熟,以其按應(yīng)用要求可定制系統(tǒng)、支持多數(shù)硬件平臺(tái)等特性,已由早期的試用階段邁進(jìn)到逐漸成為嵌入式市場(chǎng)的主流。根據(jù)IDC的報(bào)告,Linux已經(jīng)成為全球第二大操作系統(tǒng)。Linux發(fā)展如此之快的另一個(gè)主要原因是產(chǎn)品的成本。在激烈的市場(chǎng)競(jìng)爭(zhēng)中,只擁有先進(jìn)的技術(shù)是遠(yuǎn)遠(yuǎn)不夠的,如何減少產(chǎn)品的投入也是需要重點(diǎn)考慮的問題。免費(fèi)的Linux為廠商節(jié)約了一大筆開支,特別是對(duì)于經(jīng)濟(jì)實(shí)力不強(qiáng)的公司來說。目前Linux內(nèi)核的最新版本已經(jīng)達(dá)到2.6.xxLinuxARM嵌入式系統(tǒng)原理與開發(fā)μC/OS是一個(gè)典型的實(shí)時(shí)操作系統(tǒng)。該系統(tǒng)從1992年開始發(fā)展,目前流行的是第二個(gè)版本,即μC/OSⅡ。其特點(diǎn)可以概括為以下幾個(gè)方面:公開源代碼,代碼結(jié)構(gòu)清晰、明了,注釋詳細(xì),組織有條理,可移植性好,可裁剪,可固化,內(nèi)核屬于搶占式,最多可以管理64個(gè)任務(wù)。該系統(tǒng)短小精悍,是研究和學(xué)習(xí)實(shí)時(shí)操作系統(tǒng)的首選μC/OSARM嵌入式系統(tǒng)原理與開發(fā)WindowsCE是Microsft公司的產(chǎn)品,是從整體上為有限資源的平臺(tái)設(shè)計(jì)的多線程、完整優(yōu)先權(quán)、多任務(wù)的操作系統(tǒng)。WindowsCE采用模塊化設(shè)計(jì),并對(duì)于從掌上電腦到專用的工控電子設(shè)備進(jìn)行定制。此操作系統(tǒng)的基本內(nèi)核需要至少200KBROM存儲(chǔ)器。從游戲機(jī)到現(xiàn)在大部分的掌上電腦都采用了WindowsCE作為操作系統(tǒng),其缺點(diǎn)是系統(tǒng)軟件價(jià)格過高,影響整個(gè)產(chǎn)品的成本控制WindowsCEARM嵌入式系統(tǒng)原理與開發(fā)xWorks是WindRiver(風(fēng)河)公司專門為實(shí)時(shí)嵌入式系統(tǒng)設(shè)計(jì)開發(fā)的操作系統(tǒng)軟件,為程序員開發(fā)提供了高效的實(shí)時(shí)任務(wù)調(diào)度、中斷管理、實(shí)時(shí)的系統(tǒng)資源以及實(shí)時(shí)的任務(wù)間通信。應(yīng)用程序員可以將盡可能多的精力放在應(yīng)用程序本身,而不必再去關(guān)心系統(tǒng)資源的管理。該系統(tǒng)主要應(yīng)用在單板機(jī)、數(shù)據(jù)網(wǎng)絡(luò)(以太網(wǎng)交換機(jī)、路由器)、通信等多方面。該公司據(jù)已為Intel所收購(gòu)VxWorksARM嵌入式系統(tǒng)原理與開發(fā)PalmOS是一種32位的嵌入式操作系統(tǒng),用于掌上電腦。此系統(tǒng)是3Com公司的PalmComputing部開發(fā)的(PalmComputing目前已經(jīng)獨(dú)立成為一家公司),它運(yùn)行在一個(gè)搶占式的多任務(wù)內(nèi)核之上,同一時(shí)刻用戶界面僅僅允許一個(gè)應(yīng)用程序被打開,與同步軟件Hotsync結(jié)合可以使掌上電腦與PC上的信息實(shí)現(xiàn)同步,把臺(tái)式機(jī)的功能擴(kuò)展到了手掌上。同其他嵌入式操作系統(tǒng)相比,PalmOS具有更大的靈活性和移動(dòng)性,是一款非常流行的掌上電腦操作系統(tǒng)PalmOSARM嵌入式系統(tǒng)原理與開發(fā)QNX是一款實(shí)時(shí)操作系統(tǒng),由加拿大QNX軟件系統(tǒng)有限公司開發(fā),廣泛應(yīng)用于自動(dòng)化、控制、機(jī)器人科學(xué)、電信、數(shù)據(jù)通信、航空航天、計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)、醫(yī)療儀器設(shè)備、交通運(yùn)輸、安全防衛(wèi)系統(tǒng)、POS機(jī)、零售機(jī)等任務(wù)關(guān)鍵型應(yīng)用領(lǐng)域。20世紀(jì)90年代后期,QNX系統(tǒng)在高速增長(zhǎng)的Internet終端設(shè)備、信息家電、掌上電腦等領(lǐng)域也得到了廣泛應(yīng)用QNXARM嵌入式系統(tǒng)原理與開發(fā)iOS是由蘋果公司為iPhone開發(fā)的操作系統(tǒng)。它主要是給iPhone、iPodTouch以及iPad使用。就像其基于的MacOSX操作系統(tǒng)一樣,它也是以Darwin為基礎(chǔ)的。原本這個(gè)系統(tǒng)名為iPhoneOS,直到2010年6月7日WWDC大會(huì)上宣布改名為iOSiOS的系統(tǒng)架構(gòu)分為4個(gè)層次:核心操作系統(tǒng)層(theCoreOSlayer),核心服務(wù)層(theCoreServiceslayer),媒體層(theMedialayer)、可輕觸層(theCocoaTouchlayer)。蘋果iOSARM嵌入式系統(tǒng)原理與開發(fā)Android是Google開發(fā)的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)。它包括操作系統(tǒng)、用戶界面和應(yīng)用程序—移動(dòng)電話工作所需的全部軟件,而且不存在任何以往阻礙移動(dòng)產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙。Google與開放手機(jī)聯(lián)盟合作開發(fā)了Android,這個(gè)聯(lián)盟由包括中國(guó)移動(dòng)、摩托羅拉、高通、宏達(dá)電和T-Mobile在內(nèi)的30多家技術(shù)和無線應(yīng)用的領(lǐng)軍企業(yè)組成。Google通過與運(yùn)營(yíng)商、設(shè)備制造商、開發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望借助建立標(biāo)準(zhǔn)化、開放式的移動(dòng)電話軟件平臺(tái),在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開放式的生態(tài)系統(tǒng)AndroidARM嵌入式系統(tǒng)原理與開發(fā)專用、軟硬件可剪裁配置。從嵌入式系統(tǒng)定義可以看出,嵌入式系統(tǒng)是面向應(yīng)用的,和通用系統(tǒng)最大的區(qū)別在于嵌入式系統(tǒng)功能專一。根據(jù)這個(gè)特性,嵌入式系統(tǒng)的軟硬件可以根據(jù)需要進(jìn)行精心設(shè)計(jì)、量體裁衣、去除冗余,以實(shí)現(xiàn)低成本、高性能。也正因如此,嵌入式系統(tǒng)采用的微處理器和外圍設(shè)備種類繁多,系統(tǒng)不具通用嵌入式系統(tǒng)的特點(diǎn)ARM嵌入式系統(tǒng)原理與開發(fā)低功耗、高可靠性、高穩(wěn)定性。嵌入式系統(tǒng)大多用在特定場(chǎng)合,要么是環(huán)境條件惡劣,要么要求其長(zhǎng)時(shí)間連續(xù)運(yùn)轉(zhuǎn),因此,嵌入式系統(tǒng)應(yīng)具有高可靠性、高穩(wěn)定性、低功耗等性能。嵌入式系統(tǒng)的特點(diǎn)ARM嵌入式系統(tǒng)原理與開發(fā)軟件代碼短小精悍。由于成本和應(yīng)用場(chǎng)合的特殊性,通常嵌入式系統(tǒng)的硬件資源(如內(nèi)存等)都比較少,因此對(duì)嵌入式系統(tǒng)設(shè)計(jì)提出了較高的要求。嵌入式系統(tǒng)的軟件設(shè)計(jì)尤其要求高質(zhì)量,要在有限資源上實(shí)現(xiàn)高可靠性、高性能的系統(tǒng)。雖然隨著硬件技術(shù)的發(fā)展和成本的降低,在高端嵌入式產(chǎn)品上也開始采用嵌入式操作系統(tǒng),但其和PC資源比起來還是少得可憐,所以嵌入式系統(tǒng)的軟件代碼依然要在保證性能的情況下,占用盡量少的資源,保證產(chǎn)品的高性價(jià)比,使其具有更強(qiáng)的競(jìng)爭(zhēng)力。嵌入式系統(tǒng)的特點(diǎn)ARM嵌入式系統(tǒng)原理與開發(fā)代碼可固化。為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲(chǔ)器芯片或單片機(jī)本身中,而不是存儲(chǔ)于磁盤中。實(shí)時(shí)性。很多采用嵌入式系統(tǒng)的應(yīng)用具有實(shí)時(shí)性要求,所以大多嵌入式系統(tǒng)采用實(shí)時(shí)性系統(tǒng)。但需要注意的是嵌入式系統(tǒng)不等于實(shí)時(shí)系統(tǒng)。弱交互性。嵌入式系統(tǒng)不僅功能強(qiáng)大,而且要求使用靈活方便,一般不需要類似的鍵盤、鼠標(biāo)等,人機(jī)交互以簡(jiǎn)單方便為主。嵌入式系統(tǒng)的特點(diǎn)ARM嵌入式系統(tǒng)原理與開發(fā)嵌入式系統(tǒng)軟件開發(fā)通常需要專門的開發(fā)工具和開發(fā)環(huán)境。要求開發(fā)、設(shè)計(jì)人員有較高的技能。嵌入式系統(tǒng)是將先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)與各個(gè)行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物。這一點(diǎn)就決定了它必然是一個(gè)技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識(shí)集成系統(tǒng),從事嵌入式系統(tǒng)開發(fā)的人才也必須是復(fù)合型人才。嵌入式系統(tǒng)的特點(diǎn)ARM嵌入式系統(tǒng)原理與開發(fā)消費(fèi)電子領(lǐng)域嵌入式系統(tǒng)的應(yīng)用ARM嵌入式系統(tǒng)原理與開發(fā)通信網(wǎng)絡(luò)領(lǐng)域嵌入式系統(tǒng)的應(yīng)用ARM嵌入式系統(tǒng)原理與開發(fā)工業(yè)控制領(lǐng)域基于嵌入式芯片的工業(yè)自動(dòng)化設(shè)備將獲得長(zhǎng)足的發(fā)展,目前已經(jīng)有大量的8位、16位、32位嵌入式微控制器在應(yīng)用中,網(wǎng)絡(luò)化是提高生產(chǎn)效率和產(chǎn)品質(zhì)量、減少人力資源主要途徑,如工業(yè)過程控制、數(shù)字機(jī)床、電力系統(tǒng)、電網(wǎng)安全、電網(wǎng)設(shè)備監(jiān)測(cè)、石油化工系統(tǒng)。就傳統(tǒng)的工業(yè)控制產(chǎn)品而言,低端型采用的往往是8位單片機(jī)。但是隨著技術(shù)的發(fā)展,32位、64位的處理器逐漸成為工業(yè)控制設(shè)備的核心,在未來幾年內(nèi)必將獲得長(zhǎng)足的發(fā)展嵌入式系統(tǒng)的應(yīng)用ARM嵌入式系統(tǒng)原理與開發(fā)機(jī)器人領(lǐng)域嵌入式系統(tǒng)的應(yīng)用ARM嵌入式系統(tǒng)原理與開發(fā)交通管理與汽車電子領(lǐng)域國(guó)防和航空航天領(lǐng)域嵌入式系統(tǒng)的應(yīng)用ARM嵌入式系統(tǒng)原理與開發(fā)國(guó)防和航空航天領(lǐng)域嵌入式系統(tǒng)的應(yīng)用ARM嵌入式系統(tǒng)原理與開發(fā)小型化、智能化、網(wǎng)絡(luò)化、可視化多核技術(shù)的應(yīng)用低功耗(節(jié)能)、綠色環(huán)保云計(jì)算、可重構(gòu)、虛擬化等技術(shù)被進(jìn)一步應(yīng)用到嵌入式系統(tǒng)中嵌入式軟件開發(fā)平臺(tái)化、標(biāo)準(zhǔn)化、系統(tǒng)可升級(jí),代碼可復(fù)用將更受重視嵌入式系統(tǒng)軟件將逐漸PC化融合趨勢(shì)安全性嵌入式系統(tǒng)的發(fā)展趨勢(shì)ARM嵌入式系統(tǒng)原理與開發(fā)什么是嵌入式系統(tǒng)?試簡(jiǎn)單列舉一些生活中常見的嵌入式系統(tǒng)的實(shí)例。嵌入式系統(tǒng)具有哪些特點(diǎn)?嵌入式系統(tǒng)與通用計(jì)算機(jī)相比有哪些區(qū)別?嵌入式系統(tǒng)有哪些組成部分?簡(jiǎn)單說明各部分的功能與作用。結(jié)合嵌入式系統(tǒng)的應(yīng)用,簡(jiǎn)要分析嵌入式系統(tǒng)的應(yīng)現(xiàn)狀和未來趨勢(shì)。思考題與習(xí)題ARM嵌入式系統(tǒng)原理與開發(fā)ARM體系結(jié)構(gòu)與指令集ARM體系結(jié)構(gòu)與指令集ARM(AdvancedRISCMachines)公司于1990年成立,由蘋果電腦、Acorn電腦集團(tuán)和VLSLTechnology合資組建,主要推廣AcornComputer公司研發(fā)的首個(gè)商用RISC(ReducedInstructionSetComputer,精簡(jiǎn)指令集計(jì)算機(jī))處理器—ARM處理器。ARM公司是專門從事基于RISC技術(shù)芯片設(shè)計(jì)開發(fā)的公司,作為知識(shí)產(chǎn)權(quán)供應(yīng)商,本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設(shè)計(jì)許可,由合作公司生產(chǎn)各具特色的芯片。世界各大半導(dǎo)體生產(chǎn)商從ARM公司購(gòu)買其ARM微處理器核,根據(jù)各自不同的應(yīng)用領(lǐng)域,加入適當(dāng)?shù)耐鈬娐罚瑥亩纬勺约旱腁RM微處理器芯片進(jìn)入市場(chǎng)。ARM技術(shù)簡(jiǎn)介ARM體系結(jié)構(gòu)與指令集采用RISC架構(gòu)的ARM微處理器一般具有如下特點(diǎn)。①體積小、低功耗、低成本、高性能。②支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8/16位器件。③大量使用寄存器,指令執(zhí)行速度更快。④大多數(shù)數(shù)據(jù)操作都在寄存器中完成。⑤尋址方式靈活簡(jiǎn)單,執(zhí)行效率高。⑥指令長(zhǎng)度固定。ARM技術(shù)簡(jiǎn)介ARM體系結(jié)構(gòu)與指令集
ARM體系結(jié)構(gòu)的版本
為了精確表述在ARM體系結(jié)構(gòu)和實(shí)現(xiàn)中所使用的指令集,迄今為止,將其定義了7種主要版本,分別用版本號(hào)1~7表示。ARM體系結(jié)構(gòu)與指令集
ARM體系結(jié)構(gòu)的版本
表2-1 體系結(jié)構(gòu)版本和處理器內(nèi)核的對(duì)應(yīng)關(guān)系
ARM體系結(jié)構(gòu)與指令集其中,版本v1、v2、v3主要是處于開發(fā)和試驗(yàn)階段,功能相對(duì)比較單一,并沒有大規(guī)模占領(lǐng)市場(chǎng)。版本v4是第1個(gè)具有全部正式定義的體系結(jié)構(gòu)版本。它具有32位尋址空間和7種工作模式,增加了有符號(hào)、無符號(hào)半字和有符號(hào)字節(jié)的加載/存儲(chǔ)指令,并為結(jié)構(gòu)定義的操作預(yù)留一些SWI空間;引入了系統(tǒng)模式,并將幾個(gè)未使用指令空間的角落作為未定義指令使用。在體系結(jié)構(gòu)版本4的變種版本4T中,引入了16位Thumb壓縮形式的指令集。ARM技術(shù)從版本v4開始成熟,基于該版本的典型內(nèi)核有ARM7TDMI、ARM720T、ARM9TDMI、ARM940T。其中正是ARM7芯片獲得極大成功,占領(lǐng)了近70%市場(chǎng)份額,奠定了ARM在嵌入式處理器領(lǐng)域的領(lǐng)先地位。ARM體系結(jié)構(gòu)的版本ARM體系結(jié)構(gòu)與指令集版本v5通過增加一些指令以及對(duì)現(xiàn)有指令的定義略作修改,對(duì)版本v4進(jìn)行了擴(kuò)展。版本v5主要由兩個(gè)變種版本v5T和v5TE組成。版本v6是2001年發(fā)布的。新架構(gòu)版本v6在降低耗電量的同時(shí),強(qiáng)化了圖形處理性能。通過追加了能夠有效進(jìn)行多媒體處理的SIMD功能,將其對(duì)語音及圖像的處理功能提供到原機(jī)型的4倍。此外,版本v6還支持多種微處理器內(nèi)核版本,支持Thumb-2指令集,具有NEON媒體引擎,同時(shí)采用了Jazellec-RCT技術(shù),極大改善了ARM對(duì)多媒體和Java的支持。ARM體系結(jié)構(gòu)的版本ARM體系結(jié)構(gòu)與指令集1.ARM內(nèi)核版本命名規(guī)則ARM內(nèi)核命名時(shí)以數(shù)字表示內(nèi)核的版本號(hào),以字母表示內(nèi)核所支持的額外功能。規(guī)則如下:ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}大括號(hào)內(nèi)的字母是可選的,各個(gè)字母的含義如下。x—系列號(hào),如ARM7中的“7”、ARM9中的“9”。y—內(nèi)部存儲(chǔ)管理/保護(hù)單元,如ARM72中的“2”、ARM94中的“4”。z—內(nèi)含有高速緩存(Cache)。T—支持16位的Thumb指令集。D—支持JTAG片上調(diào)試。M—支持用于長(zhǎng)乘法操作(64位結(jié)果)的ARM指令,包含快速乘法器。ARM處理器內(nèi)核系列ARM體系結(jié)構(gòu)與指令集I—帶有嵌入式追蹤宏單元ETM(EmbeddedTraceMacro),用來設(shè)置斷點(diǎn)和觀察點(diǎn)的調(diào)試硬件。E—增強(qiáng)型DSP指令(基于TDMI)。J—含有Java加速器Jazelle,與Java虛擬機(jī)相比,Jazelle使Java代碼運(yùn)行速度提高了8倍,功耗降低到原來的80%。F—向量浮點(diǎn)單元。S—可綜合版本,意味著處理器內(nèi)核是以源代碼形式提供的。這種源代碼形式又可以被編譯成一種易于EDA工具使用的形式。ARM處理器內(nèi)核系列ARM體系結(jié)構(gòu)與指令集ARM7微處理器系列具有如下特點(diǎn):①具有嵌入式ICE-RT邏輯,調(diào)試開發(fā)方便。②極低的功耗,適合對(duì)功耗要求嚴(yán)格的應(yīng)用,如便攜式產(chǎn)品。③能夠提供0.9MIPS/MHz的三級(jí)流水線結(jié)構(gòu)。④代碼密度高并兼容16位的Thumb指令集。⑤對(duì)操作系統(tǒng)的支持廣泛,包括WindowsCE、Linux、PalmOS等。⑥指令系統(tǒng)與ARM9、ARM9E和ARM10E系列兼容,便于用戶的產(chǎn)品升級(jí)換代。⑦主頻最高可達(dá)130MIPS,高速的運(yùn)算處理能力能勝任絕大多數(shù)的復(fù)雜應(yīng)用。ARM處理器內(nèi)核系列ARM體系結(jié)構(gòu)與指令集ARM9系列微處理器在高性能和低功耗特性方面提供最佳的性能,具有以下特點(diǎn):①提供1.1MIPS/MHz5級(jí)流水線結(jié)構(gòu)。②支持32位ARM指令集和16位Thumb指令集。③支持32位的高速AMBA總線接口。④全性能MMU,支持WindowsCE、Linux、PalmOS等主流嵌入式操作系統(tǒng)。⑤MPU支持實(shí)時(shí)操作系統(tǒng)。⑥支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。ARM處理器內(nèi)核系列ARM體系結(jié)構(gòu)與指令集ARM9E系列微處理器的主要特點(diǎn)如下:①支持DSP指令集,適合于需要高速數(shù)字信號(hào)處理的場(chǎng)合。②5級(jí)整數(shù)流水線,指令執(zhí)行效率更高。③支持32位ARM指令集和16位Thumb指令集。④支持32位的高速AMBA總線接口。⑤支持VFP9浮點(diǎn)處理協(xié)處理器。⑥全性能MMU,支持WindowsCE、Linux、PalmOS等主流嵌入式操作系統(tǒng)。⑦M(jìn)PU支持實(shí)時(shí)操作系統(tǒng)。⑧支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。⑨主頻最高可達(dá)300MIPS。ARM處理器內(nèi)核系列ARM體系結(jié)構(gòu)與指令集ARM10E系列微處理器的主要特點(diǎn)如下:①支持DSP指令集,適合于需要高速數(shù)字信號(hào)處理的場(chǎng)合。②6級(jí)整數(shù)流水線,指令執(zhí)行效率更高。③支持32位ARM指令集和16位Thumb指令集。④支持32位的高速AMBA總線接口。⑤支持VFP10浮點(diǎn)處理協(xié)處理器。⑥全性能MMU,支持WindowsCE、Linux、PalmOS等主流嵌入式操作系統(tǒng)。⑦支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。⑧主頻最高可達(dá)400MIPS。⑨內(nèi)嵌并行讀/寫操作部件。ARM處理器內(nèi)核系列ARM體系結(jié)構(gòu)與指令集ARM11系列微處理器是ARM新指令架構(gòu)—ARMv6的第一代設(shè)計(jì)實(shí)現(xiàn),具有強(qiáng)勁的媒體處理能力和低功耗特點(diǎn):①8級(jí)流水線為比以前的ARM內(nèi)核提高了至少40%的吞吐量。②低功耗,ARM11處理器是為了有效地提供高性能處理能力而設(shè)計(jì)的。在這里需要強(qiáng)調(diào)的是,ARM并不是不能設(shè)計(jì)出運(yùn)行在更高頻率的處理器,而是在處理器能提供超高性能的同時(shí),還要保證功耗、面積的有效性。③ARM11處理器軟件可以與以前所有ARM處理器兼容,并引入了用于媒體處理的32位SIMD、用于提高操作系統(tǒng)上下文切換性能的物理標(biāo)記高速緩存、強(qiáng)制實(shí)施硬件安全措施的TrustZone以及針對(duì)實(shí)時(shí)應(yīng)用的緊密耦合內(nèi)存。ARM處理器內(nèi)核系列ARM體系結(jié)構(gòu)與指令集ARMCortex系列Cortex-A系列處理器適用于具有高計(jì)算要求、運(yùn)行豐富操作系統(tǒng)以及提供交互媒體和圖形體驗(yàn)的應(yīng)用領(lǐng)域。從最新技術(shù)的移動(dòng)Internet必備設(shè)備(如手機(jī)和超便攜的上網(wǎng)本或智能本)到汽車信息娛樂系統(tǒng)和下一代數(shù)字電視系統(tǒng),性能較以往內(nèi)核有很大提高,如ARMCortex-A8核心能夠提供3倍于ARM11的性能。Cortex-R系列專為高性能、可靠性和容錯(cuò)能力而設(shè)計(jì)的,其行為具有高確定性,同時(shí)保持很高的能效和成本效益。目標(biāo)應(yīng)用包括智能手機(jī)和基帶調(diào)制解調(diào)器、硬盤驅(qū)動(dòng)器、家庭消費(fèi)性電子產(chǎn)品、工業(yè)和汽車行業(yè)的可靠系統(tǒng)的嵌入式微控制器。在這些應(yīng)用中,采用的是對(duì)處理響應(yīng)設(shè)置硬截止時(shí)間的系統(tǒng),如果要避免數(shù)據(jù)丟失或機(jī)械損傷,則必須符合所設(shè)置的這些硬截止時(shí)間。ARM處理器內(nèi)核系列ARM體系結(jié)構(gòu)與指令集ARMCortex-M處理器系列是一系列可向上兼容的高能效、易于使用的處理器,這些處理器旨在幫助開發(fā)人員滿足將來的嵌入式應(yīng)用的需要。這些需要包括以更低的成本提供更多功能、不斷增加連接、改善代碼重用和提高能效。Cortex-M系列針對(duì)成本和功耗敏感的MCU和終端應(yīng)用(如智能測(cè)量、人機(jī)接口設(shè)備、汽車和工業(yè)控制系統(tǒng)、大型家用電器、消費(fèi)性產(chǎn)品和醫(yī)療器械)的混合信號(hào)設(shè)備進(jìn)行過優(yōu)化。ARM處理器內(nèi)核系列ARM體系結(jié)構(gòu)與指令集(1)復(fù)雜指令集和精簡(jiǎn)指令集微處理器的架構(gòu)根據(jù)指令結(jié)構(gòu)可以分為復(fù)雜指令集(ComplexInstructionSetComputer,CISC)架構(gòu)和精簡(jiǎn)指令集(ReducedInstructionSetComputer,RISC)架構(gòu),CISC架構(gòu)采用龐大的指令集,可以減少編程所需要的代碼行數(shù),減輕程式師的負(fù)擔(dān),RISC采用精簡(jiǎn)指令集,包含了簡(jiǎn)單、基本的指令,透過這些簡(jiǎn)單、基本的指令,就可以組合成復(fù)雜指令,二者各有優(yōu)缺點(diǎn)。CISC在桌面電腦和服務(wù)器中應(yīng)用廣泛,而RISC在嵌入式微處理器中則占有較大的市場(chǎng)份額。ARM系列的芯片全部基于RISC技術(shù)。體系架構(gòu)分類ARM體系結(jié)構(gòu)與指令集體系架構(gòu)分類(2)普林斯頓結(jié)構(gòu)和哈佛結(jié)構(gòu)微處理器根據(jù)存儲(chǔ)器結(jié)構(gòu)可以分為哈佛(Harvard)結(jié)構(gòu)和普林斯頓(Princeton)結(jié)構(gòu)。ARM內(nèi)核中ARM7系列基于普林斯頓結(jié)構(gòu),ARM9系列之后基本都為哈佛結(jié)構(gòu)。普林斯頓結(jié)構(gòu)也稱馮·諾伊曼結(jié)構(gòu),是一種將程序指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合并在一起的存儲(chǔ)器結(jié)構(gòu)。程序指令存儲(chǔ)地址和數(shù)據(jù)存儲(chǔ)地址指向同一個(gè)存儲(chǔ)器的不同物理位置,因此,程序指令和數(shù)據(jù)的寬度相同。哈佛結(jié)構(gòu)是一種將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開的存儲(chǔ)器結(jié)構(gòu)。中央處理器首先到程序指令存儲(chǔ)器中讀取程序指令內(nèi)容,解碼后得到數(shù)據(jù)地址,再到相應(yīng)的數(shù)據(jù)存儲(chǔ)器中讀取數(shù)據(jù),并進(jìn)行下一步的操作(通常是執(zhí)行)。程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開,可以使指令和數(shù)據(jù)有不同的數(shù)據(jù)寬度。其結(jié)構(gòu)比較如圖2-1所示。ARM體系結(jié)構(gòu)與指令集體系架構(gòu)分類ARM體系結(jié)構(gòu)與指令集流水線技術(shù)(1)三級(jí)流水線技術(shù)ARM7系列內(nèi)核采用馮·諾伊曼結(jié)構(gòu),與之對(duì)應(yīng)采用了三級(jí)流水線的內(nèi)核結(jié)構(gòu),如圖2-2所示。ARM體系結(jié)構(gòu)與指令集
流水線技術(shù)
ARM體系結(jié)構(gòu)與指令集在流水線中各級(jí)的功能如下。●取指:將指令從存儲(chǔ)器中取出,放入指令Cache中?!褡g碼:由譯碼邏輯單元完成,是將在上一步指令Cache中的指令進(jìn)行解釋,告訴CPU將如何操作?!駡?zhí)行:這階段包括移位操作、讀通用寄存器內(nèi)容、輸出結(jié)果、寫通用寄存器等。
流水線技術(shù)
ARM體系結(jié)構(gòu)與指令集ARM7的三級(jí)流水線在執(zhí)行單元完成了大量的工作,包括與操作數(shù)相關(guān)的寄存器和存儲(chǔ)器讀寫操作、ALU操作以及相關(guān)器件之間的數(shù)據(jù)傳輸。執(zhí)行單元的工作往往占用多個(gè)時(shí)鐘周期,從而成為系統(tǒng)性能的瓶頸。在存在存儲(chǔ)器訪問指令、跳轉(zhuǎn)指令的情況下會(huì)出現(xiàn)流水線阻斷情況,導(dǎo)致流水線的性能下降。圖2-4所示為帶有存儲(chǔ)器訪問指令的流水線工作情況。流水線技術(shù)ARM體系結(jié)構(gòu)與指令集流水線技術(shù)ARM體系結(jié)構(gòu)與指令集(2)五級(jí)流水線技術(shù)
ARM9采用哈佛架構(gòu),避免了數(shù)據(jù)訪問和取指的總線沖突,采用更為高效的五級(jí)流水線設(shè)計(jì)。如圖2-5所示,在指令操作上采用五級(jí)流水線。各級(jí)的功能如下。●取指:從指令Cache中讀取指令。●譯碼:對(duì)指令進(jìn)行譯碼,識(shí)別出是對(duì)哪個(gè)寄存器進(jìn)行操作并從通用寄存器中讀取操作數(shù)?!駡?zhí)行:進(jìn)行ALU運(yùn)算和移位操作,如果是對(duì)存儲(chǔ)器操作的指令,則在ALU中計(jì)算出要訪問的存儲(chǔ)器地址?!翊鎯?chǔ)器訪問:如果是對(duì)存儲(chǔ)器訪問的指令,用來實(shí)現(xiàn)數(shù)據(jù)緩沖功能(通過數(shù)據(jù)Cache)?!窦拇嫫骰貙懀簩⒅噶钸\(yùn)算或操作結(jié)果寫回到目標(biāo)寄存器中。流水線技術(shù)ARM體系結(jié)構(gòu)與指令集這種五級(jí)流水技術(shù)把三級(jí)流水線中的執(zhí)行單元進(jìn)一步細(xì)化,減少了在每個(gè)時(shí)鐘周期內(nèi)必須完成的工作量,進(jìn)而允許使用較高的時(shí)鐘頻率,且具有分開的指令和數(shù)據(jù)存儲(chǔ)器,解決了三級(jí)流水線中存儲(chǔ)器訪問指令在指令執(zhí)行階段的延遲問題。有資料表明,同樣主頻下ARM9的處理性能比ARM7高20%~30%。圖2-6為五級(jí)流水線的最佳運(yùn)行示意圖。流水線技術(shù)ARM體系結(jié)構(gòu)與指令集流水線技術(shù)ARM體系結(jié)構(gòu)與指令集五級(jí)流水互鎖示意圖流水線技術(shù)ARM體系結(jié)構(gòu)與指令集ARM微處理器支持7種運(yùn)行模式。①用戶模式(usr):ARM處理器正常的程序執(zhí)行狀態(tài)。②快速中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理。③外部中斷模式(irq):用于通用的中斷處理。④管理模式(svc):操作系統(tǒng)使用的保護(hù)模式。⑤數(shù)據(jù)訪問終止模式(abt):當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)。⑥系統(tǒng)模式(sys):運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)。⑦未定義指令中止模式(und):當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真。ARM處理器模式ARM體系結(jié)構(gòu)與指令集通用寄存器包括R0~R15,可以分為未分組寄存器(R0~R7)、分組寄存器(R8~R14)和程序計(jì)數(shù)器PC(R15)3類。(1)未分組寄存器R0~R7在所有的運(yùn)行模式下,未分組寄存器都指向同一個(gè)物理寄存器,它們未被系統(tǒng)用作特殊的用途,因此,在中斷或異常處理進(jìn)行運(yùn)行模式轉(zhuǎn)換時(shí),由于不同的處理器運(yùn)行模式均使用相同的物理寄存器,可能會(huì)造成寄存器中數(shù)據(jù)的破壞,這一點(diǎn)在進(jìn)行程序設(shè)計(jì)時(shí)應(yīng)引起注意。1.通用寄存器ARM體系結(jié)構(gòu)與指令集1.通用寄存器ARM體系結(jié)構(gòu)與指令集(2)分組寄存器R8~R14對(duì)于分組寄存器,它們每一次所訪問的物理寄存器與處理器當(dāng)前的運(yùn)行模式有關(guān)。對(duì)于R8~R12來說,每個(gè)寄存器對(duì)應(yīng)兩個(gè)不同的物理寄存器,當(dāng)使用fiq模式時(shí),訪問寄存器R8_fiq~R12_fiq;當(dāng)使用除fiq模式以外的其他模式時(shí),訪問寄存器R8_usr~R12_usr。對(duì)于R13、R14來說,每個(gè)寄存器對(duì)應(yīng)6個(gè)不同的物理寄存器,其中的一個(gè)是用戶模式與系統(tǒng)模式共用,另外5個(gè)物理寄存器對(duì)應(yīng)于其他5種不同的運(yùn)行模式。采用以下的記號(hào)來區(qū)分不同的物理寄存器:R13_<mode>R14_<mode>1.通用寄存器ARM體系結(jié)構(gòu)與指令集寄存器R13在ARM指令中常用作堆棧指針,但這只是一種習(xí)慣用法,用戶也可使用其他的寄存器作為堆棧指針。而在Thumb指令集中,某些指令強(qiáng)制性的要求使用R13作為堆棧指針。由于處理器的每種運(yùn)行模式均有自己獨(dú)立的物理寄存器R13,在用戶應(yīng)用程序的初始化部分,一般都要初始化每種模式下的R13,使其指向該運(yùn)行模式的??臻g,這樣,當(dāng)程序的運(yùn)行進(jìn)入異常模式時(shí),可以將需要保護(hù)的寄存器放入R13所指向的堆棧,而當(dāng)程序從異常模式返回時(shí),則從對(duì)應(yīng)的堆棧中恢復(fù),采用這種方式可以保證異常發(fā)生后程序的正常執(zhí)行。1.通用寄存器ARM體系結(jié)構(gòu)與指令集R14也稱為子程序連接寄存器(SubroutineLinkRegister)或連接寄存器(LR)。當(dāng)執(zhí)行BL子程序調(diào)用指令時(shí),R14中得到R15(程序計(jì)數(shù)器PC)的備份。其他情況下,R14用作通用寄存器。與之類似,當(dāng)發(fā)生中斷或異常時(shí),對(duì)應(yīng)的分組寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用來保存R15的返回值。1.通用寄存器ARM體系結(jié)構(gòu)與指令集(3)程序計(jì)數(shù)器PC(R15)寄存器R15用作程序計(jì)數(shù)器(PC)。在ARM狀態(tài)下,位[1:0]為0,位[31:2]用于保存PC;在Thumb狀態(tài)下,位[0]為0,位[31:1]用于保存PC。R15雖然可以用作通用寄存器,但是有一些指令在使用R15時(shí)有一些特殊限制,若不注意,執(zhí)行的結(jié)果將是不可預(yù)料的。在ARM狀態(tài)下,PC的0和1位是0,在Thumb狀態(tài)下,PC的0位是0。1.通用寄存器ARM體系結(jié)構(gòu)與指令集寄存器R16用作當(dāng)前程序狀態(tài)寄存器(CurrentProgramStatusRegister,CPSR),CPSR可在任何運(yùn)行模式下被訪問,它包括條件標(biāo)志位、中斷禁止位、當(dāng)前處理器模式標(biāo)志位,以及其他一些相關(guān)的控制和狀態(tài)位。程序狀態(tài)寄存器的功能包括保存ALU中的當(dāng)前操作信息、控制允許和禁止中斷、設(shè)置處理器的運(yùn)行模式,程序狀態(tài)寄存器的每一位的安排如圖2-9所示。程序狀態(tài)寄存器ARM體系結(jié)構(gòu)與指令集程序狀態(tài)寄存器ARM體系結(jié)構(gòu)與指令集(1)條件碼標(biāo)志程序狀態(tài)寄存器ARM體系結(jié)構(gòu)與指令集(2)控制位PSR的低8位(包括I、F、T和M[4:0])稱為控制位,當(dāng)發(fā)生異常時(shí)這些位可以被改變。如果處理器運(yùn)行特權(quán)模式,這些位也可以由程序修改。I、F為中斷禁止位,I=1禁止IRQ中斷,F(xiàn)=1禁止FIQ中斷;T標(biāo)志位反映處理器的運(yùn)行狀態(tài),運(yùn)行模式位M決定了處理器的運(yùn)行模式。對(duì)于ARM體系結(jié)構(gòu)v5及以上的版本的T系列處理器,當(dāng)該位為1時(shí),程序運(yùn)行于Thumb狀態(tài),否則運(yùn)行于ARM狀態(tài)。對(duì)于ARM體系結(jié)構(gòu)v5及以上的版本的非T系列處理器,當(dāng)該位為1時(shí),執(zhí)行下一條指令以引起為定義的指令異常;當(dāng)該位為0時(shí),表示運(yùn)行于ARM狀態(tài)。ARM內(nèi)部寄存器ARM體系結(jié)構(gòu)與指令集ARM內(nèi)部寄存器(3)保留位PSR中的其余位為保留位,當(dāng)改變PSR中的條件碼標(biāo)志位或者控制位時(shí),保留位不要被改變,在程序中也不要使用保留位來存儲(chǔ)數(shù)據(jù)。保留位將用于ARM版本的擴(kuò)展。ARM體系結(jié)構(gòu)與指令集不同模式下寄存器組織ARM體系結(jié)構(gòu)與指令集異常類型ARM體系結(jié)構(gòu)與指令集當(dāng)一個(gè)異常出現(xiàn)以后,ARM微處理器會(huì)執(zhí)行以下幾步操作。①將下一條指令的地址存入相應(yīng)連接寄存器LR,以便程序在處理異常返回時(shí)能從正確的位置重新開始執(zhí)行。若異常是從ARM狀態(tài)進(jìn)入,LR寄存器中保存的是下一條指令的地址(當(dāng)前PC+4或PC+8,與異常的類型有關(guān));若異常是從Thumb狀態(tài)進(jìn)入,則在LR寄存器中保存當(dāng)前PC的偏移量,這樣,異常處理程序就不需要確定異常是從何種狀態(tài)進(jìn)入的。例如,在軟件中斷異常SWI,指令MOVPC,R14_svc總是返回到下一條指令,不管SWI是在ARM狀態(tài)執(zhí)行,還是在Thumb狀態(tài)執(zhí)行。②將CPSR復(fù)制到相應(yīng)的SPSR中。③根據(jù)異常類型,強(qiáng)制設(shè)置CPSR的運(yùn)行模式位。④強(qiáng)制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。還可以設(shè)置中斷禁止位,以禁止中斷發(fā)生。如果異常發(fā)生時(shí),處理器處于Thumb狀態(tài),則當(dāng)異常向量地址加載入PC時(shí),處理器自動(dòng)切換到ARM狀態(tài)。處理流程ARM體系結(jié)構(gòu)與指令集ARM微處理器對(duì)異常的響應(yīng)過程用偽碼描述如下:
R14_<Exception_Mode>=ReturnLinkSPSR_<Exception_Mode>=CPSRCPSR[4:0]=ExceptionModeNumberCPSR[5]=0 ;當(dāng)運(yùn)行于ARM工作狀態(tài)時(shí)If<Exception_Mode>==ResetorFIQthen ;當(dāng)響應(yīng)FIQ異常時(shí),禁止新的FIQ異常CPSR[6]=1 CPSR[7]=1PC=ExceptionVectorAddress
⑤異常處理完畢之后,ARM微處理器會(huì)執(zhí)行以下幾步操作從異常返回:處理流程ARM體系結(jié)構(gòu)與指令集●將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中;●將SPSR復(fù)制回CPSR中;●若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除。可以認(rèn)為應(yīng)用程序總是從復(fù)位異常處理程序開始執(zhí)行的,因此,復(fù)位異常處理程序不需要返回。處理流程ARM體系結(jié)構(gòu)與指令集當(dāng)多個(gè)異常同時(shí)發(fā)生時(shí),系統(tǒng)根據(jù)固定的優(yōu)先級(jí)(ExceptionPriorities)決定異常的處理次序。異常優(yōu)先級(jí)由高到低的排列次序如表2-6所示。優(yōu)先級(jí)1.地址空間ARM體系結(jié)構(gòu)將存儲(chǔ)器看做是從零地址開始的字節(jié)的線性組合。從0字節(jié)到3字節(jié)放置第1個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),從第4個(gè)字節(jié)到第7個(gè)字節(jié)放置第2個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),依次排列。作為32位的微處理器,ARM體系結(jié)構(gòu)所支持的最大尋址空間為4GB(232字節(jié))。當(dāng)程序正常執(zhí)行時(shí),每執(zhí)行一條ARM指令,當(dāng)前指令計(jì)數(shù)器加4個(gè)字節(jié);每執(zhí)行一條Thumb指令,當(dāng)前指令計(jì)數(shù)器加2個(gè)字節(jié)。ARM體系的存儲(chǔ)系統(tǒng)ARM體系結(jié)構(gòu)與指令集2.存儲(chǔ)器格式ARM體系結(jié)構(gòu)可以用兩種方法存儲(chǔ)字?jǐn)?shù)據(jù),稱之為大端格式和小端格式。大端格式中字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中,如圖2-11所示。小端格式與大端存儲(chǔ)格式相反,在小端存儲(chǔ)格式中,低地址中存放的是字?jǐn)?shù)據(jù)的低字節(jié),高地址存放的是字?jǐn)?shù)據(jù)的高字節(jié),如圖2-12所示。ARM體系的存儲(chǔ)系統(tǒng)ARM體系結(jié)構(gòu)與指令集ARM體系的存儲(chǔ)系統(tǒng)ARM體系結(jié)構(gòu)與指令集3.存儲(chǔ)器訪問對(duì)準(zhǔn)ARM系統(tǒng)中無論取指還是內(nèi)存訪問都應(yīng)根據(jù)指令以字、半字或字節(jié)對(duì)準(zhǔn)訪問,如果出現(xiàn)非對(duì)齊的情況,將發(fā)生錯(cuò)誤。(1)非對(duì)齊的指令預(yù)取操作如果是在ARM狀態(tài)下將一個(gè)非對(duì)齊地址寫入PC,則數(shù)據(jù)在寫入PC時(shí),數(shù)據(jù)的第0位和第1位被忽略,最終PC的bit[1:0]為0;如果是在Thumb狀態(tài)下將一個(gè)非對(duì)齊地址寫入PC,則數(shù)據(jù)在寫入PC時(shí),數(shù)據(jù)的第0位被忽略,最終PC的bit[0]為0。ARM體系的存儲(chǔ)系統(tǒng)ARM體系結(jié)構(gòu)與指令集(2)非對(duì)齊地址內(nèi)存的訪問操作對(duì)于LOAD/STORE操作,系統(tǒng)定義了下面3種可能的結(jié)果。①執(zhí)行結(jié)果不可預(yù)知。②忽略字單元地址低兩位的值,即訪問地址為字單元;忽略半字單元最低位的值,即訪問地址為半字單元。這種忽略是由存儲(chǔ)系統(tǒng)自動(dòng)實(shí)現(xiàn)的。③在LDR和SWP指令中,對(duì)存儲(chǔ)器訪問忽略造成地址不對(duì)齊的低地址位,然后使用這些低地址位控制裝載數(shù)據(jù)的循環(huán)。ARM體系的存儲(chǔ)系統(tǒng)ARM體系結(jié)構(gòu)與指令集ARM內(nèi)核屬于RISC結(jié)構(gòu),所以其指令集有著一些獨(dú)特的特點(diǎn):指令長(zhǎng)度固定,指令格式的種類少,尋址方式簡(jiǎn)單。由于ARM處理器采用固定長(zhǎng)度的32位指令,因此,處理器內(nèi)部硬件設(shè)計(jì)能夠被簡(jiǎn)化。ARM處理器內(nèi)部的指令譯碼采用硬布線邏輯,不使用微程序控制,以減少指令的譯碼時(shí)間,大部分指令可以在一個(gè)時(shí)鐘周期內(nèi)完成。需要特別指出的是,ARM處理器的指令集是加載/存儲(chǔ)型的,也即指令集僅能處理寄存器中的數(shù)據(jù),而且處理結(jié)果都要放回寄存器中,而對(duì)系統(tǒng)存儲(chǔ)器的訪問則需要通過專門的加載/存儲(chǔ)指令來完成。ARM指令系統(tǒng)ARM體系結(jié)構(gòu)與指令集用ARM指令助記符表示為:<opcode>{<cond>}{S}<Rd>,<Rn>,<shift_op2>每個(gè)域的含義如下。①<opcode>:操作碼域,指令編碼的助記符。②{<cond>}:條件碼域,指令允許執(zhí)行的條件編碼。花括號(hào)表示此項(xiàng)可默認(rèn)。ARM指令的一個(gè)重要特點(diǎn)是可以條件執(zhí)行,每條ARM指令的條件碼域包含4位條件碼,共16種。幾乎所有指令均根據(jù)CPSR中條件碼的狀態(tài)和指令條件碼域的設(shè)置有條件地執(zhí)行。當(dāng)指令執(zhí)行條件滿足時(shí),指令被執(zhí)行,否則被忽略。指令條件碼及其助記符后綴表示如表2-7所示。ARM指令格式ARM體系結(jié)構(gòu)與指令集ARM指令格式ARM體系結(jié)構(gòu)與指令集每種條件碼可用兩個(gè)字符表示,這兩個(gè)字符可以作為后綴添加在指令助記符的后面和指令同時(shí)使用。例如,跳轉(zhuǎn)指令B可以加上后綴EQ變?yōu)锽EQ,表示“相等則跳轉(zhuǎn)”,即當(dāng)CPSR中的Z標(biāo)志置位時(shí)發(fā)生跳轉(zhuǎn)。③{S}:條件碼設(shè)置域。這是一個(gè)可選項(xiàng),當(dāng)在指令中設(shè)置{S}域時(shí),指令執(zhí)行的結(jié)果將會(huì)影響程序狀態(tài)寄存器CPSR中相應(yīng)的狀態(tài)標(biāo)志。例如:
ADDR0,R1,R2 ;R1與R2的和存放到R0寄存器中,不影響狀態(tài)寄存器ADDSR0,R1,R2 ;執(zhí)行加法的同時(shí)影響狀態(tài)寄存器
指令中比較特殊的是CMP指令,它不需要加S后綴就默認(rèn)地根據(jù)計(jì)算結(jié)構(gòu)更改程序狀態(tài)寄存器。④<Rd>:目的操作數(shù)。ARM指令中的目的操作數(shù)總是一個(gè)寄存器。如果<Rd>與第1操作數(shù)寄存器<Rn>相同,也必須要指明,不能默認(rèn)。⑤<Rn>:第1操作數(shù)。ARM指令中的第1操作數(shù)也必須是個(gè)寄存器。⑥<shift_op2>:第2操作數(shù)。在第2操作數(shù)中可以是寄存器、內(nèi)存存儲(chǔ)單元或者立即數(shù)。由于第2操作數(shù)只有12個(gè)bit,用第2操作數(shù)表示立即數(shù)時(shí),其取值范圍為0~212?1,要表示超出這個(gè)范圍的立即數(shù),通常要依靠偽指令實(shí)現(xiàn)。ARM指令格式ARM體系結(jié)構(gòu)與指令集立即尋址也叫立即數(shù)尋址,操作數(shù)本身就在指令中給出,只要取出指令也就取到了操作數(shù)。這個(gè)操作數(shù)被稱為立即數(shù),對(duì)應(yīng)的尋址方式也就叫做立即尋址。例如,以下指令:
ADDR0,R0,#1 ;R3←R0+1
立即數(shù)的表示以“#”為前綴,十六進(jìn)制的立即數(shù)在“#”后面加“&”符號(hào),以二進(jìn)制表示的立即數(shù),要求在“#”后加上“%”。立即尋址ARM體系結(jié)構(gòu)與指令集指令地址碼給出寄存器的編號(hào),寄存器中的內(nèi)容為操作數(shù),這種尋址方式是各類微處理器經(jīng)常采用的一種方式,也是一種執(zhí)行效率較高的尋址方式。例如,以下指令:
ADDR0,R1,R2 ;R0←R1+R2
寫操作數(shù)的順序?yàn)椋旱?個(gè)寄存器R0為結(jié)果寄存器,第2個(gè)寄存器R1為第1操作數(shù)寄存器,第3個(gè)寄存器R2為第2操作數(shù)寄存器。寄存器尋址ARM體系結(jié)構(gòu)與指令集寄存器間接尋址就是以寄存器中的值作為操作數(shù)的地址,而操作數(shù)本身存放在存儲(chǔ)器中。例如,以下指令:
LDRR0,[R1] ;R0←[R1]STRR0,[R1] ;[R1]←R0
第1條指令將以R1的值為地址的存儲(chǔ)器中的數(shù)據(jù)傳送到R0中。第2條指令將R0的值傳送到以R1的值為地址的存儲(chǔ)器中。
寄存器間接尋址
ARM體系結(jié)構(gòu)與指令集基址變址尋址就是將寄存器(該寄存器一般稱作基址寄存器)的內(nèi)容與指令中給出的地址偏移量相加,從而得到一個(gè)操作數(shù)的有效地址。變址尋址方式常用于訪問某基地址附近的地址單元。包括基址加偏移量尋址和基址加索引尋址,可以將寄存器間接尋址看做是位移量為0的基址加偏移量尋址。前索引尋址舉例:
LDRR0,[R1,#4] ;R0←[R1+4]
后索引尋址舉例:
LDRR0,[R1],#4 ;R0←[R1] ;R1←R1+4帶自動(dòng)索引的前索引尋址舉例:LDRR0,[R1,#4]! ;R0←[R1+4] ;R1←R1+4基址加索引尋址舉例:
LDRR0,[R1,R2] ;R0←[R1+R2]
基址變址尋址
ARM體系結(jié)構(gòu)與指令集多寄存器尋址是指一次可以傳送多個(gè)寄存器的值,允許一條指令可以傳送16個(gè)寄存器的任何子集。例如,以下指令:
LDMIAR0,{R1,R2,R3,R4} ;R1←[R0]
;R2←[R0+4]
;R3←[R0+8]
;R4←[R0+12]
多寄存器指令的后綴含義如下:I:IncrementD:DecrementA:AfterB:Before該指令的后綴IA表示在每次執(zhí)行完加載/存儲(chǔ)操作后,R0按字長(zhǎng)度增加,因此,指令可將連續(xù)存儲(chǔ)單元的值傳送到R1~R4。多個(gè)連續(xù)的寄存器可以用“-”符號(hào)連接;不連續(xù)的寄存器用“,”分隔書寫,如上例可寫成:
LDMIAR0,{R1-R4}LDMIAR0,{R1-R3,R4}多寄存器尋址ARM體系結(jié)構(gòu)與指令集移位操作包括如下5種類型。LSL:邏輯左移(LogicalShiftLeft)。寄存器中字的低端空出的位補(bǔ)0。LSR:邏輯右移(LogicalShiftRight)。寄存器中字的高端空出的位補(bǔ)0。ASR:算術(shù)右移(ArithmeticShiftRight)。算術(shù)移位的對(duì)象是帶符號(hào)數(shù)。在移位過程中必須保持操作數(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)志填充。寄存器移位尋址ARM體系結(jié)構(gòu)與指令集與基址變址尋址方式相類似,相對(duì)尋址以程序計(jì)數(shù)器PC的當(dāng)前值為基地址,指令中的地址標(biāo)號(hào)作為偏移量,將兩者相加之后得到操作數(shù)的有效地址。以下程序段完成子程序的調(diào)用和返回,跳轉(zhuǎn)指令BL采用了相對(duì)尋址方式:
BLLOOP ;跳轉(zhuǎn)到子程序LOOP處執(zhí)行……LOOP……MOVPC,LR ;從子程序返回相對(duì)尋址ARM體系結(jié)構(gòu)與指令集堆棧是一種數(shù)據(jù)結(jié)構(gòu),按先進(jìn)后出(FirstInLastOut,F(xiàn)ILO)的方式工作,使用一個(gè)稱為堆棧指針的專用寄存器指示當(dāng)前的操作位置,堆棧指針總是指向棧頂。當(dāng)堆棧指針指向最后壓入堆棧的數(shù)據(jù)時(shí),稱為滿堆棧(FullStack),而當(dāng)堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置時(shí),稱為空堆棧(EmptyStack)。同時(shí),當(dāng)堆棧由低地址向高地址生成時(shí),稱為遞增堆棧(AscendingStack),當(dāng)堆棧由高地址向低地址生成時(shí),稱為遞減堆棧(DecendingStack)。這樣就有4種類型的堆棧工作方式,ARM微處理器支持這4種類型的堆棧工作方式。堆棧尋址ARM體系結(jié)構(gòu)與指令集滿遞增堆棧(FA):堆棧指針指向最后壓入的數(shù)據(jù),且由低地址向高地址生成。②滿遞減堆棧(FD):堆棧指針指向最后壓入的數(shù)據(jù),且由高地址向低地址生成。③空遞增堆棧(EA):堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由低地址向高地址生成。④空遞減堆棧(ED):堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由高地址向低地址生成。堆棧尋址ARM體系結(jié)構(gòu)與指令集ARM處理器的指令按功能可分為7大類:加載/存儲(chǔ)指令(包括批量加載/存儲(chǔ)指令)、分支指令、數(shù)據(jù)處理指令、乘法指令、狀態(tài)寄存器訪問指令、異常中斷指令和協(xié)處理器指令。
ARM指令集
ARM體系結(jié)構(gòu)與指令集(1)LDR指令格式:LDR目的寄存器,<存儲(chǔ)器地址>功能:LDR指令用于從存儲(chǔ)器中將一個(gè)32位的字?jǐn)?shù)據(jù)傳送到目的寄存器中。該指令通常用于從存儲(chǔ)器中讀取32位的字?jǐn)?shù)據(jù)到通用寄存器,然后對(duì)數(shù)據(jù)進(jìn)行處理。當(dāng)程序計(jì)數(shù)器PC作為目的寄存器時(shí),指令從存儲(chǔ)器中讀取的字?jǐn)?shù)據(jù)被當(dāng)作目的地址,從而可以實(shí)現(xiàn)程序流程的跳轉(zhuǎn)。該指令在程序設(shè)計(jì)中比較常用,且尋址方式靈活多樣。
LDRR0,[R1] ;將存儲(chǔ)器地址為R1的字?jǐn)?shù)據(jù)讀入寄存器R0LDRR0,[R1,R2] ;將存儲(chǔ)器地址為R1+R2的字?jǐn)?shù)據(jù)讀入寄存器R0LDRR0,[R1,#8] ;將存儲(chǔ)器地址為R1+8的字?jǐn)?shù)據(jù)讀入寄存器R0LDRR0,[R1,R2,LSL#2]!;將存儲(chǔ)器地址為R1+R2×4的數(shù)據(jù)讀入寄存器R0,并將新地址R1+R2×4寫入R1LDRR0,[R1],R2,LSL#2;將存儲(chǔ)器地址為R1的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址R1+R2×4寫入R1
加載/存儲(chǔ)指令A(yù)RM體系結(jié)構(gòu)與指令集(2)LDRB指令格式:LDRB目的寄存器,<存儲(chǔ)器地址>功能:LDRB指令用于從存儲(chǔ)器中將一個(gè)8位的字節(jié)數(shù)據(jù)傳送到目的寄存器中,同時(shí)將寄存器的高24位清零。該指令通常用于從存儲(chǔ)器中讀取8位的字節(jié)數(shù)據(jù)到通用寄存器,然后對(duì)數(shù)據(jù)進(jìn)行處理。當(dāng)程序計(jì)數(shù)器PC作為目的寄存器時(shí),指令從存儲(chǔ)器中讀取的字?jǐn)?shù)據(jù)被當(dāng)作目的地址,從而可以實(shí)現(xiàn)程序流程的跳轉(zhuǎn)。
LDRBR0,[R1];將存儲(chǔ)器地址為R1的字節(jié)數(shù)據(jù)讀入寄存器R0,并將R0的高24位清零加載/存儲(chǔ)指令A(yù)RM體系結(jié)構(gòu)與指令集(3)LDRH指令格式:LDRH目的寄存器,<存儲(chǔ)器地址>功能:LDRH指令用于從存儲(chǔ)器中將一個(gè)16位的半字?jǐn)?shù)據(jù)傳送到目的寄存器中,同時(shí)將寄存器的高16位清零。該指令通常用于從存儲(chǔ)器中讀取16位的半字?jǐn)?shù)據(jù)到通用寄存器,然后對(duì)數(shù)據(jù)進(jìn)行處理。當(dāng)程序計(jì)數(shù)器PC作為目的寄存器時(shí),指令從存儲(chǔ)器中讀取的字?jǐn)?shù)據(jù)被當(dāng)作目的地址,從而可以實(shí)現(xiàn)程序流程的跳轉(zhuǎn)。加載/存儲(chǔ)指令A(yù)RM體系結(jié)構(gòu)與指令集(4)STR指令格式:STR源寄存器,<存儲(chǔ)器地址>功能:STR指令用于從源寄存器中將一個(gè)32位的字?jǐn)?shù)據(jù)傳送到存儲(chǔ)器中。該指令在程序設(shè)計(jì)中比較常用,且尋址方式靈活多樣,使用方式可參考指令LDR。
STRR0,[R1],#8;將R0中的字?jǐn)?shù)據(jù)寫入以R1為地址的存儲(chǔ)器中,并將新地址R1+8寫入R1加載/存儲(chǔ)指令A(yù)RM體系結(jié)構(gòu)與指令集(5)STRB指令格式:STRB源寄存器,<存儲(chǔ)器地址>功能:STRB指令用于從源寄存器中將一個(gè)8位的字節(jié)數(shù)據(jù)傳送到存儲(chǔ)器中。該字節(jié)數(shù)據(jù)為源寄存器中的低8位。加載/存儲(chǔ)指令A(yù)RM體系結(jié)構(gòu)與指令集(6)STRH指令格式:STRH源寄存器,<存儲(chǔ)器地址>功能:STRH指令用于從源寄存器中將一個(gè)16位的半字?jǐn)?shù)據(jù)傳送到存儲(chǔ)器中。該半字?jǐn)?shù)據(jù)為源寄存器中的低16位。加載/存儲(chǔ)指令A(yù)RM體系結(jié)構(gòu)與指令集格式:LDM(或STM){類型}基址寄存器{!},寄存器列表{∧}功能:LDM(或STM)指令用于從由基址寄存器所指示的一片連續(xù)存儲(chǔ)器到寄存器列表所指示的多個(gè)寄存器之間傳送數(shù)據(jù),該指令的常見用途是將多個(gè)寄存器的內(nèi)容入?;虺鰲!F渲?,{類型}為以下幾種情況。IA:每次傳送后地址加1。IB:每次傳送前地址加1。DA:每次傳送后地址減1。DB:每次傳送前地址減1。FD:滿遞減堆棧。ED:空遞減堆棧。FA:滿遞增堆棧。EA:空遞增堆棧。批量加載/存儲(chǔ)指令A(yù)RM體系結(jié)構(gòu)與指令集{!}為可選后綴,若選用該后綴,則當(dāng)數(shù)據(jù)傳送完畢之后,將最后的地址寫入基址寄存器,否則基址寄存器的內(nèi)容不改變?;芳拇嫫鞑辉试S為R15,寄存器列表可以為R0~R15的任意組合。{∧}為可選后綴,當(dāng)指令為L(zhǎng)DM且寄存器列表中包含R15,選用該后綴時(shí)表示除了正常的數(shù)據(jù)傳送之外,還將SPSR復(fù)制到CPSR。同時(shí),該后綴還表示傳入或傳出的是用戶模式下的寄存器,而不是當(dāng)前模式下的寄存器。
STMFDR13!,{R0,R4-R12,LR};將寄存器列表中的寄存器(R0,R4到R12,LR)存入堆棧LDMFDR13!,{R0,R4-R12,PC};將堆棧內(nèi)容恢復(fù)到寄存器(R0,R4到R12,LR)批量加載/存儲(chǔ)指令A(yù)RM分支指令也稱跳轉(zhuǎn)指令,用于實(shí)現(xiàn)程序流程的跳轉(zhuǎn),在ARM程序中有如下兩種方法可以實(shí)現(xiàn)程序流程的跳轉(zhuǎn):使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 柔性電路理論培訓(xùn)
- 某公司員工培訓(xùn)
- 2024-2025學(xué)年江西省“三新”協(xié)同教研共同體高二下學(xué)期5月聯(lián)考?xì)v史試題(解析版)
- 2026年網(wǎng)絡(luò)信息安全知識(shí)與應(yīng)對(duì)能力考查題集
- 2026年語言學(xué)習(xí)考試漢語言文化基礎(chǔ)試題
- 2026年汽車制造汽車工程師招聘面試題集與汽車工藝知識(shí)問答
- 2026年計(jì)算機(jī)網(wǎng)絡(luò)安全防護(hù)措施考試題
- 2026年金融科技產(chǎn)品創(chuàng)新與市場(chǎng)需求分析題庫(kù)
- 2026年公共關(guān)系與危機(jī)處理能力測(cè)試題目
- 2026年知識(shí)產(chǎn)權(quán)保護(hù)試題侵權(quán)行為與法律責(zé)任分析題庫(kù)
- 依法行醫(yī)教學(xué)課件
- 《日語零基礎(chǔ)學(xué)習(xí)》課件
- 講課學(xué)生數(shù)學(xué)學(xué)習(xí)成就
- 醫(yī)療器械法規(guī)對(duì)互聯(lián)網(wǎng)銷售的限制
- 西葫蘆栽培技術(shù)要點(diǎn)
- 系桿拱橋系桿預(yù)應(yīng)力施工控制要點(diǎn)
- 高中學(xué)生學(xué)籍表模板(范本)
- 三亞市海棠灣椰子洲島土地價(jià)格咨詢報(bào)告樣本及三洲工程造價(jià)咨詢有限公司管理制度
- 常見磁性礦物的比磁化系數(shù)一覽表
- 高中心理健康教育-給自己點(diǎn)個(gè)贊教學(xué)課件設(shè)計(jì)
- 薪酬管理論文參考文獻(xiàn),參考文獻(xiàn)
評(píng)論
0/150
提交評(píng)論