嵌入式系統(tǒng)課件_第1頁
嵌入式系統(tǒng)課件_第2頁
嵌入式系統(tǒng)課件_第3頁
嵌入式系統(tǒng)課件_第4頁
嵌入式系統(tǒng)課件_第5頁
已閱讀5頁,還剩1071頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

嵌入式系統(tǒng)

1.嵌入式系統(tǒng)2.嵌入式處理器3.嵌入式操作系統(tǒng)嵌入式系統(tǒng)概述1.1嵌入式系統(tǒng)概述

經(jīng)過幾十年的發(fā)展,嵌入式系統(tǒng)已經(jīng)在很大程度改變了人們的生活、工作和娛樂方式,而且這些改變還在加速。嵌入式系統(tǒng)具有無數(shù)的種類,每類都具有自己獨特的個性。例如,MP3、數(shù)碼相機與打印機就有很大的不同。汽車中更是具有多個嵌入式系統(tǒng),使汽車更輕快、更干凈、更容易駕駛?,F(xiàn)實中的嵌入式系統(tǒng)

即使不可見,嵌入式系統(tǒng)也無處不在。嵌入式系統(tǒng)在很多產(chǎn)業(yè)中得到了廣泛的應用并逐步改變著這些產(chǎn)業(yè),包括工業(yè)自動化、國防、運輸和航天領域。例如神州飛船和長征火箭中肯定有很多嵌入式系統(tǒng),導彈的制導系統(tǒng)也是嵌入式系統(tǒng),高檔汽車中也有多達幾十個嵌入式系統(tǒng)。在日常生活中,人們使用各種嵌入式系統(tǒng),但未必知道它們。事實上,幾乎所有帶有一點“智能”的家電(全自動洗衣機、電腦電飯煲…)都是嵌入式系統(tǒng)。嵌入式系統(tǒng)廣泛的適應能力和多樣性,使得視聽、工作場所甚至健身設備中到處都有嵌入式系統(tǒng)。現(xiàn)實中的嵌入式系統(tǒng)嵌入式系統(tǒng)的概念

目前,對嵌入式系統(tǒng)的定義多種多樣,但沒有一種定義是全面的。下面給出兩種比較合理定義:從技術的角度定義:以應用為中心、以計算機技術為基礎、軟件硬件可裁剪、適應應用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。從系統(tǒng)的角度定義:嵌入式系統(tǒng)是設計完成復雜功能的硬件和軟件,并使其緊密耦合在一起的計算機系統(tǒng)。術語嵌入式反映了這些系統(tǒng)通常是更大系統(tǒng)中的一個完整的部分,稱為嵌入的系統(tǒng)。嵌入的系統(tǒng)中可以共存多個嵌入式系統(tǒng)。嵌入式系統(tǒng)示例——汽車控制系統(tǒng)馬達控制器車燈嵌入式系統(tǒng)示例——汽車控制系統(tǒng)尾燈控制系統(tǒng)后車門控制系統(tǒng)前車門控制系統(tǒng)座椅控制系統(tǒng)發(fā)動器控制系統(tǒng)所有的控制系統(tǒng)都是一個完整的嵌入式系統(tǒng)嵌入式系統(tǒng)的未來

早在1990年之前,嵌入式系統(tǒng)通常是很簡單的且具有很長的產(chǎn)品生命周期的自主設備。近些年來,嵌入式工業(yè)經(jīng)歷了巨大的變革。產(chǎn)品市場窗口現(xiàn)在預計翻番的周期狂熱到6~9個月。全球重新定義市場的機會和膨脹的應用空間?;ヂ?lián)現(xiàn)在是一個需求而不是輔助性的,包括用有線和剛剛顯露頭角的無線技術?;陔娮拥漠a(chǎn)品更復雜化?;ヂ?lián)嵌入式系統(tǒng)產(chǎn)生新的依賴網(wǎng)絡基礎設施的應用。微處理器的處理能力按莫爾定律(Moore’sLaw)預計的速度在增加。該定律認為集成電路和晶體管個數(shù)每18個月翻一番。1.嵌入式系統(tǒng)2.嵌入式處理器3.嵌入式操作系統(tǒng)嵌入式系統(tǒng)概述簡介

早期的嵌入式系統(tǒng)通常使用普通個人計算機(PC)中的通用處理器。近年來,隨著大量先進的微處理器制造技術的發(fā)展,越來越多的嵌入式系統(tǒng)用嵌入式處理器建造,而不是用通用目的的處理器。這些嵌入式處理器可以大致分為以下幾類:注重嵌入式處理器的尺寸、能耗和價格。應用于PDA等不注重計算的設備;注重嵌入式處理器的性能。應用于路由器等計算密集型的設備;注重嵌入式處理器的性能、尺寸、能耗和價格。應用于蜂窩電話等設備;1.2嵌入式處理器分類

嵌入式處理器可以分為以下幾大類:嵌入式微處理器;嵌入式微控制器;嵌入式DSP處理器;嵌入式片上系統(tǒng)(SOC)。嵌入式微處理器

嵌入式微處理器的基礎是通用計算機中的CPU。在應用中,將微處理器裝配在專門設計的電路板上,只保留和嵌入式應用有關的母板功能,這樣可以大幅度減小系統(tǒng)體積和功耗。為了滿足嵌入式應用的特殊要求,嵌入式微處理器雖然在功能上和標準微處理器基本是一樣的,但在工作溫度、抗電磁干擾、可靠性等方面一般都做了各種增強。和工業(yè)控制計算機相比,嵌入式微處理器具有體積小、重量輕、成本低、可靠性高的優(yōu)點,但是在電路板上必須包括ROM、RAM、總線接口、各種外設等器件,從而降低了系統(tǒng)的可靠性,技術保密性也較差。嵌入式微處理器及其存儲器、總線、外設等安裝在一塊電路板上,稱為單板計算機。如STD-BUS、PC104等。CPUROMRAM外設1外設2單板計算機嵌入式微控制器

嵌入式微控制器又稱單片機,它是將整個計算機系統(tǒng)集成到一塊芯片中。嵌入式微控制器一般以某一種微處理器內(nèi)核為核心,芯片內(nèi)部集成ROM/EPROM、RAM、總線、總線邏輯、定時/計數(shù)器、WatchDog、I/O、串行口、脈寬調(diào)制輸出、A/D、D/A、FlashRAM、EEPROM等各種必要功能和外設。為適應不同的應用需求,一般一個系列的單片機具有多種衍生產(chǎn)品,每種衍生產(chǎn)品的處理器內(nèi)核都是一樣的,不同的是存儲器和外設的配置及封裝。這樣可以使單片機最大限度地和應用需求相匹配,功能不多不少,從而減少功耗和成本。和嵌入式微處理器相比,微控制器的最大特點是單片化,體積大大減小,從而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系統(tǒng)工業(yè)的主流。微控制器的片上外設資源一般比較豐富,適合于控制,因此稱微控制器。嵌入式微控制器目前的品種和數(shù)量最多,比較有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300、數(shù)目眾多ARM芯片等。目前MCU占嵌入式系統(tǒng)約70%的市場份額。復位部件看門狗部件晶振部件I/O部件中斷部件ROM部件SRAM部件定時器部件CPU核嵌入式DSP處理器DSP處理器對系統(tǒng)結(jié)構(gòu)和指令進行了特殊設計,使其適合于執(zhí)行DSP算法,編譯效率較高,指令執(zhí)行速度也較高。在數(shù)字濾波、FFT、譜分析等方面DSP算法正在大量進入嵌入式領域,DSP應用正從在通用單片機中以普通指令實現(xiàn)DSP功能,過渡到采用嵌入式DSP處理器。嵌入式DSP處理器比較有代表性的產(chǎn)品是TexasInstruments的TMS320系列和Motorola的DSP56000系列。TMS320系列處理器包括用于控制的C2000系列,移動通信的C5000系列,以及性能更高的C6000和C8000系列。DSP56000目前已經(jīng)發(fā)展成為DSP56000,DSP56100,DSP56200和DSP56300等幾個不同系列的處理器。另外PHILIPS公司近年也推出了基于可重置嵌入式DSP結(jié)構(gòu)低成本、低功耗技術上制造的R.E.A.LDSP處理器,特點是具備雙Harvard結(jié)構(gòu)和雙乘/累加單元,應用目標是大批量消費類產(chǎn)品。嵌入式片上系統(tǒng)(SOC)

隨著EDA的推廣和VLSI設計的普及化及半導體工藝的迅速發(fā)展,在一個硅片上實現(xiàn)一個更為復雜的系統(tǒng)的時代已來臨,這就是SystemOnChip(SOC)。各種通用處理器內(nèi)核將作為SOC設計公司的標準庫,和許多其它嵌入式系統(tǒng)外設一樣,成為VLSI設計中一種標準的器件,用標準的VHDL等語言描述,存儲在器件庫中。用戶只需定義出其整個應用系統(tǒng),仿真通過后就可以將設計圖交給半導體工廠制作樣品。這樣除個別無法集成的器件以外,整個嵌入式系統(tǒng)大部分均可集成到一塊或幾塊芯片中去,應用系統(tǒng)電路板將變得很簡潔,對于減小體積和功耗、提高可靠性非常有利。

SoC可以分為通用和專用兩類。通用系列包括Infineon的TriCore、Motorola的M-Core、某些ARM系列器件、Echelon和Motorola聯(lián)合研制的Neuron芯片等。專用SoC一般專用于某個或某類系統(tǒng)中,不為一般用戶所知。一個有代表性的產(chǎn)品是Philips的SmartXA,它將XA單片機內(nèi)核和支持超過2048位復雜RSA算法的CCU單元制作在一塊硅片上,形成一個可加載JAVA或C語言的專用的SOC,可用于公眾互聯(lián)網(wǎng)如Internet安全方面。1.嵌入式系統(tǒng)2.嵌入式處理器3.嵌入式操作系統(tǒng)嵌入式系統(tǒng)概述1.3嵌入式操作系統(tǒng)概述

計算機系統(tǒng)由硬件和軟件組成,在發(fā)展初期沒有操作系統(tǒng)這個概念,用戶使用監(jiān)控程序來使用計算機。隨著計算機技術的發(fā)展,計算機系統(tǒng)的硬件、軟件資源也愈來愈豐富,監(jiān)控程序已不能適應計算機應用的要求。于是在六十年代中期監(jiān)控程序又進一步發(fā)展形成了操作系統(tǒng)(OperatingSystem)。發(fā)展到現(xiàn)在,廣泛使用的有三種操作系統(tǒng)即多道批處理操作系統(tǒng)、分時操作系統(tǒng)以及實時操作系統(tǒng)。1.3嵌入式操作系統(tǒng)概述監(jiān)控程序操作系統(tǒng)實時操作系統(tǒng)分時操作系統(tǒng)多道批處理操作系統(tǒng)

時間先后適用于多個用戶共享系統(tǒng)資源適用于計算中心等較大的計算機系統(tǒng)適用于嵌入式設備和有實時性要求的系統(tǒng)中1.3嵌入式操作系統(tǒng)概述監(jiān)控程序操作系統(tǒng)實時操作系統(tǒng)分時操作系統(tǒng)多道批處理操作系統(tǒng)

時間先后適用于多個用戶共享系統(tǒng)資源適用于計算中心等較大的計算機系統(tǒng)適用于嵌入式設備和有實時性要求的系統(tǒng)中實時操作系統(tǒng)是我們介紹的重點1.3嵌入式操作系統(tǒng)實時操作系統(tǒng)的特點IEEE的實時UNIX分委會認為實時操作系統(tǒng)應具備以下的幾點:異步的事件響應切換時間和中斷延遲時間確定優(yōu)先級中斷和調(diào)度搶占式調(diào)度內(nèi)存鎖定連續(xù)文件同步

總的來說實時操作系統(tǒng)是事件驅(qū)動的,能對來自外界的作用和信號在限定的時間范圍內(nèi)作出響應。它強調(diào)的是實時性、可靠性和靈活性,與實時應用軟件相結(jié)合成為有機的整體起著核心作用,由它來管理和協(xié)調(diào)各項工作,為應用軟件提供良好的運行軟件環(huán)境及開發(fā)環(huán)境。從實時系統(tǒng)的應用特點來看實時操作系統(tǒng)可以分為兩種:一般實時操作系統(tǒng)和嵌入式實時操作系統(tǒng)。

一般實時操作系統(tǒng)應用于實時處理系統(tǒng)的上位機和實時查詢系統(tǒng)等實時性較弱的實時系統(tǒng),并且提供了開發(fā)、調(diào)試、運用一致的環(huán)境。

嵌入式實時操作系統(tǒng)應用于實時性要求高的實時控制系統(tǒng),而且應用程序的開發(fā)過程是通過交叉開發(fā)來完成的,即開發(fā)環(huán)境與運行環(huán)境是不一致。嵌入式實時操作系統(tǒng)具有規(guī)模小(一般在幾K~幾十K內(nèi))、可固化使用實時性強(在毫秒或微秒數(shù)量級上)的特點

。1.3嵌入式操作系統(tǒng)基本概念

對基于芯片的開發(fā)來說,應用程序一般是一個無限的循環(huán),可稱為前后臺系統(tǒng)或超循環(huán)系統(tǒng)。很多基于微處理器的產(chǎn)品采用前后臺系統(tǒng)設計,例如微波爐、電話機、玩具等。在另外一些基于微處理器應用中,從省電的角度出發(fā),平時微處理器處在停機狀態(tài),所有事都靠中斷服務來完成?!昂笈_系統(tǒng)基本概念

中斷服務程序處理異步事件,這部分可以看成前臺行為,前臺也叫中斷級。時間相關性很強的關鍵操作一定是靠中斷服務程序來保證的。

循環(huán)中調(diào)用相應的函數(shù)完成相應的操作,這部分可以看成后臺行為,后臺也可以叫做任務級。這種系統(tǒng)在處理的及時性上比實際可以做到的要差。ISRISRISRISR后臺前臺中斷服務程序時間——前后臺系統(tǒng)1.3嵌入式操作系統(tǒng)基本概念

操作系統(tǒng)是計算機中最基本的程序。操作系統(tǒng)負責計算機系統(tǒng)中全部軟硬資源的分配與回收、控制與協(xié)調(diào)等并發(fā)的活動;操作系統(tǒng)提供用戶接口,使用戶獲得良好的工作環(huán)境;操作系統(tǒng)為用戶擴展新的系統(tǒng)功能提供軟件平臺。——操作系統(tǒng)硬件硬件驅(qū)動操作系統(tǒng)用戶程序1.3嵌入式操作系統(tǒng)基本概念

實時操作系統(tǒng)是一段在嵌入式系統(tǒng)啟動后首先執(zhí)行的背景程序,用戶的應用程序是運行于RTOS之上的各個任務,RTOS根據(jù)各個任務的要求,進行資源(包括存儲器、外設等)管理、消息管理、任務調(diào)度、異常處理等工作。在RTOS支持的系統(tǒng)中,每個任務均有一個優(yōu)先級,RTOS根據(jù)各個任務的優(yōu)先級,動態(tài)地切換各個任務,保證對實時性的要求。——實時操作系統(tǒng)(RTOS)1.3嵌入式操作系統(tǒng)基本概念

多任務系統(tǒng)中,內(nèi)核負責管理各個任務,或者說為每個任務分配CPU時間,并且負責任務之間的通信。內(nèi)核提供的基本服務是任務切換。使用實時內(nèi)核可以大大簡化應用系統(tǒng)的設計,是因為實時內(nèi)核允許將應用分成若干個任務,由實時內(nèi)核來管理它們。內(nèi)核需要消耗一定的系統(tǒng)資源,比如2%~5%的CPU運行時間、RAM和ROM等。內(nèi)核提供必不可少的系統(tǒng)服務,如信號量、消息隊列、延時等?!獌?nèi)核1.3嵌入式操作系統(tǒng)基本概念

調(diào)度是內(nèi)核的主要職責之一。調(diào)度就是決定該輪到哪個任務運行了。多數(shù)實時內(nèi)核是基于優(yōu)先級調(diào)度法的。每個任務根據(jù)其重要程序的不同被賦予一定的優(yōu)先級。基于優(yōu)先級的調(diào)度法指CPU總是讓處在就緒態(tài)的優(yōu)先級最高的任務先運行。然而究竟何時讓高優(yōu)先級任務掌握CPU的使用權,有兩種不同的情況,這要看用的是什么類型的內(nèi)核,是非占先式的還是占先式的內(nèi)核?!{(diào)度1.3嵌入式操作系統(tǒng)基本概念

非占先式內(nèi)核要求每個任務自我放棄CPU的所有權。非占先式調(diào)度法也稱作合作型多任務,各個任務彼此合作共享一個CPU。異步事件還是由中斷服務來處理。中斷服務可以使一個高優(yōu)先級的任務由掛起狀態(tài)變?yōu)榫途w狀態(tài)。但中斷服務以后控制權還是回到原來被中斷了的那個任務,直到該任務主動放棄CPU的使用權時,那個高優(yōu)先級的任務才能獲得CPU的使用權?!钦枷仁絻?nèi)核1.3嵌入式操作系統(tǒng)基本概念

當系統(tǒng)響應時間很重要時,要使用占先式內(nèi)核。因此絕大多數(shù)商業(yè)上銷售的實時內(nèi)核都是占先式內(nèi)核。最高優(yōu)先級的任務一旦就緒,總能得到CPU的控制權。當一個運行著的任務使一個比它優(yōu)先級高的任務進入了就緒狀態(tài),當前任務的CPU使用權就被剝奪了,或者說被掛起了,那個高優(yōu)先級的任務立刻得到了CPU的控制權。如果是中斷服務子程序使一個高優(yōu)先級的任務進入就緒態(tài),中斷完成時,中斷了的任務被掛起,優(yōu)先級高的那個任務開始運行?!枷仁絻?nèi)核1.3嵌入式操作系統(tǒng)基本概念

任務的優(yōu)先級是表示任務被調(diào)度的優(yōu)先程度。每個任務都具有優(yōu)先級。任務越重要,賦予的優(yōu)先級應越高,越容易被調(diào)度而進入運行態(tài)?!蝿諆?yōu)先級1.3嵌入式操作系統(tǒng)基本概念

中斷是一種硬件機制,用于通知CPU有個異步事件發(fā)生了。中斷一旦被識別,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳轉(zhuǎn)到專門的子程序,稱為中斷服務子程序(ISR)。中斷服務子程序做事件處理,處理完成后,程序回到:1.在前后臺系統(tǒng)中,程序回到后臺程序;2.對非占先式內(nèi)核而言,程序回到被中斷了的任務;3.對占先式內(nèi)核而言,讓進入就緒態(tài)的優(yōu)先級最高的任務開始運行?!袛嗲昂笈_系統(tǒng)1.3嵌入式操作系統(tǒng)基本概念——中斷ISR任務ISR非占先操作系統(tǒng)任務A任務B任務CISR占先操作系統(tǒng)任務A任務B任務C1.3嵌入式操作系統(tǒng)基本概念

時鐘節(jié)拍是特定的周期性中斷。這個中斷可以看作是系統(tǒng)心臟的脈動。中斷之間的時間間隔取決于不同應用,一般在10ms到200ms之間。時鐘的節(jié)拍式中斷使得內(nèi)核可以將任務延時若干個整數(shù)時鐘節(jié)拍,以及當任務等待事件發(fā)生時,提供等待超時的依據(jù)。時鐘節(jié)拍率越快,系統(tǒng)的額外開銷就越大?!獣r鐘節(jié)拍1.3嵌入式操作系統(tǒng)使用實時操作系統(tǒng)的必要性

嵌入式實時操作系統(tǒng)在目前的嵌入式應用中用得越來越廣泛,尤其在功能復雜、系統(tǒng)龐大的應用中顯得愈來愈重要。在嵌入式應用中,只有把CPU嵌入到系統(tǒng)中,同時又把操作系統(tǒng)嵌入進去,才是真正的計算機嵌入式應用。使用實時操作系統(tǒng)主要有以下幾個因素:嵌入式實時操作系統(tǒng)提高了系統(tǒng)的可靠性。提高了開發(fā)效率,縮短了開發(fā)周期。嵌入式實時操作系統(tǒng)充分發(fā)揮了32位CPU的多任務潛力。

1.3嵌入式操作系統(tǒng)實時操作系統(tǒng)的優(yōu)缺點

優(yōu)點:在嵌入式實時操作系統(tǒng)環(huán)境下開發(fā)實時應用程序使程序的設計和擴展變得容易,不需要大的改動就可以增加新的功能。通過將應用程序分割成若干獨立的任務模塊,使應用程序的設計過程大為簡化;而且對實時性要求苛刻的事件都得到了快速、可靠的處理。通過有效的系統(tǒng)服務,嵌入式實時操作系統(tǒng)使得系統(tǒng)資源得到更好的利用。缺點:但是,使用嵌入式實時操作系統(tǒng)還需要額外的ROM/RAM開銷,2~5%的CPU額外負荷,以及內(nèi)核的費用。uClinux是一個完全符合GNU/GPL公約的操作系統(tǒng),完全開放代碼。uClinux從Linux

2.0/2.4內(nèi)核派生而來,沿襲了主流Linux的絕大部分特性。它是專門針對沒有MMU的CPU,并且為嵌入式系統(tǒng)做了許多小型化的工作。適用于沒有虛擬內(nèi)存或內(nèi)存管理單元(MMU)的處理器,例如ARM7TDMI。它通常用于具有很少內(nèi)存或Flash的嵌入式系統(tǒng)。它保留了Linux的大部分優(yōu)點:穩(wěn)定、良好的移植性、優(yōu)秀的網(wǎng)絡功能、完備的對各種文件系統(tǒng)的支持、以及標準豐富的API等。1.3嵌入式操作系統(tǒng)常見的嵌入式操作系統(tǒng)——嵌入式Linux1.3嵌入式操作系統(tǒng)常見的嵌入式操作系統(tǒng)

WindowsCE是微軟開發(fā)的一個開放的、可升級的32位嵌入式操作系統(tǒng),是基于掌上型電腦類的電子設備操作,它是精簡的Windows95。WindowsCE的圖形用戶界面相當出色。WinCE具有模塊化、結(jié)構(gòu)化和基于Win32應用程序接口以及與處理器無關等特點。WinCE不僅繼承了傳統(tǒng)的Windows圖形界面,并且在WinCE平臺上可以使用Windows95/98上的編程工具(如VisualBasic、VisualC++等)、使絕大多數(shù)的應用軟件只需簡單的修改和移植就可以在WindowsCE平臺上繼續(xù)使用。

——WinCE1.3嵌入式操作系統(tǒng)常見的嵌入式操作系統(tǒng)——VxWorksVxWorks操作系統(tǒng)是美國公司于1983年設計開發(fā)的一種嵌入式實時操作系統(tǒng)(RTOS),是嵌入式開發(fā)環(huán)境的關鍵組成部分。良好的持續(xù)發(fā)展能力、高性能的內(nèi)核以及友好的用戶開發(fā)環(huán)境,在嵌入式實時操作系統(tǒng)領域占據(jù)一席之地。它以其良好的可靠性和卓越的實時性被廣泛地應用在通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域中,如衛(wèi)星通訊、軍事演習、彈道制導、飛機導航等,甚至在1997年4月登陸火星表面的火星探測器上也使用到了VxWorks。1.ARM簡介2.ARM7TDMI3.ARM的模塊、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當前程序狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統(tǒng)392.1ARM簡介ARM公司簡介ARM是AdvancedRISCMachines的縮寫,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設計了大量高性能、廉價、耗能低的RISC(精簡指令集)處理器。公司的特點是只設計芯片,而不生產(chǎn)。它將技術授權給世界上許多著名的半導體、軟件和OEM廠商,并提供服務。402.1ARM簡介ARM公司簡介將技術授權給其它芯片廠商形成各具特色的ARM芯片...412.1ARM簡介RISC結(jié)構(gòu)特性RISC是精簡指令集計算機的縮寫,其目標是設計出在高時鐘頻率下單周期執(zhí)行,簡單而有效的指令集。ARM內(nèi)核采用RISC體系結(jié)構(gòu),因此具有RISC的結(jié)構(gòu)特點:具有大量的通用存儲器;獨特的裝載/保存(load-store)結(jié)構(gòu);簡單的尋址模式;統(tǒng)一和固定長度的指令格式。422.1ARM簡介

為了使ARM能夠更好地滿足嵌入式應用的需要,ARM體系結(jié)構(gòu)還有以下特點:每條數(shù)據(jù)處理指令可同時包含算術邏輯單元(ALU)的運算和移位處理,實現(xiàn)ALU和移位器的最大利用;使用地址自增和自減的尋址方式優(yōu)化程序循環(huán);裝載/保存指令對數(shù)據(jù)的批量傳輸,實現(xiàn)最大數(shù)據(jù)吞吐量;大多數(shù)指令的條件執(zhí)行,實現(xiàn)最快速的代碼執(zhí)行。ARM體系結(jié)構(gòu)432.1ARM簡介常用ARM處理器系列ARM公司開發(fā)了很多系列的ARM處理器核,目前最新的系列是Cortex,而ARM6核以及更早的系列已經(jīng)很罕見了。當前應用比較多的ARM處理器核系列有:ARM7ARM9ARM10EXscaleARM11CortexARM9E442.1ARM簡介ARMCortex系列簡介

基于ARMv7版本的ARMCortex系列產(chǎn)品由A、R、M三個系列組成,具體分類延續(xù)了一直以來ARM面向具體應用設計CPU的思路。ARMCortexA應用處理器(ApplicationProcessor

)系列R實時控制處理(RealTimeControl)系列M微控制器(MicroController)系列452.1ARM簡介CortexTM-M3處理器簡介

該處理器是首款基于ARMv7-M架構(gòu)的處理器,采用了純Thumb2指令的執(zhí)行方式,具有極高的運算能力和中斷相應能力。

Cortex-M3主要應用于汽車車身系統(tǒng),工業(yè)控制系統(tǒng)和無線網(wǎng)絡等對功耗和成本敏感的嵌入式應用領域。目前最便宜的基于該內(nèi)核的ARM單片機售價為1美元。462.1ARM簡介CortexTM-R4處理器簡介

該處理器是首款基于ARMv7架構(gòu)的高級嵌入式處理器,其主要目標為產(chǎn)量巨大的高級嵌入式應用系統(tǒng),如硬盤,噴墨式打印機,以及汽車安全系統(tǒng)等等。CortexTM-R4F處理器簡介

該處理器在CortexTM-R4處理器的基礎上加入了代碼錯誤校正(ECC)技術,浮點運算單元(FPU)以及DMA綜合配置的能力,增強了處理器在存儲器保護單元、緩存、緊密耦合存儲器、DMA訪問以及調(diào)試方面的能力。472.1ARM簡介CortexTM-A8處理器簡介

該處理器是ARM公司所開發(fā)的基于ARMv7架構(gòu)的首款應用級處理器,其特色是運用了可增加代碼密度和加強性能的技術、可支持多媒體以及信號處理能力的NEONTM技術、以及能夠支持Java和其他文字代碼語言的提前和即時編譯的Jazelle@RTC技術。眾多先進的技術使其適用于家電以及電子行業(yè)等各種高端的應用領域。482.1ARM簡介ARM7系列簡介

該系列包括ARM7TDMI、ARM7TDMI-S、帶有高速緩存處理器宏單元的ARM720T和擴充了Jazelle的ARM7EJ-S。該系列處理器提供Thumb16位壓縮指令集和EmbededICE軟件調(diào)試方式,適用于更大規(guī)模的SoC設計中。

ARM7系列廣泛應用于多媒體和嵌入式設備,包括Internet設備、網(wǎng)絡和調(diào)制解調(diào)器設備,以及移動電話、PDA等無線設備。492.1ARM簡介

該系列包括ARM9TDMI、ARM920T和帶有高速緩存處理器宏單元的ARM940T。除了兼容ARM7系列,而且能夠更加靈活的設計。

ARM9系列主要應用于引擎管理、儀器儀表、安全系統(tǒng)和機頂盒等領域。ARM9系列簡介502.1ARM簡介

該系列為含有DSP指令集的綜合處理器,包括ARM926EJ-S、帶有高速緩存處理器宏單元的ARM966E-S/ARM946E-S。其內(nèi)核在ARM7處理器內(nèi)核的基礎上使用了Jazelle增強技術,該技術支持一種新的Java操作狀態(tài),允許在硬件中執(zhí)行Java字節(jié)碼。

ARM9E系列主要應用于下一代無線設備、數(shù)字消費品、成像設備、工業(yè)控制、存儲設備和網(wǎng)絡設備等領域。ARM9E系列簡介512.1ARM簡介ARM10E系列簡介

該系列包括ARM1020E和ARM1020E處理器核,其核心在于使用向量浮點(VFP)單元VFP10提供高性能的浮點解決方案,從而極大提高了處理器的整型和浮點運算性能??梢杂糜谝曨l游戲機和高性能打印機等場合。522.1ARM簡介Xscale簡介IntelXscale微控制器則提供全性能、高性價比、低功耗的解決方案,支持16位Thumb指令并集成數(shù)字信號處理(DSP)指令。主要應用于手提式通訊和消費電子類設備。531.ARM簡介2.ARM7TDMI3.ARM的模塊、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當前程序狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統(tǒng)54ARM7TDMI-S2.2ARM7TDMI簡介ARM7TDMI是基于ARM體系結(jié)構(gòu)V4版本的低端ARM核。其彌補了ARM6很難在低于5V電壓下穩(wěn)定工作的不足,還增加了后綴所對應的功能:支持高密度16位的Thumb指令集;支持片上調(diào)試;支持64位乘法;支持EmbededICE觀察硬件;ARM7TDMI的可綜合(synthesizable)版本(軟核),對應用工程師來說其編程模型與ARM7TDMI一致;

注意:“ARM核”并非芯片,ARM核與其它部件如RAM、ROM、片內(nèi)外設組合在一起才能構(gòu)成現(xiàn)實的芯片。552.2ARM7TDMI存儲器的字與半字

從偶數(shù)地址開始的連續(xù)2個字節(jié)構(gòu)成一個半字;以能被4整除的地址開始的連續(xù)4個字節(jié)構(gòu)成一個字;

ARM指令的長度剛好是一個字,Thumb指令的長度剛好是一個半字。562.2ARM7TDMI

如果一個數(shù)據(jù)是從偶地址開始的連續(xù)存儲,那么它就是半字對齊,否則就是非半字對齊;如果一個數(shù)據(jù)是以能被4整除的地址開始的連續(xù)存儲,那么它就是字對齊,否則就是非字對齊。方式半字對齊字對齊地址……0x40020x4004…………0x40040x4008……特征Bit0=0其他位為任意值Bit1=0,Bit0=0其他位為任意值存儲器的存儲方式572.2ARM7TDMI三級流水線ARM處理器使用流水線來增加處理器指令流的速度,這樣可使幾個操作同時進行,并使處理和存儲器系統(tǒng)連續(xù)操作,能提供0.9MIPS/MHz的指令執(zhí)行速度。ARM7TDMI的流水線分3級,分別為:取指譯碼執(zhí)行取指譯碼執(zhí)行處理指令并將結(jié)果寫回寄存器識別將要被執(zhí)行的指令從寄存器裝載一條指令

正常操作過程中,在執(zhí)行一條指令的同時對下一條(第二條)指令進行譯碼,并將第三條指令從存儲器中取出。

在ARM狀態(tài)下,流水線上各指令的地址為:

在Thumb狀態(tài)下,流水線上各指令的地址為:PCPC-4PC-8PCPC-2PC-4582.2ARM7TDMI三級流水線結(jié)構(gòu)的指令執(zhí)行順序PC指令1指令2指令3指令4…………程序存儲器PC-4PC-8PC+4周期1周期2周期3周期4周期5周期6取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行周期2周期1周期3周期4

在第1個周期,PC指向指令1,此時指令1進入三級流水線的取指階段。1

在第2個周期,PC指向指令2,此時指令1進入三級流水線的譯碼階段,同時取出指令2。2

在第3個周期,PC指向指令3,此時指令1進入三級流水線的執(zhí)行階段,指令2進入譯碼階段,取出指令3。3

在第4個周期,指令1執(zhí)行完成,指令2和指令3流水線推進一級,同時開始指令4的取指處理。4處理器執(zhí)行一條指令的三個階段59

執(zhí)行ADDPC,PC,#4指令后,PC的值為多少?2.2ARM7TDMI思考題ADDPC,PC,#4………………0x40000x40040x40080x400C地址指令PC取指譯碼執(zhí)行PCPC-4PC-8ARM7的3級流水線ADD

程序計數(shù)器R15(PC)總是指向“正在取指”的指令,而不是指向“正在執(zhí)行”的指令或“正在譯碼”的指令。

一般來說,人們習慣性約定將“正在執(zhí)行”的指令作為參考點,則:PC值=當前程序執(zhí)行位置+8

注:ARM狀態(tài)時,每條指令為4字節(jié)長。PC指向0x4000地址,取指ADD指令。PC指向0x4004地址,譯碼ADD指令。PC指向0x4008地址,執(zhí)行ADD指令,所以指令執(zhí)行的結(jié)果為:PC=PC+4=0x4008+4=0x400C。…………601.ARM簡介2.ARM7TDMI3.ARM的模塊、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當前程序狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統(tǒng)61CPU掃描鏈1掃描鏈1數(shù)據(jù)總線數(shù)據(jù)總線掃描鏈1掃描鏈2協(xié)處理器信號接口EmbeddedICE-RTTAP控制器EmbeddedICE-RT宏單元DBGTCKENDBGTMSDBGnTRSTDBGTDIDBGTDORDATA[31:0]WDATA[31:0]ADDR[31:0]TRANS[1:0]PROT[1:0]SIZE[1:0]WRITELOCKDBGRNG(0)DBGRNG(1)DBGEXT(1)DBGEXT(0)2.3ARM模塊框圖CPU協(xié)處理接口信號EmbedICE硬件仿真功能模塊片上調(diào)試系統(tǒng)讀寫總線622.3ARM內(nèi)核框圖地址寄存器寄存器組31*32位寄存器(6個狀態(tài)寄存器)地址增加器乘法器桶形移位器32位ALU寫數(shù)據(jù)寄存器指令管線讀數(shù)據(jù)寄存器Thumb指令譯碼器指令譯碼和控制邏輯ADDR[31:0]CLKCLENCFGBIGENDnIRQnFIQnRESETABORTLOCKWRITESIZE[1:0]PROT[1:0]TRANS[1:0]DBG輸出DBG輸入CP控制CP握手WDATA[31:0]RDATA[31:0]掃描調(diào)試控制632.3ARM功能框圖ARM7TDMI-S處理器LOCKCLKCLKENnIRQnFIQnRESETCFGBIGENDDBGRQDMOREDBGINSTRVAILDDBGBREAKDBGACKDBGnEXECDBGEXT[1]DBGEXT[0]DBGENDBGCOMMTXDBGCOMMRXDBGRNG[0]DBGRNG[1]DBGTCKENDBGTMSDBGTDIDBGnTRSTDBGTDODBGnTDOENADDR[31:0]WDATA[31:0]RDATA[31:0]ABORTWRITESIZE[1:0]PROT[1:0]TRANS[1:0]CPnTRANSCPnOPCCPnMREQCPSEQCPTBITCPnICPACPB同步的掃描調(diào)試訪問接口存儲器接口存儲器管理接口協(xié)處理器接口時鐘中斷總線控制仲裁調(diào)試641.ARM簡介2.ARM7TDMI3.ARM的模塊、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當前程序狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統(tǒng)652.4ARM處理器狀態(tài)處理器狀態(tài)ARM7TDMI處理器內(nèi)核包含2套指令系統(tǒng),分別為ARM指令集和Thumb指令,并且各自對應1種處理器的狀態(tài):ARM狀態(tài):32位,處理器執(zhí)行字方式的ARM指令,處理器默認為此狀態(tài);Thumb狀態(tài):16位,處理器執(zhí)行半字方式的Thumb指令。注意:兩個狀態(tài)之間的切換并不影響處理器模式或寄存器內(nèi)容。662.4ARM處理器狀態(tài)狀態(tài)切換的一個例子地址最低位為0,表示切換到ARM狀態(tài)

使用BX指令將ARM內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進行切換。ARM指令集Thumb指令集 CODE32 LDR R0,=Lable+1 BX R0 CODE16Lable MOV R1,#12 CODE16 LDR R0,=Lable BX R0 CODE32Lable MOV R1,#10地址最低位為1,表示切換到Thumb狀態(tài)跳轉(zhuǎn)地址標號執(zhí)行完BX指令,處理器切換到Thumb狀態(tài),開始執(zhí)行Thumb指令程序代碼指令集關系

從ARM狀態(tài)切換到Thumb狀態(tài)的程序代碼如下:

從Thumb狀態(tài)切換到ARM狀態(tài)的程序代碼如下:執(zhí)行完BX指令,處理器切換到ARM狀態(tài),開始執(zhí)行ARM指令671.ARM簡介2.ARM7TDMI3.ARM的模塊、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當前程序狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統(tǒng)682.5ARM處理器模式簡介ARM體系結(jié)構(gòu)支持7種處理器模式,分別為:用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式。這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率。ARM7TDMI完全支持這七種模式。69

除用戶模式外,其它模式均為特權模式。ARM內(nèi)部寄存器和一些片內(nèi)外設在硬件設計上只允許(或者可選為只允許)特權模式下訪問。此外,特權模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。處理器模式說明備注

用戶(usr)正常程序運行的工作模式不能直接從用戶模式切換到其它模式特權模式系統(tǒng)(sys)用于支持操作系統(tǒng)的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權異常模式快中斷(fiq)快速中斷請求處理只有在FIQ異常響應時,才進入此模式中斷(irq)中斷請求處理只有在IRQ異常響應時,才進入此模式管理(svc)供操作系統(tǒng)使用的一種保護模式只有在系統(tǒng)復位和軟件中斷響應時,才進入此模式中止(abt)用于虛擬內(nèi)存和/或存儲器保護在ARM7內(nèi)核中沒有多大用處未定義(und)支持軟件仿真的硬件協(xié)處理器只有在未定義指令異常響應時,才進入此模式處理器模式

這兩種模式都不能由異常進入,想要進入必須修改CPSR,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權任務可以使用這個模式訪問一些受控的資源。

這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。當特定的異常出現(xiàn)時,處理器進入相應的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。何時進入異常模式,具體規(guī)定如下:處理器復位之后進入管理模式,操作系統(tǒng)內(nèi)核通常處于管理模式;當處理器訪問存儲器失敗時,進入數(shù)據(jù)訪問中止模式;當處理器遇到?jīng)]有定義或不支持的指令時,進入未定義模式;中斷模式與快速中斷模式分別對ARM處理器2種不同級別的中斷作出響應。701.ARM簡介2.ARM7TDMI3.ARM的模塊、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當前程序狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統(tǒng)712.6ARM內(nèi)部寄存器簡介

在ARM處理器內(nèi)部共有37個用戶可訪問的寄存器,分別為31個通用32位寄存器和6個狀態(tài)寄存器。ARM處理器共有7種不同的處理器模式,每種模式都有一組相應的寄存器組,最多可以18個活動的寄存器。72ARM狀態(tài)各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_scvR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq

所有的37個寄存器,分成兩大類:31個通用32位寄存器;6個狀態(tài)寄存器。73ARM狀態(tài)各模式下可以訪問的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq74未分組的通用寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_scvR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq寄存器R0~R7為未分組的通用寄存器,它們在任何處理器模式都對應于相同的32位物理寄存器。第一類分組的通用寄存器寄存器R8~R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。在發(fā)生FIQ中斷后,處理器不必為保護寄存器而浪費時間,從而加速了FIQ的處理速度。第二類分組的通用寄存器寄存器R13、R14分別有6個分組的物理寄存器。1個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。寄存器R13通常作為堆棧指針(SP),用于保存待使用的寄存器的內(nèi)容。寄存器R14稱為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個特殊功能:當使用BL指令調(diào)用子程序時,返回地址將自動存入R14中;當發(fā)生異常時,將R14對應的異常模式版本設置為異常返回地址(有些異常有一個小的固定偏移量)。程序計數(shù)器寄存器R15稱為程序計數(shù)器(PC),它指向正在“取指”的指令。狀態(tài)寄存器寄存器CPSR為當前程序狀態(tài)寄存器,在異常模式中,另外一個寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進入異常時它保存CPSR的當前值,異常退出時可通過它恢復CPSR。752.6ARM內(nèi)部寄存器在Thumb狀態(tài)各模式下實際訪問的寄存器Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序員可以直接訪問的寄存器為:8個通用寄存器R0~R7;程序計數(shù)器(PC);堆棧指針(SP);鏈接寄存器(LR);當前程序狀態(tài)寄存器(CPSR)。76在Thumb狀態(tài)各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4,WR)R7SPR13R13_scvR13_abtR13_undR13_irqR13_fiqLRR14R14_svcR14_abtR14_undR13_irqR14_fiqPCR15狀態(tài)寄存器CPSRCPSR未分組的通用寄存器第二類分組的通用寄存器在匯編語言中寄存器R0~R7為通用寄存器,對于任何處理器模式,它們中的每一個都對應于相同的32為物理寄存器。堆棧指針SP對應ARM狀態(tài)的寄存器R13。每個異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆棧。注意:在發(fā)生異常時,處理器自動進入ARM狀態(tài)。鏈接寄存器LR對應ARM狀態(tài)寄存器R14。注意:在發(fā)生異常時,處理器自動進入ARM狀態(tài)。77ARM狀態(tài)Thumb寄存器在ARM狀態(tài)寄存器上的映射R0R1R2R3R4R5R6R7R8R9R10R11R12堆棧指針(R13)連接寄存器(R14)程序計數(shù)器(R15)CPSRSPSRR0R1R2R3R4R5R6R7堆棧指針(SP)連接寄存器(LR)程序計數(shù)器(PC)CPSRThumb狀態(tài)Thumb狀態(tài)R0~R7與ARM狀態(tài)R0~R7相同;1Thumb狀態(tài)CPSR(無SPSR)與ARM狀態(tài)CPSR相同。5Thumb狀態(tài)SP映射到ARM狀態(tài)R13;2Thumb狀態(tài)LR映射到ARM狀態(tài)R14;3Thumb狀態(tài)PC映射到ARM狀態(tài)R15(PC);4低端寄存器高端寄存器

在Thumb狀態(tài)中,高端寄存器的訪問是受到限制的,只有MOV、CMP和ADD指令可以對其訪問,可以用于數(shù)據(jù)的快速暫存。78ARMThumbARMResetBXBXARM中斷服務程序正常程序事件ARMARMISR1ISR2ISRn…狀態(tài)切換過程異常發(fā)生進入退出

系統(tǒng)復位,自動切換到ARM狀態(tài)。1

通過BX和BLX指令改變當前處理器模式,使之從ARM狀態(tài)切換到Thumb狀態(tài)。2

在Thumb狀態(tài)下,正常程序執(zhí)行時產(chǎn)生中斷異常。3

處理器進入中斷異常,自動的將模式切換到ARM狀態(tài)。4

異常處理完畢,返回正常程序,此時處理器自動的將模式切換到Thumb狀態(tài)。5

再次通過BX和BLX指令改變當前處理器模式,使之從Thumb狀態(tài)切換到ARM狀態(tài)。6

程序在正常運行的過程中,復位事件產(chǎn)生,導致系統(tǒng)復位。791.ARM簡介2.ARM7TDMI3.ARM的模塊、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當前程序狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統(tǒng)802.7當前程序狀態(tài)寄存器簡介ARM內(nèi)核包含1個CPSR和5個僅供異常處理程序使用的SPSR。CPSR反映當前處理器的狀態(tài),其包含:4個條件代碼標志(負標志N、零標志Z、進位標志C和溢出標志V);2個中斷禁止位(IRQ禁止與FIQ禁止);5個對當前處理器模式進行編碼的位(M[4:0]);1個用于指示當前執(zhí)行指令的位(ARM指令還是Thumb指令)。812.7當前程序狀態(tài)寄存器程序狀態(tài)寄存器的格式NZCV——IM0M1M2M3M4TF—...313029282726876543210條件代碼標志保留控制位溢出標志進位或借位擴展零負或小于IRQ禁止FIQ禁止狀態(tài)位模式位NZCVIM0M1M2M3M4TF822.7當前程序狀態(tài)寄存器條件代碼標志各標志位的含義如下:負標志N:運算結(jié)果的第31位值,記錄標志設置操作的結(jié)果;零標志Z:如果標志設置的操作為0,則置位;進位標志C:記錄無符號加法溢出,減法無借位,循環(huán)移位;溢出標志V:記錄標志設置操作的有符號溢出。83

警告:絕對不要強制改變CPSR寄存器中的控制位T。如果這樣做,處理器將進入一個無法預測的狀態(tài)。2.7當前程序狀態(tài)寄存器控制位1、中斷禁止控制位I和F;2、處理器狀態(tài)位T;3、處理器模式位M0~M4。當控制位I置位時,IRQ中斷被禁止;當控制位F置位時,F(xiàn)IQ中斷被禁止。當控制位T置位時,處理器正在Thumb狀態(tài)下運行;當控制位T清零時,處理器正在ARM狀態(tài)下運行。M[4:0]模式可見的Thumb狀態(tài)寄存器可見的ARM狀態(tài)寄存器10000用戶R0~R7,SP,LR,PC,CPSRR0~R14,PC,CPSR10001快速中斷R0~R7,SP_fiq,LR_fiq,PC,CPSR,SPSR_fiqR0~R7,R8_fiq~R14_fiq,PC,CPSR,SPSR_fiq10010中斷R0~R7,SP_irq,LR_irq,PC,CPSR,SPSR_fiqR0~R12,R13_irq,R14_irq,PC,CPSR,SPSR_irq10011管理R0~R7,SP_svc,LR_svc,PC,CPSR,SPSR_svcR0~R12,R13_svc,R14_svc,PC,CPSR,SPSR_svc10111中止R0~R7,SP_abt,LR_abt,PC,CPSR,SPSR_abtR0~R12,R13_abt,R14_abt,PC,CPSR,SPSR_abt11011未定義R0~R7,SP_und,LR_und,PC,CPSR,SPSR_undR0~R12,R13_und,R14_und,PC,CPSR,SPSR_und11111系統(tǒng)R0~R7,SP,LR,PC,CPSRR0~R14,PC,CPSR

注意:不是所有模式位的組合都定義了有效的處理器模式,如果將非法值寫入M[4:0]中,處理器將進入一個無法恢復的模式。842.7當前程序狀態(tài)寄存器保留位CPSR中的保留位被保留將來使用。當改變CPSR標志和控制位時,請確認沒有改變這些保留位。另外,請確保您的程序不依賴于包含特定值的保留位,因為將來的處理器可能會將這些位設置為1或者0。851.ARM簡介2.ARM7TDMI3.ARM的模塊、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當前程序狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統(tǒng)862.8ARM體系的異常異常簡介

只要正常的程序流被暫時中止,處理器就進入異常模式。例如在用戶模式下執(zhí)行程序時,當外設向處理器內(nèi)核發(fā)出中斷請求導致內(nèi)核從用戶模式切換到異常中斷模式。如果同時發(fā)生兩個或更多異常,那么將按照固定的順序來處理異常。87異常入口/出口匯總

下表所示為異常返回地址值以及退出異常處理程序所推薦使用的指令。異?;蛉肟诜祷刂噶罘祷氐刂稴WIMOVSPC,R14_svcR14未定義的指令MOVSPC,R14_undR14預取中止SUBSPC,R14_abt,#4R14-4快速中斷SUBSPC,R14_fiq,#4R14-4中斷SUBSPC,R14_irq,#4R14-4數(shù)據(jù)中止SUBSPC,R14_abt,#8R14-8復位無-

注意:“MOVSPC,R14_svc”是指在管理模式執(zhí)行MOVSPC,R14指令,同樣類似的指令還有“MOVSPC,R14_und”、“SUBSPC,R14_abt,#4”等。882.8ARM體系的異常異常向量表地址異常進入時的模式進入時I的狀態(tài)進入時F的狀態(tài)0x00000000復位管理禁止禁止0x00000004未定義指令未定義IF0x00000008軟件中斷異常管理禁止F0x0000000C中止(預?。┲兄笽F0x00000010中止(數(shù)據(jù))中止IF0x00000014保留保留--0x00000018IRQ中斷禁止F0x0000001CFIQ快速中斷禁止禁止注:表中的I和F表示不對該位有影響,保留原來的值。892.8ARM體系的異常異常優(yōu)先級

當多個異常同時發(fā)生時,一個固定的優(yōu)先級決定系統(tǒng)處理它們的順序。優(yōu)先級異常1復位2數(shù)據(jù)中止3FIQ4IRQ5預取指中止6未定義指令中止6軟件中斷異常優(yōu)先級由高到低902.8ARM體系的異常異常的進入當一個異常導致模式切換時,內(nèi)核自動的做如下處理:將異常處理程序的返回地址(加固定的偏移量)保存到相應異常模式下的LR;將CPSR的當前值保存到相應異常模式下的SPSR;設置CPSR為相應的異常模式;設置PC為相應異常處理程序的中斷入口向量地址,跳轉(zhuǎn)到相應的異常中斷處理程序執(zhí)行;用戶模式SPSR異常模式CPSRR15(PC)R14(LR)R0~R13-BackAddrJumpAddrUserModeExceptionMode程序代碼正常運行在用戶模式下。912.8ARM體系的異常異常的進入當一個異常導致模式切換時,內(nèi)核自動的做如下處理:將異常處理程序的返回地址(加固定的偏移量)保存到相應異常模式下的LR;將CPSR的當前值保存到相應異常模式下的SPSR;設置CPSR為相應的異常模式;設置PC為相應異常處理程序的中斷入口向量地址,跳轉(zhuǎn)到相應的異常中斷處理程序執(zhí)行;922.8ARM體系的異常異常的退出

當異常處理程序結(jié)束時,異常處理程序必須:返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即就是說將LR中的值減去偏移量后移入PC;將SPSR的值復制回CPSR;SPSR異常模式用戶模式CPSRR15(PC)R14(LR)R0~R13-BackAddrCurrentAddrUserModeExceptionModeBackAddr-Off932.8ARM體系的異常異常的退出

當異常處理程序結(jié)束時,異常處理程序必須:返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即就是說將LR中的值減去偏移量后移入PC;將SPSR的值復制回CPSR;清零在入口處置位的中斷禁止標志。942.8ARM體系的異常復位異常

當nRESET信號被拉低時,ARM處理器放棄正在執(zhí)行的指令,等到nRESET信號再次變高時,處理器執(zhí)行一下操作:強制M[4:0]變?yōu)閎10011,系統(tǒng)進入管理模式;將CPSR中的標志位I和F置位,IRQ與FIQ中斷被禁止;將CPSR中的標志位T清零,處理器處于ARM狀態(tài);強制PC從地址0x00開始對下一條指令進行取指;返回到ARM狀態(tài)并恢復執(zhí)行。952.8ARM體系的異常中斷請求異常

只有當CPSR中相應的中斷屏蔽位被清除時,才可能發(fā)生IRQ異常,中斷請求(IRQ)異常由一個nIRQ輸入端的低電平所產(chǎn)生的正常中斷。注:中斷異常產(chǎn)生時,中斷異常模式下的R14保存的是PC的值。取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行周期4周期5周期1周期2周期3PC-8指令1指令2指令3PC-4PC中斷發(fā)生周期指令1的執(zhí)行不會中斷;異常程序結(jié)束時返回到指令2;進入中斷服務程序時,指令3地址被保存在R14中。96

程序運行在用戶模式下,當一個IRQ異常中斷發(fā)生時,內(nèi)核切換到“中斷模式”,并自動的做如下處理:2.8ARM體系的異常進入IRQ異常模式R0~R12R13_usrR14_usrR15CPSR-R13_irqR14_irqSPSR_irqUSR模式IRQ模式2I=1,T=0,mod=irq3異常向量地址0x00184ISR代碼將寄存器壓棧51

將異常處理程序的返回地址保存到異常模式下的R14(R14_irq)中。1

用戶模式的CPSR被保存到新的IRQ中斷異常模式SPSR_irq中。2

修改CPSR,禁止新的IRQ中斷產(chǎn)生,進入ARM狀態(tài),設置為IRQ模式。3

設置IRQ模式下的PC為IRQ異常處理程序的中斷入口向量地址0x00000018。4

將IRQ中斷異常模式的棧頂指針保存到R13_irq中,之后軟件處理程序調(diào)用中斷服務程序為中斷源服務。597

從R13_irq中獲取IRQ中斷異常模式的棧頂指針。12.8ARM體系的異常退出IRQ異常模式R0~R12R13_usrR14_usrR15CPSR-R13_irqR14_irqSPSR_irqIRQ模式USR模式恢復CPSR2R14減4后為返回地址3ISR代碼將寄存器出棧1

將SPSR_irq中的內(nèi)容復制到CPSR。2

由于流水線的特性,將R14_irq指向的地址減去一個偏移量后存入R15(PC),實現(xiàn)指令為:SUBSPC,R14_irq,#4

3

中斷服務程序執(zhí)行完畢后,系統(tǒng)將通過以下幾步軟件操作返回用戶模式:982.8ARM體系的異??焖僦袛嗾埱螽惓?/p>

快速中斷請求(FIQ)適用于對一個突發(fā)事件的快速響應,這得益于在ARM狀態(tài)中,快中斷模式有8個專用的寄存器可用來滿足寄存器保護的需要(這可以加速上下文切換的速度)。不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài),F(xiàn)IQ處理程序都會通過執(zhí)行下面的指令從中斷返回:SUBSPC,R14_fiq,#4

在一個特權模式中,可以通過置位CPSR中的F位來禁止FIQ異常。99系統(tǒng)模式FIQ模式程序寄存器組FIQ中斷的例子“?”表示該位無關SPSR_fiqPCCPSRSPSRMODTFI...NZCVSYS100...????R8~R12R8_fiq~R12_fiqLRLR_sysLR_fiqR0~R7SP_sysSP_fiqThumbThumb指令1指令2指令3BX指令BX指令ARMARMSYS100.????FIQ011...????BackAddrJumpAddrJump10SYS100...????JumpBackAddr-4Thumb不是一個完整的體系結(jié)構(gòu),不能指望處理器只執(zhí)行Thumb指令而不支持ARM指令集。因此,Thumb指令只需要支持通用功能,必要時可以借助于完善的ARM指令集,比如,所有異常自動進入ARM狀態(tài)。

在系統(tǒng)模式下運行用戶程序,當前處理器處于Thumb狀態(tài),執(zhí)行Thumb指令代碼,同時處理器還允許IRQ和FIQ中斷。

指令1的在執(zhí)行過程產(chǎn)生了FIQ中斷。

注:完成指令1的執(zhí)行后才響應中斷。FIQ中斷相應過程中,硬件自動執(zhí)行如下動作:將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器置為F和I(禁止FIQ和IRQ中斷);清零T位(進入ARM狀態(tài));設置MOD位,切換處理器模式至FIQ模式。將下一條的地址存入FIQ模式的LR寄存器,即指令3的地址。將跳轉(zhuǎn)地址存入PC,即FIQ中斷服務函數(shù)的入口地址,實現(xiàn)跳轉(zhuǎn)。FIQ中斷服務程序在ARM狀態(tài)下執(zhí)行現(xiàn)場保護等操作。FIQ中斷服務程序使用BX指令,將處理器從ARM狀態(tài)切換到Thumb狀態(tài),通過置位CPSR的T位實現(xiàn)。FIQ中斷服務程序開始執(zhí)行Thumb指令。FIQ中斷服務程序使用BX指令,將處理器從Thumb狀態(tài)切換到ARM狀態(tài),通過清除CPSR的T位實現(xiàn)。FIQ中斷服務程序在ARM狀態(tài)下執(zhí)行恢復中斷現(xiàn)場等操作。FIQ中斷異常處理結(jié)束后,異常處理程序完成以下動作:將SPSR寄存器的值復制回CPSR寄存器;將LR寄存的值減去一個常量(FIQ異常為4)后復制到PC寄存器,跳轉(zhuǎn)到被中斷的用戶程序(指令2的地址)。1002.8ARM體系的異常未定義的指令異常

未定義指令異常是內(nèi)部異常中斷,當ARM處理器遇到一條自己和系統(tǒng)內(nèi)部任何協(xié)處理器都無法執(zhí)行的指令時,就會發(fā)生未定義指令異常,從而進入中斷處理程序,同時軟件可使用這一機制通過仿真未定義的協(xié)處理器指令來擴展ARM指令集。在仿真失敗的指令后,捕獲處理器執(zhí)行下面的指令:MOVSPC,R14_und1012.8ARM體系的異常中止異常

中止表示當前對存儲器的訪問不能被完成,這

溫馨提示

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

評論

0/150

提交評論