嵌入式系统课件_第1页
嵌入式系统课件_第2页
嵌入式系统课件_第3页
嵌入式系统课件_第4页
嵌入式系统课件_第5页
已阅读5页,还剩1071页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系統

1.嵌入式系統2.嵌入式處理器3.嵌入式操作系統嵌入式系統概述1.1嵌入式系統概述

經過幾十年的發展,嵌入式系統已經在很大程度改變了人們的生活、工作和娛樂方式,而且這些改變還在加速。嵌入式系統具有無數的種類,每類都具有自己獨特的個性。例如,MP3、數碼相機與印表機就有很大的不同。汽車中更是具有多個嵌入式系統,使汽車更輕快、更乾淨、更容易駕駛。現實中的嵌入式系統

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

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

早在1990年之前,嵌入式系統通常是很簡單的且具有很長的產品生命週期的自主設備。近些年來,嵌入式工業經歷了巨大的變革。產品市場窗口現在預計翻番的週期狂熱到6~9個月。全球重新定義市場的機會和膨脹的應用空間。互聯現在是一個需求而不是輔助性的,包括用有線和剛剛顯露頭角的無線技術。基於電子的產品更複雜化。互聯嵌入式系統產生新的依賴網路基礎設施的應用。微處理器的處理能力按莫爾定律(Moore’sLaw)預計的速度在增加。該定律認為積體電路和電晶體個數每18個月翻一番。1.嵌入式系統2.嵌入式處理器3.嵌入式操作系統嵌入式系統概述簡介

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

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

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

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

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

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

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

時間先後適用於多個用戶共用系統資源適用於計算中心等較大的電腦系統適用於嵌入式設備和有即時性要求的系統中1.3嵌入式操作系統概述監控程序操作系統即時操作系統分時操作系統多道批處理操作系統

時間先後適用於多個用戶共用系統資源適用於計算中心等較大的電腦系統適用於嵌入式設備和有即時性要求的系統中即時操作系統是我們介紹的重點1.3嵌入式操作系統即時操作系統的特點IEEE的即時UNIX分委會認為即時操作系統應具備以下的幾點:非同步的事件回應切換時間和中斷延遲時間確定優先順序中斷和調度搶佔式調度記憶體鎖定連續檔同步

總的來說即時操作系統是事件驅動的,能對來自外界的作用和信號在限定的時間範圍內作出回應。它強調的是即時性、可靠性和靈活性,與即時應用軟體相結合成為有機的整體起著核心作用,由它來管理和協調各項工作,為應用軟體提供良好的運行軟體環境及開發環境。從即時系統的應用特點來看即時操作系統可以分為兩種:一般即時操作系統和嵌入式即時操作系統。

一般即時操作系統應用於即時處理系統的上位機和即時查詢系統等即時性較弱的即時系統,並且提供了開發、調試、運用一致的環境。

嵌入式即時操作系統應用於即時性要求高的即時控制系統,而且應用程式的開發過程是通過交叉開發來完成的,即開發環境與運行環境是不一致。嵌入式即時操作系統具有規模小(一般在幾K~幾十K內)、可固化使用即時性強(在毫秒或微秒數量級上)的特點

。1.3嵌入式操作系統基本概念

對基於晶片的開發來說,應用程式一般是一個無限的迴圈,可稱為前後臺系統或超循環系統。很多基於微處理器的產品採用前後臺系統設計,例如微波爐、電話機、玩具等。在另外一些基於微處理器應用中,從省電的角度出發,平時微處理器處在停機狀態,所有事都靠中斷服務來完成。——前後臺系統基本概念

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

迴圈中調用相應的函數完成相應的操作,這部分可以看成後臺行為,後臺也可以叫做任務級。這種系統在處理的及時性上比實際可以做到的要差。ISRISRISRISR後臺前臺中斷服務程式時間——前後臺系統1.3嵌入式操作系統基本概念

操作系統是電腦中最基本的程式。操作系統負責電腦系統中全部軟硬資源的分配與回收、控制與協調等併發的活動;操作系統提供用戶介面,使用戶獲得良好的工作環境;操作系統為用戶擴展新的系統功能提供軟體平臺。——操作系統硬體硬體驅動操作系統用戶程式1.3嵌入式操作系統基本概念

即時操作系統是一段在嵌入式系統啟動後首先執行的背景程式,用戶的應用程式是運行於RTOS之上的各個任務,RTOS根據各個任務的要求,進行資源(包括記憶體、外設等)管理、消息管理、任務調度、異常處理等工作。在RTOS支持的系統中,每個任務均有一個優先順序,RTOS根據各個任務的優先順序,動態地切換各個任務,保證對即時性的要求。——即時操作系統(RTOS)1.3嵌入式操作系統基本概念

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

調度是內核的主要職責之一。調度就是決定該輪到哪個任務運行了。多數即時內核是基於優先順序調度法的。每個任務根據其重要程式的不同被賦予一定的優先順序。基於優先順序的調度法指CPU總是讓處在就緒態的優先順序最高的任務先運行。然而究竟何時讓高優先順序任務掌握CPU的使用權,有兩種不同的情況,這要看用的是什麼類型的內核,是非佔先式的還是佔先式的內核。——調度1.3嵌入式操作系統基本概念

非佔先式內核要求每個任務自我放棄CPU的所有權。非佔先式調度法也稱作合作型多任務,各個任務彼此合作共用一個CPU。非同步事件還是由中斷服務來處理。中斷服務可以使一個高優先順序的任務由掛起狀態變為就緒狀態。但中斷服務以後控制權還是回到原來被中斷了的那個任務,直到該任務主動放棄CPU的使用權時,那個高優先順序的任務才能獲得CPU的使用權。——非佔先式內核1.3嵌入式操作系統基本概念

當系統回應時間很重要時,要使用佔先式內核。因此絕大多數商業上銷售的即時內核都是佔先式內核。最高優先順序的任務一旦就緒,總能得到CPU的控制權。當一個運行著的任務使一個比它優先順序高的任務進入了就緒狀態,當前任務的CPU使用權就被剝奪了,或者說被掛起了,那個高優先順序的任務立刻得到了CPU的控制權。如果是中斷服務副程式使一個高優先順序的任務進入就緒態,中斷完成時,中斷了的任務被掛起,優先順序高的那個任務開始運行。——佔先式內核1.3嵌入式操作系統基本概念

任務的優先順序是表示任務被調度的優先程度。每個任務都具有優先順序。任務越重要,賦予的優先順序應越高,越容易被調度而進入運行態。——任務優先順序1.3嵌入式操作系統基本概念

中斷是一種硬體機制,用於通知CPU有個非同步事件發生了。中斷一旦被識別,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳轉到專門的副程式,稱為中斷服務副程式(ISR)。中斷服務副程式做事件處理,處理完成後,程式回到:1.在前後臺系統中,程式回到後臺程式;2.對非佔先式內核而言,程式回到被中斷了的任務;3.對佔先式內核而言,讓進入就緒態的優先順序最高的任務開始運行。——中斷前後臺系統1.3嵌入式操作系統基本概念——中斷ISR任務ISR非佔先操作系統任務A任務B任務CISR佔先操作系統任務A任務B任務C1.3嵌入式操作系統基本概念

時鐘節拍是特定的週期性中斷。這個中斷可以看作是系統心臟的脈動。中斷之間的時間間隔取決於不同應用,一般在10ms到200ms之間。時鐘的節拍式中斷使得內核可以將任務延時若干個整數時鐘節拍,以及當任務等待事件發生時,提供等待超時的依據。時鐘節拍率越快,系統的額外開銷就越大。——時鐘節拍1.3嵌入式操作系統使用即時操作系統的必要性

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

1.3嵌入式操作系統即時操作系統的優缺點

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

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

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

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

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

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

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

該處理器是首款基於ARMv7-M架構的處理器,採用了純Thumb2指令的執行方式,具有極高的運算能力和中斷相應能力。

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

該處理器是首款基於ARMv7架構的高級嵌入式處理器,其主要目標為產量巨大的高級嵌入式應用系統,如硬碟,噴墨式印表機,以及汽車安全系統等等。CortexTM-R4F處理器簡介

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

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

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

ARM7系列廣泛應用於多媒體和嵌入式設備,包括Internet設備、網路和數據機設備,以及移動電話、PDA等無線設備。492.1ARM簡介

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

ARM9系列主要應用於引擎管理、儀器儀錶、安全系統和機頂盒等領域。ARM9系列簡介502.1ARM簡介

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

ARM9E系列主要應用於下一代無線設備、數字消費品、成像設備、工業控制、存儲設備和網路設備等領域。ARM9E系列簡介512.1ARM簡介ARM10E系列簡介

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

注意:“ARM核”並非晶片,ARM核與其它部件如RAM、ROM、片內外設組合在一起才能構成現實的晶片。552.2ARM7TDMI記憶體的字與半字

從偶數地址開始的連續2個位元組構成一個半字;以能被4整除的地址開始的連續4個位元組構成一個字;

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

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

正常操作過程中,在執行一條指令的同時對下一條(第二條)指令進行解碼,並將第三條指令從記憶體中取出。

在ARM狀態下,流水線上各指令的地址為:

在Thumb狀態下,流水線上各指令的地址為:PCPC-4PC-8PCPC-2PC-4582.2ARM7TDMI三級流水線結構的指令執行順序PC指令1指令2指令3指令4…………程式記憶體PC-4PC-8PC+4週期1週期2週期3週期4週期5週期6取指解碼執行取指解碼執行取指解碼執行取指解碼執行週期2週期1週期3週期4

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

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

在第3個週期,PC指向指令3,此時指令1進入三級流水線的執行階段,指令2進入解碼階段,取出指令3。3

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

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

程式計數器R15(PC)總是指向“正在取指”的指令,而不是指向“正在執行”的指令或“正在解碼”的指令。

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

注:ARM狀態時,每條指令為4位元組長。PC指向0x4000地址,取指ADD指令。PC指向0x4004地址,解碼ADD指令。PC指向0x4008地址,執行ADD指令,所以指令執行的結果為:PC=PC+4=0x4008+4=0x400C。…………601.ARM簡介2.ARM7TDMI3.ARM的模組、內核和功能框圖4.ARM處理器狀態5.ARM處理器模式ARM7體系結構6.ARM內部寄存器7.當前程式狀態寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統61CPU掃描鏈1掃描鏈1數據總線數據匯流排掃描鏈1掃描鏈2協處理器信號介面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協處理介面信號EmbedICE硬體仿真功能模組片上調試系統讀寫匯流排622.3ARM內核框圖地址寄存器寄存器組31*32位寄存器(6個狀態寄存器)地址增加器乘法器桶形移位器32位ALU寫數據寄存器指令管線讀數據寄存器Thumb指令解碼器指令解碼和控制邏輯ADDR[31:0]CLKCLENCFGBIGENDnIRQnFIQnRESETABORTLOCKWRITESIZE[1:0]PROT[1:0]TRANS[1:0]DBG輸出DBG輸入CP控制CP握手WDATA[31:0]RDATA[31:0]掃描調試控制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同步的掃描調試訪問介面記憶體介面記憶體管理介面協處理器介面時鐘中斷匯流排控制仲裁調試641.ARM簡介2.ARM7TDMI3.ARM的模組、內核和功能框圖4.ARM處理器狀態5.ARM處理器模式ARM7體系結構6.ARM內部寄存器7.當前程式狀態寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統652.4ARM處理器狀態處理器狀態ARM7TDMI處理器內核包含2套指令系統,分別為ARM指令集和Thumb指令,並且各自對應1種處理器的狀態:ARM狀態:32位,處理器執行字方式的ARM指令,處理器默認為此狀態;Thumb狀態:16位,處理器執行半字方式的Thumb指令。注意:兩個狀態之間的切換並不影響處理器模式或寄存器內容。662.4ARM處理器狀態狀態切換的一個例子地址最低位為0,表示切換到ARM狀態

使用BX指令將ARM內核的操作狀態在ARM狀態和Thumb狀態之間進行切換。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狀態跳轉地址標號執行完BX指令,處理器切換到Thumb狀態,開始執行Thumb指令程式代碼指令集關係

從ARM狀態切換到Thumb狀態的程式代碼如下:

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

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

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

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

這五種模式稱為異常模式。它們除了可以通過程式切換進入外,也可以由特定的異常進入。當特定的異常出現時,處理器進入相應的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態不可靠。何時進入異常模式,具體規定如下:處理器複位之後進入管理模式,操作系統內核通常處於管理模式;當處理器訪問記憶體失敗時,進入數據訪問中止模式;當處理器遇到沒有定義或不支持的指令時,進入未定義模式;中斷模式與快速中斷模式分別對ARM處理器2種不同級別的中斷作出回應。701.ARM簡介2.ARM7TDMI3.ARM的模組、內核和功能框圖4.ARM處理器狀態5.ARM處理器模式ARM7體系結構6.ARM內部寄存器7.當前程式狀態寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統712.6ARM內部寄存器簡介

在ARM處理器內部共有37個用戶可訪問的寄存器,分別為31個通用32位寄存器和6個狀態寄存器。ARM處理器共有7種不同的處理器模式,每種模式都有一組相應的寄存器組,最多可以18個活動的寄存器。72ARM狀態各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq

所有的37個寄存器,分成兩大類:31個通用32位寄存器;6個狀態寄存器。73ARM狀態各模式下可以訪問的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq74未分組的通用寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq寄存器R0~R7為未分組的通用寄存器,它們在任何處理器模式都對應於相同的32位物理寄存器。第一類分組的通用寄存器寄存器R8~R12有兩個分組的物理寄存器。一個用於除FIQ模式之外的所有寄存器模式,另一個用於FIQ模式。在發生FIQ中斷後,處理器不必為保護寄存器而浪費時間,從而加速了FIQ的處理速度。第二類分組的通用寄存器寄存器R13、R14分別有6個分組的物理寄存器。1個用於用戶和系統模式,其餘5個分別用於5種異常模式。寄存器R13通常作為堆疊指針(SP),用於保存待使用的寄存器的內容。寄存器R14稱為鏈接寄存器(LR),在結構上有兩個特殊功能:當使用BL指令調用副程式時,返回地址將自動存入R14中;當發生異常時,將R14對應的異常模式版本設置為異常返回地址(有些異常有一個小的固定偏移量)。程式計數器寄存器R15稱為程式計數器(PC),它指向正在“取指”的指令。狀態寄存器寄存器CPSR為當前程式狀態寄存器,在異常模式中,另外一個寄存器“程式狀態保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進入異常時它保存CPSR的當前值,異常退出時可通過它恢復CPSR。752.6ARM內部寄存器在Thumb狀態各模式下實際訪問的寄存器Thumb狀態寄存器集是ARM狀態集的子集,程式員可以直接訪問的寄存器為:8個通用寄存器R0~R7;程式計數器(PC);堆疊指針(SP);鏈接寄存器(LR);當前程式狀態寄存器(CPSR)。76在Thumb狀態各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSR未分組的通用寄存器第二類分組的通用寄存器在組合語言中寄存器R0~R7為通用寄存器,對於任何處理器模式,它們中的每一個都對應於相同的32為物理寄存器。堆疊指針SP對應ARM狀態的寄存器R13。每個異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆疊。注意:在發生異常時,處理器自動進入ARM狀態。鏈接寄存器LR對應ARM狀態寄存器R14。注意:在發生異常時,處理器自動進入ARM狀態。77ARM狀態Thumb寄存器在ARM狀態寄存器上的映射R0R1R2R3R4R5R6R7R8R9R10R11R12堆疊指針(R13)連接寄存器(R14)程式計數器(R15)CPSRSPSRR0R1R2R3R4R5R6R7堆疊指針(SP)連接寄存器(LR)程式計數器(PC)CPSRThumb狀態Thumb狀態R0~R7與ARM狀態R0~R7相同;1Thumb狀態CPSR(無SPSR)與ARM狀態CPSR相同。5Thumb狀態SP映射到ARM狀態R13;2Thumb狀態LR映射到ARM狀態R14;3Thumb狀態PC映射到ARM狀態R15(PC);4低端寄存器高端寄存器

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

系統複位,自動切換到ARM狀態。1

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

在Thumb狀態下,正常程式執行時產生中斷異常。3

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

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

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

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

警告:絕對不要強制改變CPSR寄存器中的控制位T。如果這樣做,處理器將進入一個無法預測的狀態。2.7當前程式狀態寄存器控制位1、中斷禁止控制位I和F;2、處理器狀態位T;3、處理器模式位M0~M4。當控制位I置位時,IRQ中斷被禁止;當控制位F置位時,FIQ中斷被禁止。當控制位T置位時,處理器正在Thumb狀態下運行;當控制位T清零時,處理器正在ARM狀態下運行。M[4:0]模式可見的Thumb狀態寄存器可見的ARM狀態寄存器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系統R0~R7,SP,LR,PC,CPSRR0~R14,PC,CPSR

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

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

下表所示為異常返回地址值以及退出異常處理程式所推薦使用的指令。異常或入口返回指令返回地址SWIMOVSPC,R14_svcR14未定義的指令MOVSPC,R14_undR14預取中止SUBSPC,R14_abt,#4R14-4快速中斷SUBSPC,R14_fiq,#4R14-4中斷SUBSPC,R14_irq,#4R14-4數據中止SUBSPC,R14_abt,#8R14-8複位無-

注意:“MOVSPC,R14_svc”是指在管理模式執行MOVSPC,R14指令,同樣類似的指令還有“MOVSPC,R14_und”、“SUBSPC,R14_abt,#4”等。882.8ARM體系的異常異常向量表地址異常進入時的模式進入時I的狀態進入時F的狀態0x00000000複位管理禁止禁止0x00000004未定義指令未定義IF0x00000008軟體中斷異常管理禁止F0x0000000C中止(預取)中止IF0x00000010中止(數據)中止IF0x00000014保留保留--0x00000018IRQ中斷禁止F0x0000001CFIQ快速中斷禁止禁止注:表中的I和F表示不對該位有影響,保留原來的值。892.8ARM體系的異常異常優先順序

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

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

當異常處理程式結束時,異常處理程式必須:返回到發生異常中斷的指令的下一條指令處執行,即就是說將LR中的值減去偏移量後移入PC;將SPSR的值複製回CPSR;清零在入口處置位的中斷禁止標誌。942.8ARM體系的異常複位異常

當nRESET信號被拉低時,ARM處理器放棄正在執行的指令,等到nRESET信號再次變高時,處理器執行一下操作:強制M[4:0]變為b10011,系統進入管理模式;將CPSR中的標誌位I和F置位,IRQ與FIQ中斷被禁止;將CPSR中的標誌位T清零,處理器處於ARM狀態;強制PC從地址0x00開始對下一條指令進行取指;返回到ARM狀態並恢復執行。952.8ARM體系的異常中斷請求異常

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

程式運行在用戶模式下,當一個IRQ異常中斷發生時,內核切換到“中斷模式”,並自動的做如下處理: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中斷產生,進入ARM狀態,設置為IRQ模式。3

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

將IRQ中斷異常模式的棧頂指針保存到R13_irq中,之後軟體處理程式調用中斷服務程式為中斷源服務。597

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

將SPSR_irq中的內容複製到CPSR。2

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

3

中斷服務程式執行完畢後,系統將通過以下幾步軟體操作返回用戶模式:982.8ARM體系的異常快速中斷請求異常

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

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

在系統模式下運行用戶程式,當前處理器處於Thumb狀態,執行Thumb指令代碼,同時處理器還允許IRQ和FIQ中斷。

指令1的在執行過程產生了FIQ中斷。

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

未定義指令異常是內部異常中斷,當ARM處理器遇到一條自己和系統內部任何協處理器都無法執行的指令時,就會發生未定義指令異常,從而進入中斷處理程式,同時軟體可使用這一機制通過仿真未定義的協處理器指令來擴展ARM指令集。在仿真失敗的指令後,捕獲處理器執行下麵的指令:MOVSPC,R14_und1012.8ARM體系的異常中止異常

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论