![嵌入式系統(tǒng)課件_第1頁(yè)](http://file4.renrendoc.com/view11/M01/17/10/wKhkGWW-KV-AA3a1AABb7SaWz2Y743.jpg)
![嵌入式系統(tǒng)課件_第2頁(yè)](http://file4.renrendoc.com/view11/M01/17/10/wKhkGWW-KV-AA3a1AABb7SaWz2Y7432.jpg)
![嵌入式系統(tǒng)課件_第3頁(yè)](http://file4.renrendoc.com/view11/M01/17/10/wKhkGWW-KV-AA3a1AABb7SaWz2Y7433.jpg)
![嵌入式系統(tǒng)課件_第4頁(yè)](http://file4.renrendoc.com/view11/M01/17/10/wKhkGWW-KV-AA3a1AABb7SaWz2Y7434.jpg)
![嵌入式系統(tǒng)課件_第5頁(yè)](http://file4.renrendoc.com/view11/M01/17/10/wKhkGWW-KV-AA3a1AABb7SaWz2Y7435.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式系統(tǒng)
1.嵌入式系統(tǒng)2.嵌入式處理器3.嵌入式操作系統(tǒng)嵌入式系統(tǒng)概述1.1嵌入式系統(tǒng)概述
經(jīng)過幾十年的發(fā)展,嵌入式系統(tǒng)已經(jīng)在很大程度改變了人們的生活、工作和娛樂方式,而且這些改變還在加速。嵌入式系統(tǒng)具有無(wú)數(shù)的種類,每類都具有自己獨(dú)特的個(gè)性。例如,MP3、數(shù)碼相機(jī)與印表機(jī)就有很大的不同。汽車中更是具有多個(gè)嵌入式系統(tǒng),使汽車更輕快、更乾淨(jìng)、更容易駕駛。現(xiàn)實(shí)中的嵌入式系統(tǒng)
即使不可見,嵌入式系統(tǒng)也無(wú)處不在。嵌入式系統(tǒng)在很多產(chǎn)業(yè)中得到了廣泛的應(yīng)用並逐步改變著這些產(chǎn)業(yè),包括工業(yè)自動(dòng)化、國(guó)防、運(yùn)輸和航太領(lǐng)域。例如神州飛船和長(zhǎng)征火箭中肯定有很多嵌入式系統(tǒng),導(dǎo)彈的制導(dǎo)系統(tǒng)也是嵌入式系統(tǒng),高檔汽車中也有多達(dá)幾十個(gè)嵌入式系統(tǒng)。在日常生活中,人們使用各種嵌入式系統(tǒng),但未必知道它們。事實(shí)上,幾乎所有帶有一點(diǎn)“智能”的家電(全自動(dòng)洗衣機(jī)、電腦電飯煲…)都是嵌入式系統(tǒng)。嵌入式系統(tǒng)廣泛的適應(yīng)能力和多樣性,使得視聽、工作場(chǎng)所甚至健身設(shè)備中到處都有嵌入式系統(tǒng)?,F(xiàn)實(shí)中的嵌入式系統(tǒng)嵌入式系統(tǒng)的概念
目前,對(duì)嵌入式系統(tǒng)的定義多種多樣,但沒有一種定義是全面的。下麵給出兩種比較合理定義:從技術(shù)的角度定義:以應(yīng)用為中心、以電腦技術(shù)為基礎(chǔ)、軟體硬體可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用電腦系統(tǒng)。從系統(tǒng)的角度定義:嵌入式系統(tǒng)是設(shè)計(jì)完成複雜功能的硬體和軟體,並使其緊密耦合在一起的電腦系統(tǒng)。術(shù)語(yǔ)嵌入式反映了這些系統(tǒng)通常是更大系統(tǒng)中的一個(gè)完整的部分,稱為嵌入的系統(tǒng)。嵌入的系統(tǒng)中可以共存多個(gè)嵌入式系統(tǒng)。嵌入式系統(tǒng)示例——汽車控制系統(tǒng)馬達(dá)控制器車燈嵌入式系統(tǒng)示例——汽車控制系統(tǒng)尾燈控制系統(tǒng)後車門控制系統(tǒng)前車門控制系統(tǒng)座椅控制系統(tǒng)發(fā)動(dòng)器控制系統(tǒng)所有的控制系統(tǒng)都是一個(gè)完整的嵌入式系統(tǒng)嵌入式系統(tǒng)的未來
早在1990年之前,嵌入式系統(tǒng)通常是很簡(jiǎn)單的且具有很長(zhǎng)的產(chǎn)品生命週期的自主設(shè)備。近些年來,嵌入式工業(yè)經(jīng)歷了巨大的變革。產(chǎn)品市場(chǎng)窗口現(xiàn)在預(yù)計(jì)翻番的週期狂熱到6~9個(gè)月。全球重新定義市場(chǎng)的機(jī)會(huì)和膨脹的應(yīng)用空間。互聯(lián)現(xiàn)在是一個(gè)需求而不是輔助性的,包括用有線和剛剛顯露頭角的無(wú)線技術(shù)?;峨娮拥漠a(chǎn)品更複雜化。互聯(lián)嵌入式系統(tǒng)產(chǎn)生新的依賴網(wǎng)路基礎(chǔ)設(shè)施的應(yīng)用。微處理器的處理能力按莫爾定律(Moore’sLaw)預(yù)計(jì)的速度在增加。該定律認(rèn)為積體電路和電晶體個(gè)數(shù)每18個(gè)月翻一番。1.嵌入式系統(tǒng)2.嵌入式處理器3.嵌入式操作系統(tǒng)嵌入式系統(tǒng)概述簡(jiǎn)介
早期的嵌入式系統(tǒng)通常使用普通個(gè)人電腦(PC)中的通用處理器。近年來,隨著大量先進(jìn)的微處理器製造技術(shù)的發(fā)展,越來越多的嵌入式系統(tǒng)用嵌入式處理器建造,而不是用通用目的的處理器。這些嵌入式處理器可以大致分為以下幾類:注重嵌入式處理器的尺寸、能耗和價(jià)格。應(yīng)用於PDA等不注重計(jì)算的設(shè)備;注重嵌入式處理器的性能。應(yīng)用於路由器等計(jì)算密集型的設(shè)備;注重嵌入式處理器的性能、尺寸、能耗和價(jià)格。應(yīng)用於蜂窩電話等設(shè)備;1.2嵌入式處理器分類
嵌入式處理器可以分為以下幾大類:嵌入式微處理器;嵌入式微控制器;嵌入式DSP處理器;嵌入式片上系統(tǒng)(SOC)。嵌入式微處理器
嵌入式微處理器的基礎(chǔ)是通用電腦中的CPU。在應(yīng)用中,將微處理器裝配在專門設(shè)計(jì)的電路板上,只保留和嵌入式應(yīng)用有關(guān)的母板功能,這樣可以大幅度減小系統(tǒng)體積和功耗。為了滿足嵌入式應(yīng)用的特殊要求,嵌入式微處理器雖然在功能上和標(biāo)準(zhǔn)微處理器基本是一樣的,但在工作溫度、抗電磁干擾、可靠性等方面一般都做了各種增強(qiáng)。和工業(yè)控制電腦相比,嵌入式微處理器具有體積小、重量輕、成本低、可靠性高的優(yōu)點(diǎn),但是在電路板上必須包括ROM、RAM、匯流排介面、各種外設(shè)等器件,從而降低了系統(tǒng)的可靠性,技術(shù)保密性也較差。嵌入式微處理器及其記憶體、匯流排、外設(shè)等安裝在一塊電路板上,稱為單板電腦。如STD-BUS、PC104等。CPUROMRAM外設(shè)1外設(shè)2單板電腦嵌入式微控制器
嵌入式微控制器又稱單片機(jī),它是將整個(gè)電腦系統(tǒng)集成到一塊晶片中。嵌入式微控制器一般以某一種微處理器內(nèi)核為核心,晶片內(nèi)部集成ROM/EPROM、RAM、匯流排、匯流排邏輯、定時(shí)/計(jì)數(shù)器、WatchDog、I/O、串行口、脈寬調(diào)製輸出、A/D、D/A、FlashRAM、EEPROM等各種必要功能和外設(shè)。為適應(yīng)不同的應(yīng)用需求,一般一個(gè)系列的單片機(jī)具有多種衍生產(chǎn)品,每種衍生產(chǎn)品的處理器內(nèi)核都是一樣的,不同的是記憶體和外設(shè)的配置及封裝。這樣可以使單片機(jī)最大限度地和應(yīng)用需求相匹配,功能不多不少,從而減少功耗和成本。和嵌入式微處理器相比,微控制器的最大特點(diǎn)是單片化,體積大大減小,從而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系統(tǒng)工業(yè)的主流。微控制器的片上外設(shè)資源一般比較豐富,適合於控制,因此稱微控制器。嵌入式微控制器目前的品種和數(shù)量最多,比較有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300、數(shù)目眾多ARM晶片等。目前MCU占嵌入式系統(tǒng)約70%的市場(chǎng)份額。複位部件看門狗部件晶振部件I/O部件中斷部件ROM部件SRAM部件定時(shí)器部件CPU核嵌入式DSP處理器DSP處理器對(duì)系統(tǒng)結(jié)構(gòu)和指令進(jìn)行了特殊設(shè)計(jì),使其適合於執(zhí)行DSP演算法,編譯效率較高,指令執(zhí)行速度也較高。在數(shù)字濾波、FFT、譜分析等方面DSP演算法正在大量進(jìn)入嵌入式領(lǐng)域,DSP應(yīng)用正從在通用單片機(jī)中以普通指令實(shí)現(xiàn)DSP功能,過渡到採(cǎi)用嵌入式DSP處理器。嵌入式DSP處理器比較有代表性的產(chǎn)品是TexasInstruments的TMS320系列和Motorola的DSP56000系列。TMS320系列處理器包括用於控制的C2000系列,移動(dòng)通信的C5000系列,以及性能更高的C6000和C8000系列。DSP56000目前已經(jīng)發(fā)展成為DSP56000,DSP56100,DSP56200和DSP56300等幾個(gè)不同系列的處理器。另外PHILIPS公司近年也推出了基於可重置嵌入式DSP結(jié)構(gòu)低成本、低功耗技術(shù)上製造的R.E.A.LDSP處理器,特點(diǎn)是具備雙Harvard結(jié)構(gòu)和雙乘/累加單元,應(yīng)用目標(biāo)是大批量消費(fèi)類產(chǎn)品。嵌入式片上系統(tǒng)(SOC)
隨著EDA的推廣和VLSI設(shè)計(jì)的普及化及半導(dǎo)體工藝的迅速發(fā)展,在一個(gè)矽片上實(shí)現(xiàn)一個(gè)更為複雜的系統(tǒng)的時(shí)代已來臨,這就是SystemOnChip(SOC)。各種通用處理器內(nèi)核將作為SOC設(shè)計(jì)公司的標(biāo)準(zhǔn)庫(kù),和許多其他嵌入式系統(tǒng)外設(shè)一樣,成為VLSI設(shè)計(jì)中一種標(biāo)準(zhǔn)的器件,用標(biāo)準(zhǔn)的VHDL等語(yǔ)言描述,存儲(chǔ)在器件庫(kù)中。用戶只需定義出其整個(gè)應(yīng)用系統(tǒng),仿真通過後就可以將設(shè)計(jì)圖交給半導(dǎo)體工廠製作樣品。這樣除個(gè)別無(wú)法集成的器件以外,整個(gè)嵌入式系統(tǒng)大部分均可集成到一塊或幾塊晶片中去,應(yīng)用系統(tǒng)電路板將變得很簡(jiǎn)潔,對(duì)於減小體積和功耗、提高可靠性非常有利。
SoC可以分為通用和專用兩類。通用系列包括Infineon的TriCore、Motorola的M-Core、某些ARM系列器件、Echelon和Motorola聯(lián)合研製的Neuron晶片等。專用SoC一般專用於某個(gè)或某類系統(tǒng)中,不為一般用戶所知。一個(gè)有代表性的產(chǎn)品是Philips的SmartXA,它將XA單片機(jī)內(nèi)核和支持超過2048位複雜RSA演算法的CCU單元製作在一塊矽片上,形成一個(gè)可加載JAVA或C語(yǔ)言的專用的SOC,可用於公眾互聯(lián)網(wǎng)如Internet安全方面。1.嵌入式系統(tǒng)2.嵌入式處理器3.嵌入式操作系統(tǒng)嵌入式系統(tǒng)概述1.3嵌入式操作系統(tǒng)概述
電腦系統(tǒng)由硬體和軟體組成,在發(fā)展初期沒有操作系統(tǒng)這個(gè)概念,用戶使用監(jiān)控程序來使用電腦。隨著電腦技術(shù)的發(fā)展,電腦系統(tǒng)的硬體、軟體資源也愈來愈豐富,監(jiān)控程序已不能適應(yīng)電腦應(yīng)用的要求。於是在六十年代中期監(jiān)控程序又進(jìn)一步發(fā)展形成了操作系統(tǒng)(OperatingSystem)。發(fā)展到現(xiàn)在,廣泛使用的有三種操作系統(tǒng)即多道批處理操作系統(tǒng)、分時(shí)操作系統(tǒng)以及即時(shí)操作系統(tǒng)。1.3嵌入式操作系統(tǒng)概述監(jiān)控程序操作系統(tǒng)即時(shí)操作系統(tǒng)分時(shí)操作系統(tǒng)多道批處理操作系統(tǒng)
時(shí)間先後適用於多個(gè)用戶共用系統(tǒng)資源適用於計(jì)算中心等較大的電腦系統(tǒng)適用於嵌入式設(shè)備和有即時(shí)性要求的系統(tǒng)中1.3嵌入式操作系統(tǒng)概述監(jiān)控程序操作系統(tǒng)即時(shí)操作系統(tǒng)分時(shí)操作系統(tǒng)多道批處理操作系統(tǒng)
時(shí)間先後適用於多個(gè)用戶共用系統(tǒng)資源適用於計(jì)算中心等較大的電腦系統(tǒng)適用於嵌入式設(shè)備和有即時(shí)性要求的系統(tǒng)中即時(shí)操作系統(tǒng)是我們介紹的重點(diǎn)1.3嵌入式操作系統(tǒng)即時(shí)操作系統(tǒng)的特點(diǎn)IEEE的即時(shí)UNIX分委會(huì)認(rèn)為即時(shí)操作系統(tǒng)應(yīng)具備以下的幾點(diǎn):非同步的事件回應(yīng)切換時(shí)間和中斷延遲時(shí)間確定優(yōu)先順序中斷和調(diào)度搶佔(zhàn)式調(diào)度記憶體鎖定連續(xù)檔同步
總的來說即時(shí)操作系統(tǒng)是事件驅(qū)動(dòng)的,能對(duì)來自外界的作用和信號(hào)在限定的時(shí)間範(fàn)圍內(nèi)作出回應(yīng)。它強(qiáng)調(diào)的是即時(shí)性、可靠性和靈活性,與即時(shí)應(yīng)用軟體相結(jié)合成為有機(jī)的整體起著核心作用,由它來管理和協(xié)調(diào)各項(xiàng)工作,為應(yīng)用軟體提供良好的運(yùn)行軟體環(huán)境及開發(fā)環(huán)境。從即時(shí)系統(tǒng)的應(yīng)用特點(diǎn)來看即時(shí)操作系統(tǒng)可以分為兩種:一般即時(shí)操作系統(tǒng)和嵌入式即時(shí)操作系統(tǒng)。
一般即時(shí)操作系統(tǒng)應(yīng)用於即時(shí)處理系統(tǒng)的上位機(jī)和即時(shí)查詢系統(tǒng)等即時(shí)性較弱的即時(shí)系統(tǒng),並且提供了開發(fā)、調(diào)試、運(yùn)用一致的環(huán)境。
嵌入式即時(shí)操作系統(tǒng)應(yīng)用於即時(shí)性要求高的即時(shí)控制系統(tǒng),而且應(yīng)用程式的開發(fā)過程是通過交叉開發(fā)來完成的,即開發(fā)環(huán)境與運(yùn)行環(huán)境是不一致。嵌入式即時(shí)操作系統(tǒng)具有規(guī)模小(一般在幾K~幾十K內(nèi))、可固化使用即時(shí)性強(qiáng)(在毫秒或微秒數(shù)量級(jí)上)的特點(diǎn)
。1.3嵌入式操作系統(tǒng)基本概念
對(duì)基於晶片的開發(fā)來說,應(yīng)用程式一般是一個(gè)無(wú)限的迴圈,可稱為前後臺(tái)系統(tǒng)或超循環(huán)系統(tǒng)。很多基於微處理器的產(chǎn)品採(cǎi)用前後臺(tái)系統(tǒng)設(shè)計(jì),例如微波爐、電話機(jī)、玩具等。在另外一些基於微處理器應(yīng)用中,從省電的角度出發(fā),平時(shí)微處理器處在停機(jī)狀態(tài),所有事都靠中斷服務(wù)來完成?!搬崤_(tái)系統(tǒng)基本概念
中斷服務(wù)程式處理非同步事件,這部分可以看成前臺(tái)行為,前臺(tái)也叫中斷級(jí)。時(shí)間相關(guān)性很強(qiáng)的關(guān)鍵操作一定是靠中斷服務(wù)程式來保證的。
迴圈中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作,這部分可以看成後臺(tái)行為,後臺(tái)也可以叫做任務(wù)級(jí)。這種系統(tǒng)在處理的及時(shí)性上比實(shí)際可以做到的要差。ISRISRISRISR後臺(tái)前臺(tái)中斷服務(wù)程式時(shí)間——前後臺(tái)系統(tǒng)1.3嵌入式操作系統(tǒng)基本概念
操作系統(tǒng)是電腦中最基本的程式。操作系統(tǒng)負(fù)責(zé)電腦系統(tǒng)中全部軟硬資源的分配與回收、控制與協(xié)調(diào)等併發(fā)的活動(dòng);操作系統(tǒng)提供用戶介面,使用戶獲得良好的工作環(huán)境;操作系統(tǒng)為用戶擴(kuò)展新的系統(tǒng)功能提供軟體平臺(tái)。——操作系統(tǒng)硬體硬體驅(qū)動(dòng)操作系統(tǒng)用戶程式1.3嵌入式操作系統(tǒng)基本概念
即時(shí)操作系統(tǒng)是一段在嵌入式系統(tǒng)啟動(dòng)後首先執(zhí)行的背景程式,用戶的應(yīng)用程式是運(yùn)行於RTOS之上的各個(gè)任務(wù),RTOS根據(jù)各個(gè)任務(wù)的要求,進(jìn)行資源(包括記憶體、外設(shè)等)管理、消息管理、任務(wù)調(diào)度、異常處理等工作。在RTOS支持的系統(tǒng)中,每個(gè)任務(wù)均有一個(gè)優(yōu)先順序,RTOS根據(jù)各個(gè)任務(wù)的優(yōu)先順序,動(dòng)態(tài)地切換各個(gè)任務(wù),保證對(duì)即時(shí)性的要求?!磿r(shí)操作系統(tǒng)(RTOS)1.3嵌入式操作系統(tǒng)基本概念
多任務(wù)系統(tǒng)中,內(nèi)核負(fù)責(zé)管理各個(gè)任務(wù),或者說為每個(gè)任務(wù)分配CPU時(shí)間,並且負(fù)責(zé)任務(wù)之間的通信。內(nèi)核提供的基本服務(wù)是任務(wù)切換。使用即時(shí)內(nèi)核可以大大簡(jiǎn)化應(yīng)用系統(tǒng)的設(shè)計(jì),是因?yàn)榧磿r(shí)內(nèi)核允許將應(yīng)用分成若干個(gè)任務(wù),由即時(shí)內(nèi)核來管理它們。內(nèi)核需要消耗一定的系統(tǒng)資源,比如2%~5%的CPU運(yùn)行時(shí)間、RAM和ROM等。內(nèi)核提供必不可少的系統(tǒng)服務(wù),如信號(hào)量、消息佇列、延時(shí)等?!獌?nèi)核1.3嵌入式操作系統(tǒng)基本概念
調(diào)度是內(nèi)核的主要職責(zé)之一。調(diào)度就是決定該輪到哪個(gè)任務(wù)運(yùn)行了。多數(shù)即時(shí)內(nèi)核是基於優(yōu)先順序調(diào)度法的。每個(gè)任務(wù)根據(jù)其重要程式的不同被賦予一定的優(yōu)先順序。基於優(yōu)先順序的調(diào)度法指CPU總是讓處在就緒態(tài)的優(yōu)先順序最高的任務(wù)先運(yùn)行。然而究竟何時(shí)讓高優(yōu)先順序任務(wù)掌握CPU的使用權(quán),有兩種不同的情況,這要看用的是什麼類型的內(nèi)核,是非佔(zhàn)先式的還是佔(zhàn)先式的內(nèi)核?!{(diào)度1.3嵌入式操作系統(tǒng)基本概念
非佔(zhàn)先式內(nèi)核要求每個(gè)任務(wù)自我放棄CPU的所有權(quán)。非佔(zhàn)先式調(diào)度法也稱作合作型多任務(wù),各個(gè)任務(wù)彼此合作共用一個(gè)CPU。非同步事件還是由中斷服務(wù)來處理。中斷服務(wù)可以使一個(gè)高優(yōu)先順序的任務(wù)由掛起狀態(tài)變?yōu)榫途w狀態(tài)。但中斷服務(wù)以後控制權(quán)還是回到原來被中斷了的那個(gè)任務(wù),直到該任務(wù)主動(dòng)放棄CPU的使用權(quán)時(shí),那個(gè)高優(yōu)先順序的任務(wù)才能獲得CPU的使用權(quán)?!莵?zhàn)先式內(nèi)核1.3嵌入式操作系統(tǒng)基本概念
當(dāng)系統(tǒng)回應(yīng)時(shí)間很重要時(shí),要使用佔(zhàn)先式內(nèi)核。因此絕大多數(shù)商業(yè)上銷售的即時(shí)內(nèi)核都是佔(zhàn)先式內(nèi)核。最高優(yōu)先順序的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當(dāng)一個(gè)運(yùn)行著的任務(wù)使一個(gè)比它優(yōu)先順序高的任務(wù)進(jìn)入了就緒狀態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了,或者說被掛起了,那個(gè)高優(yōu)先順序的任務(wù)立刻得到了CPU的控制權(quán)。如果是中斷服務(wù)副程式使一個(gè)高優(yōu)先順序的任務(wù)進(jìn)入就緒態(tài),中斷完成時(shí),中斷了的任務(wù)被掛起,優(yōu)先順序高的那個(gè)任務(wù)開始運(yùn)行?!獊?zhàn)先式內(nèi)核1.3嵌入式操作系統(tǒng)基本概念
任務(wù)的優(yōu)先順序是表示任務(wù)被調(diào)度的優(yōu)先程度。每個(gè)任務(wù)都具有優(yōu)先順序。任務(wù)越重要,賦予的優(yōu)先順序應(yīng)越高,越容易被調(diào)度而進(jìn)入運(yùn)行態(tài)?!蝿?wù)優(yōu)先順序1.3嵌入式操作系統(tǒng)基本概念
中斷是一種硬體機(jī)制,用於通知CPU有個(gè)非同步事件發(fā)生了。中斷一旦被識(shí)別,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳轉(zhuǎn)到專門的副程式,稱為中斷服務(wù)副程式(ISR)。中斷服務(wù)副程式做事件處理,處理完成後,程式回到:1.在前後臺(tái)系統(tǒng)中,程式回到後臺(tái)程式;2.對(duì)非佔(zhàn)先式內(nèi)核而言,程式回到被中斷了的任務(wù);3.對(duì)佔(zhàn)先式內(nèi)核而言,讓進(jìn)入就緒態(tài)的優(yōu)先順序最高的任務(wù)開始運(yùn)行。——中斷前後臺(tái)系統(tǒng)1.3嵌入式操作系統(tǒng)基本概念——中斷ISR任務(wù)ISR非佔(zhàn)先操作系統(tǒng)任務(wù)A任務(wù)B任務(wù)CISR佔(zhàn)先操作系統(tǒng)任務(wù)A任務(wù)B任務(wù)C1.3嵌入式操作系統(tǒng)基本概念
時(shí)鐘節(jié)拍是特定的週期性中斷。這個(gè)中斷可以看作是系統(tǒng)心臟的脈動(dòng)。中斷之間的時(shí)間間隔取決於不同應(yīng)用,一般在10ms到200ms之間。時(shí)鐘的節(jié)拍式中斷使得內(nèi)核可以將任務(wù)延時(shí)若干個(gè)整數(shù)時(shí)鐘節(jié)拍,以及當(dāng)任務(wù)等待事件發(fā)生時(shí),提供等待超時(shí)的依據(jù)。時(shí)鐘節(jié)拍率越快,系統(tǒng)的額外開銷就越大?!獣r(shí)鐘節(jié)拍1.3嵌入式操作系統(tǒng)使用即時(shí)操作系統(tǒng)的必要性
嵌入式即時(shí)操作系統(tǒng)在目前的嵌入式應(yīng)用中用得越來越廣泛,尤其在功能複雜、系統(tǒng)龐大的應(yīng)用中顯得愈來愈重要。在嵌入式應(yīng)用中,只有把CPU嵌入到系統(tǒng)中,同時(shí)又把操作系統(tǒng)嵌入進(jìn)去,才是真正的電腦嵌入式應(yīng)用。使用即時(shí)操作系統(tǒng)主要有以下幾個(gè)因素:嵌入式即時(shí)操作系統(tǒng)提高了系統(tǒng)的可靠性。提高了開發(fā)效率,縮短了開發(fā)週期。嵌入式即時(shí)操作系統(tǒng)充分發(fā)揮了32位CPU的多任務(wù)潛力。
1.3嵌入式操作系統(tǒng)即時(shí)操作系統(tǒng)的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):在嵌入式即時(shí)操作系統(tǒng)環(huán)境下開發(fā)即時(shí)應(yīng)用程式使程式的設(shè)計(jì)和擴(kuò)展變得容易,不需要大的改動(dòng)就可以增加新的功能。通過將應(yīng)用程式分割成若干獨(dú)立的任務(wù)模組,使應(yīng)用程式的設(shè)計(jì)過程大為簡(jiǎn)化;而且對(duì)即時(shí)性要求苛刻的事件都得到了快速、可靠的處理。通過有效的系統(tǒng)服務(wù),嵌入式即時(shí)操作系統(tǒng)使得系統(tǒng)資源得到更好的利用。缺點(diǎn):但是,使用嵌入式即時(shí)操作系統(tǒng)還需要額外的ROM/RAM開銷,2~5%的CPU額外負(fù)荷,以及內(nèi)核的費(fèi)用。uClinux是一個(gè)完全符合GNU/GPL公約的操作系統(tǒng),完全開放代碼。uClinux從Linux
2.0/2.4內(nèi)核派生而來,沿襲了主流Linux的絕大部分特性。它是專門針對(duì)沒有MMU的CPU,並且為嵌入式系統(tǒng)做了許多小型化的工作。適用於沒有虛擬記憶體或記憶體管理單元(MMU)的處理器,例如ARM7TDMI。它通常用於具有很少記憶體或Flash的嵌入式系統(tǒng)。它保留了Linux的大部分優(yōu)點(diǎn):穩(wěn)定、良好的移植性、優(yōu)秀的網(wǎng)路功能、完備的對(duì)各種檔系統(tǒng)的支持、以及標(biāo)準(zhǔn)豐富的API等。1.3嵌入式操作系統(tǒng)常見的嵌入式操作系統(tǒng)——嵌入式Linux1.3嵌入式操作系統(tǒng)常見的嵌入式操作系統(tǒng)
WindowsCE是微軟開發(fā)的一個(gè)開放的、可升級(jí)的32位嵌入式操作系統(tǒng),是基於掌上型電腦類的電子設(shè)備操作,它是精簡(jiǎn)的Windows95。WindowsCE的圖形用戶介面相當(dāng)出色。WinCE具有模組化、結(jié)構(gòu)化和基於Win32應(yīng)用程式介面以及與處理器無(wú)關(guān)等特點(diǎn)。WinCE不僅繼承了傳統(tǒng)的Windows圖形介面,並且在WinCE平臺(tái)上可以使用Windows95/98上的編程工具(如VisualBasic、VisualC++等)、使絕大多數(shù)的應(yīng)用軟體只需簡(jiǎn)單的修改和移植就可以在WindowsCE平臺(tái)上繼續(xù)使用。
——WinCE1.3嵌入式操作系統(tǒng)常見的嵌入式操作系統(tǒng)——VxWorksVxWorks操作系統(tǒng)是美國(guó)公司於1983年設(shè)計(jì)開發(fā)的一種嵌入式即時(shí)操作系統(tǒng)(RTOS),是嵌入式開發(fā)環(huán)境的關(guān)鍵組成部分。良好的持續(xù)發(fā)展能力、高性能的內(nèi)核以及友好的用戶開發(fā)環(huán)境,在嵌入式即時(shí)操作系統(tǒng)領(lǐng)域佔(zhàn)據(jù)一席之地。它以其良好的可靠性和卓越的即時(shí)性被廣泛地應(yīng)用在通信、軍事、航空、航太等高精尖技術(shù)及即時(shí)性要求極高的領(lǐng)域中,如衛(wèi)星通訊、軍事演習(xí)、彈道制導(dǎo)、飛機(jī)導(dǎo)航等,甚至在1997年4月登陸火星表面的火星探測(cè)器上也使用到了VxWorks。1.ARM簡(jiǎn)介2.ARM7TDMI3.ARM的模組、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當(dāng)前程式狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲(chǔ)系統(tǒng)392.1ARM簡(jiǎn)介ARM公司簡(jiǎn)介ARM是AdvancedRISCMachines的縮寫,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的RISC(精簡(jiǎn)指令集)處理器。公司的特點(diǎn)是只設(shè)計(jì)晶片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟體和OEM廠商,並提供服務(wù)。402.1ARM簡(jiǎn)介ARM公司簡(jiǎn)介將技術(shù)授權(quán)給其他晶片廠商形成各具特色的ARM晶片...412.1ARM簡(jiǎn)介RISC結(jié)構(gòu)特性RISC是精簡(jiǎn)指令集電腦的縮寫,其目標(biāo)是設(shè)計(jì)出在高時(shí)鐘頻率下單週期執(zhí)行,簡(jiǎn)單而有效的指令集。ARM內(nèi)核採(cǎi)用RISC體系結(jié)構(gòu),因此具有RISC的結(jié)構(gòu)特點(diǎn):具有大量的通用記憶體;獨(dú)特的裝載/保存(load-store)結(jié)構(gòu);簡(jiǎn)單的尋址模式;統(tǒng)一和固定長(zhǎng)度的指令格式。422.1ARM簡(jiǎn)介
為了使ARM能夠更好地滿足嵌入式應(yīng)用的需要,ARM體系結(jié)構(gòu)還有以下特點(diǎn):每條數(shù)據(jù)處理指令可同時(shí)包含算術(shù)邏輯單元(ALU)的運(yùn)算和移位處理,實(shí)現(xiàn)ALU和移位器的最大利用;使用地址自增和自減的尋址方式優(yōu)化程式迴圈;裝載/保存指令對(duì)數(shù)據(jù)的批量傳輸,實(shí)現(xiàn)最大數(shù)據(jù)吞吐量;大多數(shù)指令的條件執(zhí)行,實(shí)現(xiàn)最快速的代碼執(zhí)行。ARM體系結(jié)構(gòu)432.1ARM簡(jiǎn)介常用ARM處理器系列ARM公司開發(fā)了很多系列的ARM處理器核,目前最新的系列是Cortex,而ARM6核以及更早的系列已經(jīng)很罕見了。當(dāng)前應(yīng)用比較多的ARM處理器核系列有:ARM7ARM9ARM10EXscaleARM11CortexARM9E442.1ARM簡(jiǎn)介ARMCortex系列簡(jiǎn)介
基於ARMv7版本的ARMCortex系列產(chǎn)品由A、R、M三個(gè)系列組成,具體分類延續(xù)了一直以來ARM面向具體應(yīng)用設(shè)計(jì)CPU的思路。ARMCortexA應(yīng)用處理器(ApplicationProcessor
)系列R即時(shí)控制處理(RealTimeControl)系列M微控制器(MicroController)系列452.1ARM簡(jiǎn)介CortexTM-M3處理器簡(jiǎn)介
該處理器是首款基於ARMv7-M架構(gòu)的處理器,採(cǎi)用了純Thumb2指令的執(zhí)行方式,具有極高的運(yùn)算能力和中斷相應(yīng)能力。
Cortex-M3主要應(yīng)用於汽車車身系統(tǒng),工業(yè)控制系統(tǒng)和無(wú)線網(wǎng)路等對(duì)功耗和成本敏感的嵌入式應(yīng)用領(lǐng)域。目前最便宜的基於該內(nèi)核的ARM單片機(jī)售價(jià)為1美元。462.1ARM簡(jiǎn)介CortexTM-R4處理器簡(jiǎn)介
該處理器是首款基於ARMv7架構(gòu)的高級(jí)嵌入式處理器,其主要目標(biāo)為產(chǎn)量巨大的高級(jí)嵌入式應(yīng)用系統(tǒng),如硬碟,噴墨式印表機(jī),以及汽車安全系統(tǒng)等等。CortexTM-R4F處理器簡(jiǎn)介
該處理器在CortexTM-R4處理器的基礎(chǔ)上加入了代碼錯(cuò)誤校正(ECC)技術(shù),浮點(diǎn)運(yùn)算單元(FPU)以及DMA綜合配置的能力,增強(qiáng)了處理器在記憶體保護(hù)單元、緩存、緊密耦合記憶體、DMA訪問以及調(diào)試方面的能力。472.1ARM簡(jiǎn)介CortexTM-A8處理器簡(jiǎn)介
該處理器是ARM公司所開發(fā)的基於ARMv7架構(gòu)的首款應(yīng)用級(jí)處理器,其特色是運(yùn)用了可增加代碼密度和加強(qiáng)性能的技術(shù)、可支持多媒體以及信號(hào)處理能力的NEONTM技術(shù)、以及能夠支持Java和其他文字代碼語(yǔ)言的提前和即時(shí)編譯的Jazelle@RTC技術(shù)。眾多先進(jìn)的技術(shù)使其適用於家電以及電子行業(yè)等各種高端的應(yīng)用領(lǐng)域。482.1ARM簡(jiǎn)介ARM7系列簡(jiǎn)介
該系列包括ARM7TDMI、ARM7TDMI-S、帶有高速緩存處理器宏單元的ARM720T和擴(kuò)充了Jazelle的ARM7EJ-S。該系列處理器提供Thumb16位壓縮指令集和EmbededICE軟體調(diào)試方式,適用於更大規(guī)模的SoC設(shè)計(jì)中。
ARM7系列廣泛應(yīng)用於多媒體和嵌入式設(shè)備,包括Internet設(shè)備、網(wǎng)路和數(shù)據(jù)機(jī)設(shè)備,以及移動(dòng)電話、PDA等無(wú)線設(shè)備。492.1ARM簡(jiǎn)介
該系列包括ARM9TDMI、ARM920T和帶有高速緩存處理器宏單元的ARM940T。除了相容ARM7系列,而且能夠更加靈活的設(shè)計(jì)。
ARM9系列主要應(yīng)用於引擎管理、儀器儀錶、安全系統(tǒng)和機(jī)頂盒等領(lǐng)域。ARM9系列簡(jiǎn)介502.1ARM簡(jiǎn)介
該系列為含有DSP指令集的綜合處理器,包括ARM926EJ-S、帶有高速緩存處理器宏單元的ARM966E-S/ARM946E-S。其內(nèi)核在ARM7處理器內(nèi)核的基礎(chǔ)上使用了Jazelle增強(qiáng)技術(shù),該技術(shù)支持一種新的Java操作狀態(tài),允許在硬體中執(zhí)行Java位元組碼。
ARM9E系列主要應(yīng)用於下一代無(wú)線設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、存儲(chǔ)設(shè)備和網(wǎng)路設(shè)備等領(lǐng)域。ARM9E系列簡(jiǎn)介512.1ARM簡(jiǎn)介ARM10E系列簡(jiǎn)介
該系列包括ARM1020E和ARM1020E處理器核,其核心在於使用向量浮點(diǎn)(VFP)單元VFP10提供高性能的浮點(diǎn)解決方案,從而極大提高了處理器的整型和浮點(diǎn)運(yùn)算性能??梢杂渺兑曨l遊戲機(jī)和高性能印表機(jī)等場(chǎng)合。522.1ARM簡(jiǎn)介Xscale簡(jiǎn)介IntelXscale微控制器則提供全性能、高性價(jià)比、低功耗的解決方案,支持16位Thumb指令並集成數(shù)字信號(hào)處理(DSP)指令。主要應(yīng)用於手提式通訊和消費(fèi)電子類設(shè)備。531.ARM簡(jiǎn)介2.ARM7TDMI3.ARM的模組、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當(dāng)前程式狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲(chǔ)系統(tǒng)54ARM7TDMI-S2.2ARM7TDMI簡(jiǎn)介ARM7TDMI是基於ARM體系結(jié)構(gòu)V4版本的低端ARM核。其彌補(bǔ)了ARM6很難在低於5V電壓下穩(wěn)定工作的不足,還增加了尾碼所對(duì)應(yīng)的功能:支持高密度16位的Thumb指令集;支持片上調(diào)試;支持64位乘法;支持EmbededICE觀察硬體;ARM7TDMI的可綜合(synthesizable)版本(軟核),對(duì)應(yīng)用工程師來說其編程模型與ARM7TDMI一致;
注意:“ARM核”並非晶片,ARM核與其它部件如RAM、ROM、片內(nèi)外設(shè)組合在一起才能構(gòu)成現(xiàn)實(shí)的晶片。552.2ARM7TDMI記憶體的字與半字
從偶數(shù)地址開始的連續(xù)2個(gè)位元組構(gòu)成一個(gè)半字;以能被4整除的地址開始的連續(xù)4個(gè)位元組構(gòu)成一個(gè)字;
ARM指令的長(zhǎng)度剛好是一個(gè)字,Thumb指令的長(zhǎng)度剛好是一個(gè)半字。562.2ARM7TDMI
如果一個(gè)數(shù)據(jù)是從偶地址開始的連續(xù)存儲(chǔ),那麼它就是半字對(duì)齊,否則就是非半字對(duì)齊;如果一個(gè)數(shù)據(jù)是以能被4整除的地址開始的連續(xù)存儲(chǔ),那麼它就是字對(duì)齊,否則就是非字對(duì)齊。方式半字對(duì)齊字對(duì)齊地址……0x40020x4004…………0x40040x4008……特徵Bit0=0其他位為任意值Bit1=0,Bit0=0其他位為任意值記憶體的存儲(chǔ)方式572.2ARM7TDMI三級(jí)流水線ARM處理器使用流水線來增加處理器指令流的速度,這樣可使幾個(gè)操作同時(shí)進(jìn)行,並使處理和記憶體系統(tǒng)連續(xù)操作,能提供0.9MIPS/MHz的指令執(zhí)行速度。ARM7TDMI的流水線分3級(jí),分別為:取指解碼執(zhí)行取指解碼執(zhí)行處理指令並將結(jié)果寫回寄存器識(shí)別將要被執(zhí)行的指令從寄存器裝載一條指令
正常操作過程中,在執(zhí)行一條指令的同時(shí)對(duì)下一條(第二條)指令進(jìn)行解碼,並將第三條指令從記憶體中取出。
在ARM狀態(tài)下,流水線上各指令的地址為:
在Thumb狀態(tài)下,流水線上各指令的地址為:PCPC-4PC-8PCPC-2PC-4582.2ARM7TDMI三級(jí)流水線結(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個(gè)週期,PC指向指令1,此時(shí)指令1進(jìn)入三級(jí)流水線的取指階段。1
在第2個(gè)週期,PC指向指令2,此時(shí)指令1進(jìn)入三級(jí)流水線的解碼階段,同時(shí)取出指令2。2
在第3個(gè)週期,PC指向指令3,此時(shí)指令1進(jìn)入三級(jí)流水線的執(zhí)行階段,指令2進(jìn)入解碼階段,取出指令3。3
在第4個(gè)週期,指令1執(zhí)行完成,指令2和指令3流水線推進(jìn)一級(jí),同時(shí)開始指令4的取指處理。4處理器執(zhí)行一條指令的三個(gè)階段59
執(zhí)行ADDPC,PC,#4指令後,PC的值為多少?2.2ARM7TDMI思考題ADDPC,PC,#4………………0x40000x40040x40080x400C地址指令PC取指解碼執(zhí)行PCPC-4PC-8ARM7的3級(jí)流水線ADD
程式計(jì)數(shù)器R15(PC)總是指向“正在取指”的指令,而不是指向“正在執(zhí)行”的指令或“正在解碼”的指令。
一般來說,人們習(xí)慣性約定將“正在執(zhí)行”的指令作為參考點(diǎn),則:PC值=當(dāng)前程式執(zhí)行位置+8
注:ARM狀態(tài)時(shí),每條指令為4位元組長(zhǎng)。PC指向0x4000地址,取指ADD指令。PC指向0x4004地址,解碼ADD指令。PC指向0x4008地址,執(zhí)行ADD指令,所以指令執(zhí)行的結(jié)果為:PC=PC+4=0x4008+4=0x400C?!?01.ARM簡(jiǎn)介2.ARM7TDMI3.ARM的模組、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當(dāng)前程式狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲(chǔ)系統(tǒng)61CPU掃描鏈1掃描鏈1數(shù)據(jù)總線數(shù)據(jù)匯流排掃描鏈1掃描鏈2協(xié)處理器信號(hào)介面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é)處理介面信號(hào)EmbedICE硬體仿真功能模組片上調(diào)試系統(tǒng)讀寫匯流排622.3ARM內(nèi)核框圖地址寄存器寄存器組31*32位寄存器(6個(gè)狀態(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é)處理器介面時(shí)鐘中斷匯流排控制仲裁調(diào)試641.ARM簡(jiǎn)介2.ARM7TDMI3.ARM的模組、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當(dāng)前程式狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲(chǔ)系統(tǒng)652.4ARM處理器狀態(tài)處理器狀態(tài)ARM7TDMI處理器內(nèi)核包含2套指令系統(tǒng),分別為ARM指令集和Thumb指令,並且各自對(duì)應(yīng)1種處理器的狀態(tài):ARM狀態(tài):32位,處理器執(zhí)行字方式的ARM指令,處理器默認(rèn)為此狀態(tài);Thumb狀態(tài):16位,處理器執(zhí)行半字方式的Thumb指令。注意:兩個(gè)狀態(tài)之間的切換並不影響處理器模式或寄存器內(nèi)容。662.4ARM處理器狀態(tài)狀態(tài)切換的一個(gè)例子地址最低位為0,表示切換到ARM狀態(tài)
使用BX指令將ARM內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進(jìn)行切換。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)地址標(biāo)號(hào)執(zhí)行完BX指令,處理器切換到Thumb狀態(tài),開始執(zhí)行Thumb指令程式代碼指令集關(guān)係
從ARM狀態(tài)切換到Thumb狀態(tài)的程式代碼如下:
從Thumb狀態(tài)切換到ARM狀態(tài)的程式代碼如下:執(zhí)行完BX指令,處理器切換到ARM狀態(tài),開始執(zhí)行ARM指令671.ARM簡(jiǎn)介2.ARM7TDMI3.ARM的模組、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當(dāng)前程式狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲(chǔ)系統(tǒng)682.5ARM處理器模式簡(jiǎn)介ARM體系結(jié)構(gòu)支持7種處理器模式,分別為:用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式。這樣的好處是可以更好的支持操作系統(tǒng)並提高工作效率。ARM7TDMI完全支持這七種模式。69
除用戶模式外,其他模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬體設(shè)計(jì)上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。處理器模式說明備註
用戶(usr)正常程式運(yùn)行的工作模式不能直接從用戶模式切換到其他模式特權(quán)模式系統(tǒng)(sys)用於支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其他模式等特權(quán)異常模式快中斷(fiq)快速中斷請(qǐng)求處理只有在FIQ異?;貞?yīng)時(shí),才進(jìn)入此模式中斷(irq)中斷請(qǐng)求處理只有在IRQ異?;貞?yīng)時(shí),才進(jìn)入此模式管理(svc)供操作系統(tǒng)使用的一種保護(hù)模式只有在系統(tǒng)複位和軟體中斷回應(yīng)時(shí),才進(jìn)入此模式中止(abt)用於虛擬記憶體和/或記憶體保護(hù)在ARM7內(nèi)核中沒有多大用處未定義(und)支持軟體仿真的硬體協(xié)處理器只有在未定義指令異常回應(yīng)時(shí),才進(jìn)入此模式處理器模式
這兩種模式都不能由異常進(jìn)入,想要進(jìn)入必須修改CPSR,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個(gè)模式訪問一些受控的資源。
這五種模式稱為異常模式。它們除了可以通過程式切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的模式。每種異常模式都有一些獨(dú)立的寄存器,以避免異常退出時(shí)用戶模式的狀態(tài)不可靠。何時(shí)進(jìn)入異常模式,具體規(guī)定如下:處理器複位之後進(jìn)入管理模式,操作系統(tǒng)內(nèi)核通常處?kù)豆芾砟J剑划?dāng)處理器訪問記憶體失敗時(shí),進(jìn)入數(shù)據(jù)訪問中止模式;當(dāng)處理器遇到?jīng)]有定義或不支持的指令時(shí),進(jìn)入未定義模式;中斷模式與快速中斷模式分別對(duì)ARM處理器2種不同級(jí)別的中斷作出回應(yīng)。701.ARM簡(jiǎn)介2.ARM7TDMI3.ARM的模組、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當(dāng)前程式狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲(chǔ)系統(tǒng)712.6ARM內(nèi)部寄存器簡(jiǎn)介
在ARM處理器內(nèi)部共有37個(gè)用戶可訪問的寄存器,分別為31個(gè)通用32位寄存器和6個(gè)狀態(tài)寄存器。ARM處理器共有7種不同的處理器模式,每種模式都有一組相應(yīng)的寄存器組,最多可以18個(gè)活動(dòng)的寄存器。72ARM狀態(tài)各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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個(gè)寄存器,分成兩大類:31個(gè)通用32位寄存器;6個(gè)狀態(tài)寄存器。73ARM狀態(tài)各模式下可以訪問的寄存器寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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未分組的通用寄存器寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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為未分組的通用寄存器,它們?cè)谌魏翁幚砥髂J蕉紝?duì)應(yīng)於相同的32位物理寄存器。第一類分組的通用寄存器寄存器R8~R12有兩個(gè)分組的物理寄存器。一個(gè)用於除FIQ模式之外的所有寄存器模式,另一個(gè)用於FIQ模式。在發(fā)生FIQ中斷後,處理器不必為保護(hù)寄存器而浪費(fèi)時(shí)間,從而加速了FIQ的處理速度。第二類分組的通用寄存器寄存器R13、R14分別有6個(gè)分組的物理寄存器。1個(gè)用於用戶和系統(tǒng)模式,其餘5個(gè)分別用於5種異常模式。寄存器R13通常作為堆疊指針(SP),用於保存待使用的寄存器的內(nèi)容。寄存器R14稱為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個(gè)特殊功能:當(dāng)使用BL指令調(diào)用副程式時(shí),返回地址將自動(dòng)存入R14中;當(dāng)發(fā)生異常時(shí),將R14對(duì)應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個(gè)小的固定偏移量)。程式計(jì)數(shù)器寄存器R15稱為程式計(jì)數(shù)器(PC),它指向正在“取指”的指令。狀態(tài)寄存器寄存器CPSR為當(dāng)前程式狀態(tài)寄存器,在異常模式中,另外一個(gè)寄存器“程式狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進(jìn)入異常時(shí)它保存CPSR的當(dāng)前值,異常退出時(shí)可通過它恢復(fù)CPSR。752.6ARM內(nèi)部寄存器在Thumb狀態(tài)各模式下實(shí)際訪問的寄存器Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程式員可以直接訪問的寄存器為:8個(gè)通用寄存器R0~R7;程式計(jì)數(shù)器(PC);堆疊指針(SP);鏈接寄存器(LR);當(dāng)前程式狀態(tài)寄存器(CPSR)。76在Thumb狀態(tài)各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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未分組的通用寄存器第二類分組的通用寄存器在組合語(yǔ)言中寄存器R0~R7為通用寄存器,對(duì)於任何處理器模式,它們中的每一個(gè)都對(duì)應(yīng)於相同的32為物理寄存器。堆疊指針SP對(duì)應(yīng)ARM狀態(tài)的寄存器R13。每個(gè)異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆疊。注意:在發(fā)生異常時(shí),處理器自動(dòng)進(jìn)入ARM狀態(tài)。鏈接寄存器LR對(duì)應(yīng)ARM狀態(tài)寄存器R14。注意:在發(fā)生異常時(shí),處理器自動(dòng)進(jìn)入ARM狀態(tài)。77ARM狀態(tài)Thumb寄存器在ARM狀態(tài)寄存器上的映射R0R1R2R3R4R5R6R7R8R9R10R11R12堆疊指針(R13)連接寄存器(R14)程式計(jì)數(shù)器(R15)CPSRSPSRR0R1R2R3R4R5R6R7堆疊指針(SP)連接寄存器(LR)程式計(jì)數(shù)器(PC)CPSRThumb狀態(tài)Thumb狀態(tài)R0~R7與ARM狀態(tài)R0~R7相同;1Thumb狀態(tài)CPSR(無(wú)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指令可以對(duì)其訪問,可以用於數(shù)據(jù)的快速暫存。78ARMThumbARMResetBXBXARM中斷服務(wù)程式正常程式事件ARMARMISR1ISR2ISRn…狀態(tài)切換過程異常發(fā)生進(jìn)入退出
系統(tǒng)複位,自動(dòng)切換到ARM狀態(tài)。1
通過BX和BLX指令改變當(dāng)前處理器模式,使之從ARM狀態(tài)切換到Thumb狀態(tài)。2
在Thumb狀態(tài)下,正常程式執(zhí)行時(shí)產(chǎn)生中斷異常。3
處理器進(jìn)入中斷異常,自動(dòng)的將模式切換到ARM狀態(tài)。4
異常處理完畢,返回正常程式,此時(shí)處理器自動(dòng)的將模式切換到Thumb狀態(tài)。5
再次通過BX和BLX指令改變當(dāng)前處理器模式,使之從Thumb狀態(tài)切換到ARM狀態(tài)。6
程式在正常運(yùn)行的過程中,複位事件產(chǎn)生,導(dǎo)致系統(tǒng)複位。791.ARM簡(jiǎn)介2.ARM7TDMI3.ARM的模組、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當(dāng)前程式狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲(chǔ)系統(tǒng)802.7當(dāng)前程式狀態(tài)寄存器簡(jiǎn)介ARM內(nèi)核包含1個(gè)CPSR和5個(gè)僅供異常處理程式使用的SPSR。CPSR反映當(dāng)前處理器的狀態(tài),其包含:4個(gè)條件代碼標(biāo)誌(負(fù)標(biāo)誌N、零標(biāo)誌Z、進(jìn)位標(biāo)誌C和溢出標(biāo)誌V);2個(gè)中斷禁止位(IRQ禁止與FIQ禁止);5個(gè)對(duì)當(dāng)前處理器模式進(jìn)行編碼的位(M[4:0]);1個(gè)用於指示當(dāng)前執(zhí)行指令的位(ARM指令還是Thumb指令)。812.7當(dāng)前程式狀態(tài)寄存器程式狀態(tài)寄存器的格式NZCV——IM0M1M2M3M4TF—...313029282726876543210條件代碼標(biāo)誌保留控制位溢出標(biāo)誌進(jìn)位或借位擴(kuò)展零負(fù)或小於IRQ禁止FIQ禁止?fàn)顟B(tài)位模式位NZCVIM0M1M2M3M4TF822.7當(dāng)前程式狀態(tài)寄存器條件代碼標(biāo)誌各標(biāo)誌位的含義如下:負(fù)標(biāo)誌N:運(yùn)算結(jié)果的第31位值,記錄標(biāo)誌設(shè)置操作的結(jié)果;零標(biāo)誌Z:如果標(biāo)誌設(shè)置的操作為0,則置位;進(jìn)位標(biāo)誌C:記錄無(wú)符號(hào)加法溢出,減法無(wú)借位,迴圈移位;溢出標(biāo)誌V:記錄標(biāo)誌設(shè)置操作的有符號(hào)溢出。83
警告:絕對(duì)不要強(qiáng)制改變CPSR寄存器中的控制位T。如果這樣做,處理器將進(jìn)入一個(gè)無(wú)法預(yù)測(cè)的狀態(tài)。2.7當(dāng)前程式狀態(tài)寄存器控制位1、中斷禁止控制位I和F;2、處理器狀態(tài)位T;3、處理器模式位M0~M4。當(dāng)控制位I置位時(shí),IRQ中斷被禁止;當(dāng)控制位F置位時(shí),F(xiàn)IQ中斷被禁止。當(dāng)控制位T置位時(shí),處理器正在Thumb狀態(tài)下運(yùn)行;當(dāng)控制位T清零時(shí),處理器正在ARM狀態(tài)下運(yùn)行。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]中,處理器將進(jìn)入一個(gè)無(wú)法恢復(fù)的模式。842.7當(dāng)前程式狀態(tài)寄存器保留位CPSR中的保留位被保留將來使用。當(dāng)改變CPSR標(biāo)誌和控制位時(shí),請(qǐng)確認(rèn)沒有改變這些保留位。另外,請(qǐng)確保您的程式不依賴於包含特定值的保留位,因?yàn)閷淼奶幚砥骺赡軙?huì)將這些位設(shè)置為1或者0。851.ARM簡(jiǎn)介2.ARM7TDMI3.ARM的模組、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式ARM7體系結(jié)構(gòu)6.ARM內(nèi)部寄存器7.當(dāng)前程式狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲(chǔ)系統(tǒng)862.8ARM體系的異常異常簡(jiǎn)介
只要正常的程式流被暫時(shí)中止,處理器就進(jìn)入異常模式。例如在用戶模式下執(zhí)行程式時(shí),當(dāng)外設(shè)向處理器內(nèi)核發(fā)出中斷請(qǐng)求導(dǎo)致內(nèi)核從用戶模式切換到異常中斷模式。如果同時(shí)發(fā)生兩個(gè)或更多異常,那麼將按照固定的順序來處理異常。87異常入口/出口匯總
下表所示為異常返回地址值以及退出異常處理程式所推薦使用的指令。異?;蛉肟诜祷刂噶罘祷氐刂稴WIMOVSPC,R14_svcR14未定義的指令MOVSPC,R14_undR14預(yù)取中止SUBSPC,R14_abt,#4R14-4快速中斷SUBSPC,R14_fiq,#4R14-4中斷SUBSPC,R14_irq,#4R14-4數(shù)據(jù)中止SUBSPC,R14_abt,#8R14-8複位無(wú)-
注意:“MOVSPC,R14_svc”是指在管理模式執(zhí)行MOVSPC,R14指令,同樣類似的指令還有“MOVSPC,R14_und”、“SUBSPC,R14_abt,#4”等。882.8ARM體系的異常異常向量表地址異常進(jìn)入時(shí)的模式進(jìn)入時(shí)I的狀態(tài)進(jìn)入時(shí)F的狀態(tài)0x00000000複位管理禁止禁止0x00000004未定義指令未定義IF0x00000008軟體中斷異常管理禁止F0x0000000C中止(預(yù)取)中止IF0x00000010中止(數(shù)據(jù))中止IF0x00000014保留保留--0x00000018IRQ中斷禁止F0x0000001CFIQ快速中斷禁止禁止注:表中的I和F表示不對(duì)該位有影響,保留原來的值。892.8ARM體系的異常異常優(yōu)先順序
當(dāng)多個(gè)異常同時(shí)發(fā)生時(shí),一個(gè)固定的優(yōu)先順序決定系統(tǒng)處理它們的順序。優(yōu)先順序異常1複位2數(shù)據(jù)中止3FIQ4IRQ5預(yù)取指中止6未定義指令中止6軟體中斷異常優(yōu)先級(jí)由高到低902.8ARM體系的異常異常的進(jìn)入當(dāng)一個(gè)異常導(dǎo)致模式切換時(shí),內(nèi)核自動(dòng)的做如下處理:將異常處理程式的返回地址(加固定的偏移量)保存到相應(yīng)異常模式下的LR;將CPSR的當(dāng)前值保存到相應(yīng)異常模式下的SPSR;設(shè)置CPSR為相應(yīng)的異常模式;設(shè)置PC為相應(yīng)異常處理程式的中斷入口向量地址,跳轉(zhuǎn)到相應(yīng)的異常中斷處理程式執(zhí)行;用戶模式SPSR異常模式CPSRR15(PC)R14(LR)R0~R13-BackAddrJumpAddrUserModeExceptionMode程式代碼正常運(yùn)行在用戶模式下。912.8ARM體系的異常異常的進(jìn)入當(dāng)一個(gè)異常導(dǎo)致模式切換時(shí),內(nèi)核自動(dòng)的做如下處理:將異常處理程式的返回地址(加固定的偏移量)保存到相應(yīng)異常模式下的LR;將CPSR的當(dāng)前值保存到相應(yīng)異常模式下的SPSR;設(shè)置CPSR為相應(yīng)的異常模式;設(shè)置PC為相應(yīng)異常處理程式的中斷入口向量地址,跳轉(zhuǎn)到相應(yīng)的異常中斷處理程式執(zhí)行;922.8ARM體系的異常異常的退出
當(dāng)異常處理程式結(jié)束時(shí),異常處理程式必須:返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即就是說將LR中的值減去偏移量後移入PC;將SPSR的值複製回CPSR;SPSR異常模式用戶模式CPSRR15(PC)R14(LR)R0~R13-BackAddrCurrentAddrUserModeExceptionModeBackAddr-Off932.8ARM體系的異常異常的退出
當(dāng)異常處理程式結(jié)束時(shí),異常處理程式必須:返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即就是說將LR中的值減去偏移量後移入PC;將SPSR的值複製回CPSR;清零在入口處置位的中斷禁止標(biāo)誌。942.8ARM體系的異常複位異常
當(dāng)nRESET信號(hào)被拉低時(shí),ARM處理器放棄正在執(zhí)行的指令,等到nRESET信號(hào)再次變高時(shí),處理器執(zhí)行一下操作:強(qiáng)制M[4:0]變?yōu)閎10011,系統(tǒng)進(jìn)入管理模式;將CPSR中的標(biāo)誌位I和F置位,IRQ與FIQ中斷被禁止;將CPSR中的標(biāo)誌位T清零,處理器處?kù)禔RM狀態(tài);強(qiáng)制PC從地址0x00開始對(duì)下一條指令進(jìn)行取指;返回到ARM狀態(tài)並恢復(fù)執(zhí)行。952.8ARM體系的異常中斷請(qǐng)求異常
只有當(dāng)CPSR中相應(yīng)的中斷遮罩位被清除時(shí),才可能發(fā)生IRQ異常,中斷請(qǐng)求(IRQ)異常由一個(gè)nIRQ輸入端的低電平所產(chǎn)生的正常中斷。注:中斷異常產(chǎn)生時(shí),中斷異常模式下的R14保存的是PC的值。取指解碼執(zhí)行取指解碼執(zhí)行取指解碼執(zhí)行週期4週期5週期1週期2週期3PC-8指令1指令2指令3PC-4PC中斷發(fā)生週期指令1的執(zhí)行不會(huì)中斷;異常程式結(jié)束時(shí)返回到指令2;進(jìn)入中斷服務(wù)程式時(shí),指令3地址被保存在R14中。96
程式運(yùn)行在用戶模式下,當(dāng)一個(gè)IRQ異常中斷發(fā)生時(shí),內(nèi)核切換到“中斷模式”,並自動(dòng)的做如下處理:2.8ARM體系的異常進(jìn)入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)生,進(jìn)入ARM狀態(tài),設(shè)置為IRQ模式。3
設(shè)置IRQ模式下的PC為IRQ異常處理程式的中斷入口向量地址0x00000018。4
將IRQ中斷異常模式的棧頂指針保存到R13_irq中,之後軟體處理程式調(diào)用中斷服務(wù)程式為中斷源服務(wù)。597
從R13_irq中獲取IRQ中斷異常模式的棧頂指針。12.8ARM體系的異常退出IRQ異常模式R0~R12R13_usrR14_usrR15CPSR-R13_irqR14_irqSPSR_irqIRQ模式USR模式恢復(fù)CPSR2R14減4後為返回地址3ISR代碼將寄存器出棧1
將SPSR_irq中的內(nèi)容複製到CPSR。2
由於流水線的特性,將R14_irq指向的地址減去一個(gè)偏移量後存入R15(PC),實(shí)現(xiàn)指令為:SUBSPC,R14_irq,#4
3
中斷服務(wù)程式執(zhí)行完畢後,系統(tǒng)將通過以下幾步軟體操作返回用戶模式:982.8ARM體系的異??焖僦袛嗾?qǐng)求異常
快速中斷請(qǐng)求(FIQ)適用於對(duì)一個(gè)突發(fā)事件的快速回應(yīng),這得益於在ARM狀態(tài)中,快中斷模式有8個(gè)專用的寄存器可用來滿足寄存器保護(hù)的需要(這可以加速上下文切換的速度)。不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài),F(xiàn)IQ處理程式都會(huì)通過執(zhí)行下麵的指令從中斷返回:SUBSPC,R14_fiq,#4
在一個(gè)特權(quán)模式中,可以通過置位CPSR中的F位來禁止FIQ異常。99系統(tǒng)模式FIQ模式程序寄存器組FIQ中斷的例子“?”表示該位無(wú)關(guān)SPSR_fiqPCCPSRSPSRMODTFI...NZCVSYS100...????R8~R12R8_fiq~R12_fiqLRLR_sysLR_fiqR0~R7SP_sysSP_fiqThumbThumb指令1指令2指令3BX指令BX指令A(yù)RMARMSYS100.????FIQ011...????BackAddrJumpAddrJump10SYS100...????JumpBackAddr-4Thumb不是一個(gè)完整的體系結(jié)構(gòu),不能指望處理器只執(zhí)行Thumb指令而不支持ARM指令集。因此,Thumb指令只需要支持通用功能,必要時(shí)可以借助於完善的ARM指令集,比如,所有異常自動(dòng)進(jìn)入ARM狀態(tài)。
在系統(tǒng)模式下運(yùn)行用戶程式,當(dāng)前處理器處?kù)禩humb狀態(tài),執(zhí)行Thumb指令代碼,同時(shí)處理器還允許IRQ和FIQ中斷。
指令1的在執(zhí)行過程產(chǎn)生了FIQ中斷。
注:完成指令1的執(zhí)行後才回應(yīng)中斷。FIQ中斷相應(yīng)過程中,硬體自動(dòng)執(zhí)行如下動(dòng)作:將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器置為F和I(禁止FIQ和IRQ中斷);清零T位(進(jìn)入ARM狀態(tài));設(shè)置MOD位,切換處理器模式至FIQ模式。將下一條的地址存入FIQ模式的LR寄存器,即指令3的地址。將跳轉(zhuǎn)地址存入PC,即FIQ中斷服務(wù)函數(shù)的入口地址,實(shí)現(xiàn)跳轉(zhuǎn)。FIQ中斷服務(wù)程式在ARM狀態(tài)下執(zhí)行現(xiàn)場(chǎng)保護(hù)等操作。FIQ中斷服務(wù)程式使用BX指令,將處理器從ARM狀態(tài)切換到Thumb狀態(tài),通過置位CPSR的T位實(shí)現(xiàn)。FIQ中斷服務(wù)程式開始執(zhí)行Thumb指令。FIQ中斷服務(wù)程式使用BX指令,將處理器從Thumb狀態(tài)切換到ARM狀態(tài),通過清除CPSR的T位實(shí)現(xiàn)。FIQ中斷服務(wù)程式在ARM狀態(tài)下執(zhí)行恢復(fù)中斷現(xiàn)場(chǎng)等操作。FIQ中斷異常處理結(jié)束後,異常處理程式完成以下動(dòng)作:將SPSR寄存器的值複製回CPSR寄存器;將LR寄存的值減去一個(gè)常量(FIQ異常為4)後複製到PC寄存器,跳轉(zhuǎn)到被中斷的用戶程式(指令2的地址)。1002.8ARM體系的異常未定義的指令異常
未定義指令異常是內(nèi)部異常中斷,當(dāng)ARM處理器遇到一條自己和系統(tǒng)內(nèi)部任何協(xié)處理器都無(wú)法執(zhí)行的指令時(shí),就會(huì)發(fā)生未定義指令異常,從而進(jìn)入中斷處理程式,同時(shí)軟體可使用這一機(jī)制通過仿真未定義的協(xié)處理器指令來擴(kuò)展ARM指令集。在仿真失敗的指令後,捕獲處理器執(zhí)行下麵的指令:MOVSPC,R14_und1012.8ARM體系的異常中止異常
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 構(gòu)建高情商的職場(chǎng)溝通方式
- 環(huán)境因素對(duì)結(jié)構(gòu)動(dòng)力學(xué)的長(zhǎng)期影響分析
- 2024-2025學(xué)年高中生物 第三章 遺傳的分子基礎(chǔ) 第四節(jié) 遺傳信息的表達(dá)和蛋白質(zhì)的合成說課稿3 浙科版必修2
- 2023二年級(jí)數(shù)學(xué)上冊(cè) 2 100以內(nèi)的加法和減法(二)1加法第3課時(shí) 進(jìn)位加說課稿 新人教版
- 七年級(jí)地理下冊(cè) 第十章 極地地區(qū)說課稿1 (新版)新人教版
- 2023六年級(jí)語(yǔ)文下冊(cè) 第六單元 難忘小學(xué)生活-中期交流與指導(dǎo)配套說課稿 新人教版
- 2024-2025學(xué)年新教材高中化學(xué) 第4章 化學(xué)反應(yīng)與電能 第1節(jié) 第2課時(shí) 化學(xué)電源說課稿 新人教版選擇性必修第一冊(cè)
- 生態(tài)農(nóng)業(yè)與現(xiàn)代科技結(jié)合的商業(yè)模式創(chuàng)新
- 現(xiàn)代企業(yè)管理中的危機(jī)預(yù)警機(jī)制
- 校園網(wǎng)絡(luò)的智能化改造及網(wǎng)絡(luò)安全對(duì)策
- 2025大連機(jī)場(chǎng)招聘109人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025-2030年中國(guó)電動(dòng)高爾夫球車市場(chǎng)運(yùn)行狀況及未來發(fā)展趨勢(shì)分析報(bào)告
- 物流中心原材料入庫(kù)流程
- 河南省濮陽(yáng)市2024-2025學(xué)年高一上學(xué)期1月期末考試語(yǔ)文試題(含答案)
- 長(zhǎng)沙市2025屆中考生物押題試卷含解析
- 2024年08月北京中信銀行北京分行社會(huì)招考(826)筆試歷年參考題庫(kù)附帶答案詳解
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及答案解析
- 文藝美學(xué)課件
- 中藥炮制學(xué)教材
- 常見腫瘤AJCC分期手冊(cè)第八版(中文版)
- 電氣第一種第二種工作票講解pptx課件
評(píng)論
0/150
提交評(píng)論