ARMCortexM0嵌入式微處理器中斷控制系統(tǒng)研究_第1頁
ARMCortexM0嵌入式微處理器中斷控制系統(tǒng)研究_第2頁
ARMCortexM0嵌入式微處理器中斷控制系統(tǒng)研究_第3頁
ARMCortexM0嵌入式微處理器中斷控制系統(tǒng)研究_第4頁
ARMCortexM0嵌入式微處理器中斷控制系統(tǒng)研究_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。ARMCortexM0嵌入式微處理器中斷控制系統(tǒng)研究平頂山工學(xué)院畢 業(yè) 設(shè) 計 論 文題 目:ARM Cortex-M0 嵌入式微處理器中斷控制系統(tǒng)研究學(xué) 院: 電氣與信息工程學(xué)院 專 業(yè): 自動化 摘 要本文介紹了ARM Cortex-M0嵌入式微處理器中斷控制系統(tǒng)的設(shè)計。Cortex-M0是ARM公司開發(fā)的一款提供超低功耗、低成本微處理器,采用獨(dú)特的中斷控制系統(tǒng),能夠有效加速中斷響應(yīng)過程。通過對M0處理器的中斷控制系統(tǒng)研究,可以更深入的了解微處理器架構(gòu)以及中斷控制系統(tǒng)設(shè)計。本文首先簡述了嵌入式系統(tǒng)的

2、結(jié)構(gòu)、現(xiàn)狀以及發(fā)展趨勢,然后解釋了中斷和中斷嵌套優(yōu)先級的概念,重點(diǎn)介紹了ARM Cortex-M0的結(jié)構(gòu)特點(diǎn),總結(jié)了M0異常和中斷的特點(diǎn),并對M0的中斷優(yōu)先級、嵌套向量中斷控制器(NVIC)和ARM Cortex微控制器軟件接口標(biāo)準(zhǔn)(CMSIS)作說明,最后在ALTERA DE2-115上用按鍵邊沿觸發(fā)中斷,通過觀察LED的閃爍狀態(tài)來驗(yàn)證編寫的中斷控制程序。關(guān)鍵詞:ARM Cortex-M0,中斷,NVIC3IABSTRACTThis article describes the ARM Cortex-M0 embedded microprocessor interrupt control sy

3、stem design. ARM Cortex-M0 is the development of a company to provide ultra-low-power, low-cost microprocessors, using a unique interrupt control system that can effectively accelerate the process interrupt response. By M0 processor's interrupt control system can be more in-depth understanding o

4、f microprocessor architecture and interrupt control system design.This paper outlines the structure of the embedded system, status quo and development trends, then explained the priority of interrupts and interrupt nesting concept, focusing on the ARM Cortex-M0 structural characteristics, summarized

5、 M0 exception and interrupt characteristics, and the interrupt priority for M0, nested Vectored Interrupt controller (NVIC) and the ARM Cortex microcontroller Software Interface Standard (CMSIS) for illustration, the last in ALTERA DE2-115 with the keypad on edge-triggered interrupts, by observing t

6、he status LED flashing to verify that implements interrupt control.Keywords: ARM Cortex-M0, interrupt, NVICII目 錄摘 要2ABSTRACT3目 錄III1 緒論11.1 研究背景11.2 研究內(nèi)容11.3 研究成果11.4 論文結(jié)構(gòu)22 嵌入式系統(tǒng)32.1 嵌入式系統(tǒng)簡介32.2 嵌入式系統(tǒng)的組成與分類42.3 常見嵌入式處理器的體系結(jié)構(gòu)52.4 嵌入式處理器的發(fā)展趨勢63 中斷83.1 中斷的定義83.2 中斷源93.3 中斷分類93.4 中斷應(yīng)具有的功能103.5 中斷嵌套與優(yōu)先級

7、103.5.1 中斷優(yōu)先級103.5.2 中斷嵌套113.6 中斷控制方式的優(yōu)點(diǎn)124 ARM Cortex-M0的中斷134.1 ARM Cortex-M0簡介134.2 ARM Cortex-M0總線架構(gòu)134.3 異常處理模型144.3.1 異常狀態(tài)144.3.2 異常類型144.3.3 異常處理154.3.4 異常向量表154.3.5 異常優(yōu)先級164.3.6 異常處理的進(jìn)入與返回174.3.7 Cortex-M0異常處理機(jī)制204.4 嵌套向量中斷控制器224.4.1 異常模式和系統(tǒng)中斷映射234.4.2 操作描述254.4.3 Cortex-M0中斷的特點(diǎn)274.5 CMSIS軟件

8、接口標(biāo)準(zhǔn)284.5.1 CMSIS標(biāo)準(zhǔn)的軟件架構(gòu)294.5.2 CMSIS規(guī)范305 實(shí)驗(yàn)335.1 控制要求335.2 實(shí)驗(yàn)準(zhǔn)備335.2.1 Keil uVision4簡介335.2.2 ALTERA DE2-115簡介335.3 程序流程圖355.4 程序代碼及分析355.5 實(shí)驗(yàn)結(jié)果36結(jié) 論37參考文獻(xiàn)38致 謝39附 錄40IV1 緒論1.1 研究背景隨著半導(dǎo)體行業(yè)進(jìn)入深亞微米乃至納米時代,在單一集成電路芯片上就可以實(shí)現(xiàn)一個復(fù)雜的電路系統(tǒng),即SoC系統(tǒng)。隨著人們對消費(fèi)電子產(chǎn)品的多功能、智能化的要求越來越高,SoC芯片被大量使用,而微處理器是SoC系統(tǒng)的核心??v觀嵌入式微處理器的發(fā)展

9、歷史,從高端微控制器領(lǐng)域到低端微控制器領(lǐng)域,人們對低成本、低功耗、高性能的追求似乎永無止境。ARM 公司推出了低成本、低功耗、高性能的Cortex-M系列產(chǎn)品,其中于2009年初推出了Cortex-M0 處理器,這是市場上現(xiàn)有的除Cortex-M0+ 外尺寸最小、能耗最低、最節(jié)能的ARM 處理器。該處理器能耗非常低、門數(shù)量少、代碼占用空間小,能以8位器的價位獲得32位處理器的性能,將逐步取代現(xiàn)有市場中的8051微控制器。1.2 研究內(nèi)容ARM Cortex-M0處理器采用獨(dú)特的中斷控制系統(tǒng),能夠有效加速中斷響應(yīng)過程。通過對M0處理器的中斷控制系統(tǒng)的研究,了解主流的嵌入式微處理器及其主流架構(gòu),掌

10、握基本的微處理器中斷處理流程,了解M0中斷控制系統(tǒng),并針對M0微處理器編寫實(shí)例程序,使用keil軟件仿真器仿真驗(yàn)證M0的中斷控制過程。本次設(shè)計需要有單片機(jī)原理和C語言基礎(chǔ),自行查閱Cortex-M0的有關(guān)資料,了解M0中斷控制系統(tǒng),在此理論基礎(chǔ)上,用M0的中斷控制系統(tǒng)去控制LED的閃爍狀態(tài),具體來說就是:當(dāng)按下電源開關(guān)后,LED開始慢閃,當(dāng)按下按鍵后,LED進(jìn)入快閃狀態(tài),當(dāng)松開后,LED恢復(fù)慢閃,但是當(dāng)按鍵按下去和松開的時間間隔小于200ms時,NVIC禁止中斷,LED保持常亮。編寫相應(yīng)的程序代碼,用keil uvision4編譯代碼并在ALTERA DE2-115上進(jìn)行中斷控制實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果

11、應(yīng)符合中斷控制系統(tǒng)控制要求,體現(xiàn)出M0中斷控制的特點(diǎn)。1.3 研究成果在ARM Cortex-M0中斷控制系統(tǒng)的設(shè)計中,了解基本的微處理器中斷處理流程,重點(diǎn)是掌握ARM Cortex-M0中斷控制系統(tǒng),對Cortex-M0處理器的搶占、末尾連鎖、遲到等加速中斷響應(yīng)的技術(shù)作細(xì)致的了解,并對比所學(xué)過的51單片機(jī)的中斷控制過程,充分的體會到M0能夠有效加速中斷響應(yīng)過程的特點(diǎn)。1.4 論文結(jié)構(gòu)第二章講述了嵌入式系統(tǒng)的概念、結(jié)構(gòu)及應(yīng)用領(lǐng)域,嵌入式微處理器分類、主流的體系結(jié)構(gòu)和未來發(fā)展趨勢,并介紹了當(dāng)前主流的嵌入式操作系統(tǒng)。第三章簡要的闡述了計算機(jī)技術(shù)上中斷的概念、類型和作用,同時也介紹了中斷嵌套優(yōu)先級的

12、概念。第四章介紹ARM Cortex-M0的中斷,首先簡單介紹了M0的結(jié)構(gòu)特點(diǎn),其次講解了M0的異常處理模型,另起一節(jié)講解了嵌套向量中斷控制器 (NVIC),并在此總結(jié)了M0中斷的特點(diǎn),最后介紹了CMSIS軟件接口標(biāo)準(zhǔn)。第五章為實(shí)驗(yàn),按照控制要求進(jìn)行硬、軟件的設(shè)計,繪制程序流程圖,編寫程序代碼,并記錄下實(shí)驗(yàn)結(jié)果,并對其進(jìn)行分析。382 嵌入式系統(tǒng)2.1 嵌入式系統(tǒng)簡介嵌入式系統(tǒng)是將計算機(jī)的硬件或是軟件嵌入其他機(jī)、電設(shè)備或應(yīng)用系統(tǒng)中去,所構(gòu)成了一種新的系統(tǒng),即嵌入式系統(tǒng)。是以應(yīng)用為中心,以計算機(jī)技術(shù)為基礎(chǔ),采用可裁剪軟硬件,適用于對功能、可靠性、成本、體積、功耗等有嚴(yán)格要求的專用計算機(jī)系統(tǒng),用于

13、實(shí)現(xiàn)對其他設(shè)備的控制、監(jiān)視或管理等功能。嵌入式系統(tǒng)具有系統(tǒng)內(nèi)核小、專用性強(qiáng)、系統(tǒng)精簡、高實(shí)時性的特征1。由于嵌入式系統(tǒng)具有體積小、性能好、功耗低、可靠性高以及面向應(yīng)用的突出特點(diǎn),因此嵌入式系統(tǒng)已被廣泛應(yīng)用于軍事、國防、電子信息、家電、網(wǎng)絡(luò)通信、工業(yè)控制等領(lǐng)域。嵌入式系統(tǒng)的應(yīng)用前景是非常廣闊的,IC 卡、手持電腦、智能手機(jī)、車載GPS、數(shù)字電視機(jī)頂盒,人們在生活中無時無處不接觸到嵌入式產(chǎn)品,尤其是嵌入式無線網(wǎng)絡(luò)產(chǎn)品的出現(xiàn),使嵌入式產(chǎn)品和我們的生活緊密相連2。軍事電子信息家電嵌入式應(yīng)用工業(yè)設(shè)備智能玩具智能儀表通訊設(shè)備汽車電子移動設(shè)備網(wǎng)絡(luò)設(shè)備電子商務(wù)網(wǎng) 絡(luò)圖 嵌入式系統(tǒng)的應(yīng)用領(lǐng)域工業(yè)控制消費(fèi)電子軍事

14、國防網(wǎng)絡(luò)其他 圖2.1 嵌入式系統(tǒng)的應(yīng)用領(lǐng)域嵌入式系統(tǒng)可以說無處不在,無所不在,有著廣闊的發(fā)展前景,也充滿了機(jī)遇和挑戰(zhàn)3。 2.2 嵌入式系統(tǒng)的組成與分類嵌入式系統(tǒng)一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)(可選),以及用戶應(yīng)用軟件系統(tǒng)等四個部分組成4。嵌入式系統(tǒng)結(jié)構(gòu)如圖2.2所示。嵌入式應(yīng)用軟件系統(tǒng)嵌入式操作系統(tǒng)嵌入式處理器為核心的硬件平臺應(yīng)用系統(tǒng)的I/O圖2.2 嵌入式系統(tǒng)結(jié)構(gòu)嵌入式系統(tǒng)由嵌入式硬件與嵌入式軟件組成。嵌入式硬件以芯片、模板、組件、控制器形式埋藏于設(shè)備內(nèi)部。嵌入式軟件是實(shí)時多任務(wù)操作系統(tǒng)和各種專用軟件,一般固化在ROM或閃存中。嵌入式系統(tǒng)軟硬兼施,融為一體,成為產(chǎn)品,

15、但在開發(fā)過程中需要一些開發(fā)工具進(jìn)行輔助開發(fā)。如圖2.3所示。功能層應(yīng)用程序軟件層文件系統(tǒng)圖形用戶接口任務(wù)管理實(shí)時操作系統(tǒng)(RTOS)中間 層BSP/HAL硬件抽象層/板極支持包硬件層D/A嵌入式微處理器通用接口A/DROMI/OSDRAM人機(jī)交換接口圖2.3 嵌入式系統(tǒng)的整體架構(gòu)嵌入式處理器毫無疑問是嵌入式系統(tǒng)的核心部分,其直接關(guān)系到整個嵌入式系統(tǒng)的性能。通常情況下嵌入式處理器被認(rèn)為是對嵌入式系統(tǒng)中運(yùn)算和控制核心器件總的稱謂,但如果要仔細(xì)劃分的話,大體上可以將其分為四大類,即嵌入式微處理器、嵌入式微控制器、嵌入式數(shù)字信號處理器、系統(tǒng)級芯片。 嵌入式微處理器:嵌入式微處理器(Embedded M

16、icroprocessor Unit,簡稱MPU)的基礎(chǔ)是通用計算機(jī)中的CPU。在應(yīng)用中將微處理器裝配在專門設(shè)計的電路板上,只保留和嵌入式應(yīng)用有關(guān)的母板功能,這樣可以大幅度減小系統(tǒng)體積和功耗。為了滿足嵌入式應(yīng)用的特殊要求,嵌入式微處理器雖然在功能上和標(biāo)準(zhǔn)微處理器基本是一樣的,但在工作溫度、抗電磁干擾、可靠性等方面一般都做了各種增強(qiáng)。 嵌入式微控制器:嵌入式微控制器(Microcontroller Unit,簡稱MCU,也稱單片機(jī))一般以某一種微處理器內(nèi)核為核心,芯片內(nèi)部集成ROM、RAM、總線、總線邏輯、定時計數(shù)器、I/O、串行口等各種必要功能和外設(shè)。為適應(yīng)不同的應(yīng)用需求,產(chǎn)品的處理器內(nèi)核都是

17、一樣的,不同的是存儲器和外設(shè)的配置及封裝。和嵌入式微處理器相比,微控制器的最大特點(diǎn)是單片化,體積大大減小,從而使功耗和成本下降、可靠性提高。 嵌入式數(shù)字信號處理器:嵌入式數(shù)字信號處理器(Embedded Digital Signal Processor,簡稱DSP)對系統(tǒng)結(jié)構(gòu)和指令進(jìn)行了特殊設(shè)計,使其適合于執(zhí)行DSP算法,編譯效率較高,指令執(zhí)行速度也較高。在數(shù)字濾波、FFT、譜分析等方面,DSP算法正在大量進(jìn)入嵌入式領(lǐng)域,DSP應(yīng)用正從在通用單片機(jī)中以普通指令實(shí)現(xiàn)DSP 功能,過渡到采用嵌入式DSP 處理器。 系統(tǒng)級芯片:系統(tǒng)級芯片(System On Chip,簡稱SOC,也稱片上系統(tǒng))是一

18、個有專用目標(biāo)的集成電路,其中包含完整系統(tǒng),并有嵌入式軟件的全部內(nèi)容。在SOC中通常將一個以上MPU和DSP,以及RAM、ROM、Cache、時鐘電路、定時器、中斷控制器、I/O端口、ADC、DAC等電路集成到一塊芯片中,同時可以由外部對芯片進(jìn)行編程。應(yīng)用SOC可以使系統(tǒng)電路板變得很簡潔,起到減小體積、降低功耗、提高可靠性的作用。2.3 常見嵌入式處理器的體系結(jié)構(gòu)各種嵌入式處理器層出不窮,嵌入式處理器市場呈現(xiàn)出百花齊放的景象。目前常用的嵌入式處理器的主要結(jié)構(gòu)歸結(jié)起來有:8051體系結(jié)構(gòu)、ARM體系結(jié)構(gòu)、MIPS體系結(jié)構(gòu)、PowerPC、DSP、x86 等2。 8051體系結(jié)構(gòu):8051 單片機(jī)最

19、早由Intel公司推出。它在一塊超大規(guī)模集成電路芯片上同時集成了CPU、ROM、RAM以及TIMER、COUNTER 等部件,具有64KB的尋址能力。由于某些原因,8051在國內(nèi)的使用非常普遍,但總的來說8051因其微處理器性能落后,仍然是一款低端產(chǎn)品。 ARM體系結(jié)構(gòu):ARM處理器遍及工業(yè)控制、消費(fèi)類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、無線系統(tǒng)等各類產(chǎn)品市場,基于ARM技術(shù)的處理器應(yīng)用約占據(jù)了32位RISC微處理器75%以上的市場。目前市面上常見的ARM處理器架構(gòu),可分為ARM7、ARM9、ARM11和Cortex系列。IPhone、NOKIA、HTC 等智能手機(jī)中的微處理器,就是由高通和德州儀器

20、授權(quán)生產(chǎn)的ARM處理器。 MIPS體系結(jié)構(gòu):MIPS是美國歷史悠久的RISC處理器體系,分為32-bit以及64-bit兩大家族,以技術(shù)授權(quán)作為主要營利模式。MIPS除了在手機(jī)中應(yīng)用的比例極小外,其在一般數(shù)字消費(fèi)、網(wǎng)絡(luò)語音、個人娛樂、通訊、與商務(wù)應(yīng)用市場有著相當(dāng)不錯的成績,不過近年來因?yàn)槠渌麵P授權(quán)公司的興起,其占有比率稍有衰退。MIPS應(yīng)用最為廣泛的應(yīng)屬家庭視聽電器(包含機(jī)頂盒)、網(wǎng)通產(chǎn)品以及汽車電子方面。 PowerPC體系結(jié)構(gòu):PowerPC是早期Motorola和IBM聯(lián)合為Apple的MAC機(jī)開發(fā)的CPU芯片,PowerPC的體系結(jié)構(gòu)也是RISC,有200多條定長32位的指令,通常只

21、執(zhí)行一個單一的操作(比如將內(nèi)存加載到寄存器,或者將寄存器數(shù)據(jù)存儲到內(nèi)存),同時支持字節(jié)(8位)、半字(16位)、字(32位)和雙字(64位)數(shù)據(jù)類型。 DSP體系結(jié)構(gòu):DSP是一種專用微處理器,主要對數(shù)字信號進(jìn)行實(shí)時處理,以得到相應(yīng)的處理結(jié)果。DSP 在存儲容量和運(yùn)算速度上都很高,成為語音處理、圖像硬件處理技術(shù)的基礎(chǔ),同時在高端的工業(yè)控制方面也得到廣泛應(yīng)用,如空間矢量PWM控制系統(tǒng),電機(jī)的DSP控制系統(tǒng)等。 x86體系結(jié)構(gòu):x86處理器應(yīng)用在嵌入式系統(tǒng)的歷史相當(dāng)悠久,但其普遍都有功耗過高且芯片數(shù)量龐大的缺點(diǎn),因而不適合應(yīng)用在要求精簡省電的嵌入式架構(gòu)中??墒窃谟行τ谀芎目刂埔蟛桓叩念I(lǐng)域,如工

22、控電腦產(chǎn)業(yè)中,可以看到許多x86處理器仍然在被使用。同時Inter最新的嵌入式處理器Atom系列也是兼容x86結(jié)構(gòu)的5。2.4 嵌入式處理器的發(fā)展趨勢 嵌入式處理器性能的提高。嵌入式處理器給人的第一感覺就是穩(wěn)定、功耗低、性能差。實(shí)際上嵌入式處理器確實(shí)需要有很好的穩(wěn)定性,較低的功耗,但這并不表明嵌入式處理器不需要高性能。事實(shí)上對于嵌入式處理器性能的追求從來就沒有停止過,尤其在消費(fèi)類電子產(chǎn)品中,嵌入式處理器的性能往往對產(chǎn)品具有決定性的影響。未來對于嵌入式處理器性能的追求肯定也不會停止,更好的處理器設(shè)計和更先進(jìn)的制造工藝都將被運(yùn)用進(jìn)來,使嵌入式處理器的性能產(chǎn)生巨大的提升。 更高的集成度和更豐富的功能

23、。嵌入式處理器的集成度將不斷提高,越來越多的功能將被集成到處理器當(dāng)中。如內(nèi)存控制器已經(jīng)被普遍集成到處理器當(dāng)中,未來USB 控制器、網(wǎng)絡(luò)控制器,甚至是圖形顯示功能都可能被集成到處理器當(dāng)中。 更低的功耗和更小的體積。嵌入式系統(tǒng)因其工作環(huán)境的限制,往往決定了其體積必須小巧,這就要求其核心部分嵌入式處理器也必須在性能保證的情況下盡可能的小。同時,嵌入式系統(tǒng)的能耗也必須很低,有的系統(tǒng)需要在一節(jié)電池供電的情況下使用幾個月,這就對嵌入式處理器的功耗提出了近乎苛刻的要求,而這些也正是推動嵌入式處理器發(fā)展的動力。 嵌入式處理器中將會實(shí)現(xiàn)CPU和GPU的融合。CPU和GPU的融合并不是把一個CPU核心和一個GPU

24、核心簡單的集成到一塊芯片當(dāng)中。其還需要一套適合的調(diào)度算法,融合CPU強(qiáng)大的處理能力和GPU強(qiáng)大的運(yùn)算能力,使之可以協(xié)同工作2。目前,AMD已經(jīng)在通用處理器上實(shí)現(xiàn)了上述功能,而其嵌入式產(chǎn)品APU- C系列也開始出現(xiàn)在市場上,并被運(yùn)用在平板電腦等領(lǐng)域,帶來了性能的巨大提升,由此可見嵌入式處理器中CPU和GPU的融合是未來發(fā)展的必然趨勢15。3 中斷3.1 中斷的定義中斷是指CPU正常執(zhí)行程序被某種臨時發(fā)生的事件所打斷,當(dāng)前程序暫時中止,處理器轉(zhuǎn)去處理所發(fā)生的事件,處理完畢在返回執(zhí)行暫時中止的程序。就是說,在當(dāng)前程序中插進(jìn)一段別的程序中斷服務(wù)程序或中斷處理程序。CPU執(zhí)行現(xiàn)行的程序被中斷時的后繼指令

25、(下一條指令)的地址稱為斷點(diǎn)地址(簡稱斷點(diǎn))。中斷時,CPU執(zhí)行程序過程中所處的狀態(tài)成為現(xiàn)場。中斷流程如圖3.1。正是有了中斷,外部設(shè)備才能主動的改變CPU正常執(zhí)行程序的順序。何時中斷,CPU預(yù)先并不知道,因此,中斷具有隨機(jī)性。由外部硬件引起的終端成為硬中斷。有主機(jī)內(nèi)部產(chǎn)生,或由程序預(yù)先安排的中斷稱為軟中斷。通常,在接收到來自外圍硬件(相對于中央處理器和內(nèi)存)的異步信號,或來自軟件的同步信號之后,處理器將會進(jìn)行相應(yīng)的硬件/軟件處理。發(fā)出這樣的信號稱為進(jìn)行中斷請求(interrupt request,即IRQ)。硬件中斷導(dǎo)致處理器通過一個上下文切換(context switch)來保存執(zhí)行狀態(tài)(

26、以程序計數(shù)器和程序狀態(tài)字等寄存器信息為主);軟件中斷則通常作為CPU指令集中的一個指令,以可編程的方式直接指示這種上下文切換,并將處理導(dǎo)向一段中斷處理代碼。中斷在計算機(jī)多任務(wù)處理,尤其是即時系統(tǒng)中尤為有用10。CPU收到中斷信號中斷服務(wù)程序執(zhí)行結(jié)束,返回繼續(xù)執(zhí)行原來的程序正在運(yùn)行的程序中斷返回中斷CPU中斷正在執(zhí)行的程序,轉(zhuǎn)到執(zhí)行中斷服務(wù)程序圖3.1 中斷處理過程 3.2 中斷源凡是能夠引起中斷原因或提出中斷請求的設(shè)備和異常故障均稱被稱為“中斷源”。有以下幾種: 外部設(shè)備請求中斷。一般的外部設(shè)備(如鍵盤、打印機(jī)和A / D轉(zhuǎn)換器等)在完成自身的操作后,向CPU發(fā)出中斷請求,要求CPU為他服務(wù)。

27、由計算機(jī)硬件異常或故障引起的中斷,也稱為內(nèi)部異常中斷。 故障強(qiáng)迫中斷。計算機(jī)在一些關(guān)鍵部位都設(shè)有故障自動檢測裝置。如運(yùn)算溢出、存儲器讀出出錯、外部設(shè)備故障、電源掉電以及其他報警信號等,這些裝置的報警信號都能使CPU中斷,進(jìn)行相應(yīng)的中斷處理。 實(shí)時時鐘請求中斷。在控制中遇到定時檢測和控制,為此常采用一個外部時鐘電路(可編程)控制其時間間隔。需要定時時,CPU發(fā)出命令使時鐘電路開始工作,一旦到達(dá)規(guī)定時間,時鐘電路發(fā)出中斷請求,由CPU轉(zhuǎn)去完成檢測和控制工作。 數(shù)據(jù)通道中斷。數(shù)據(jù)通道中斷也稱直接存儲器存?。―MA)操作中斷,如磁盤、磁帶機(jī)或CRT等直接與存儲器交換數(shù)據(jù)所要求的中斷。 程序自愿中斷。C

28、PU執(zhí)行了特殊指令(自陷指令)或由硬件電路引起的中斷是程序自愿中斷,是指當(dāng)用戶調(diào)試程序時,程序自愿中斷檢查中間結(jié)果或?qū)ふ义e誤所在而采用的檢查手段,如斷點(diǎn)中斷和單步中斷等6。3.3 中斷分類按中斷處理方式,中斷可分為以下幾類: 簡單中斷,即采用周期竊用的方法來執(zhí)行中斷服務(wù),有時也稱數(shù)據(jù)通道或DMA。 程序中斷,它不是竊用中央處理機(jī)的周期來進(jìn)行中斷處理,而是中止現(xiàn)行程序的執(zhí)行,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。按中斷產(chǎn)生的方式,中斷可分為: 自愿中斷,即通過自陷指令引起的中斷,或稱軟件中斷。 強(qiáng)迫中斷,這是一種隨機(jī)發(fā)生的實(shí)時中斷。按中斷產(chǎn)生的位置,中斷可分為: 外部中斷,或稱外部硬件實(shí)時中斷,它由發(fā)至CPU某

29、一引腳上的信號引起。 內(nèi)部中斷,或稱軟件指令中斷,是為了處理程序運(yùn)行過程中發(fā)生的一些意外情況或調(diào)試程序而提供的中斷。3.4 中斷應(yīng)具有的功能中斷應(yīng)具有以下功能: 實(shí)現(xiàn)中斷及返回。當(dāng)某一中斷源發(fā)出申請時,CPU能決定是否響應(yīng)這個中斷請求(當(dāng)CPU在執(zhí)行更緊急、更重要的工作時,可以暫不響應(yīng)中斷),若允許響應(yīng)這個中斷請求,CPU必須在現(xiàn)行的指令執(zhí)行完成后,把斷點(diǎn)處的IP和CS值(即下一條應(yīng)執(zhí)行的指令的地址)、各個寄存器的內(nèi)容和標(biāo)志位的狀態(tài)推入堆棧保留下來稱為保護(hù)斷點(diǎn)和現(xiàn)場。然后轉(zhuǎn)到需要處理的中斷源的服務(wù)(Interrupt Service Routine,即ISR)的入口,同時清除中斷請求觸發(fā)期。當(dāng)

30、中斷處理完后,再恢復(fù)被保留下來的各個寄存器和標(biāo)志位的狀態(tài)(稱為恢復(fù)現(xiàn)場),恢復(fù)IP和CS值(稱為恢復(fù)斷點(diǎn)),使CPU返回斷點(diǎn),繼續(xù)執(zhí)行主程序。 實(shí)現(xiàn)優(yōu)先權(quán)排隊。在系統(tǒng)中通常有多個中斷源,會出現(xiàn)兩個或更多個中斷源同時提出中斷請求的情況,這樣就必須要設(shè)計者事先根據(jù)輕重緩急,給每個中斷源確定一個終端級別優(yōu)先權(quán)。當(dāng)多個中斷源同時發(fā)出中斷申請時,CPU能找到優(yōu)先權(quán)級別最高的中斷源,響應(yīng)它的中斷請求;在優(yōu)先權(quán)級別最高的中斷源處理完了以后,在相應(yīng)級別較低的中斷源。 高級中斷源能中斷低級的中斷處理。當(dāng)CPU響應(yīng)某一中斷源的請求,在進(jìn)行中斷處理時,若有優(yōu)先級別更高的中斷源發(fā)出中斷申請,則CPU要能中斷正在進(jìn)行的

31、中斷服務(wù)程序;保留這個程序的斷點(diǎn)和現(xiàn)場(類似于子程序嵌套),響應(yīng)高級中斷,在高級中斷處理完以后,再繼續(xù)進(jìn)行被中斷的中斷服務(wù)程序。而當(dāng)發(fā)出新的中斷申請的中斷源的優(yōu)先級別與正在處理的中斷源同級或更低時,則CPU就先不響應(yīng)這個中斷申請,直至正在處理的中斷服務(wù)程序執(zhí)行完以后才去處理新的中斷申請。3.5 中斷嵌套與優(yōu)先級3.5.1 中斷優(yōu)先級為了管理眾多的中斷請求,需要按每個(類)中斷處理的急迫程度,對中斷進(jìn)行分級管理,稱其為中斷優(yōu)先級。在有多個中斷請求時,總是響應(yīng)與處理優(yōu)先級高的設(shè)備的中斷請求。中斷的優(yōu)先級有兩個:查詢優(yōu)先級和執(zhí)行優(yōu)先級。 中斷的查詢優(yōu)先級是不可以更改和設(shè)置的。這是一個中斷優(yōu)先權(quán)排隊的

32、問題。是指多個中斷源同時產(chǎn)生中斷信號時,中斷仲裁器選擇對哪個中斷源優(yōu)先處理的順序。而這與是否發(fā)生中斷服務(wù)程序的嵌套毫不相干。當(dāng)CPU查詢各個中斷標(biāo)志位的時候,會依照上述5個查詢優(yōu)先級順序依次查詢,當(dāng)數(shù)個中斷同時請求的時候,會優(yōu)先查詢到高優(yōu)查詢先級的中斷標(biāo)志位,但并不代表高查詢優(yōu)先級的中斷可以打斷已經(jīng)并且正在執(zhí)行的低查詢優(yōu)先級的中斷服務(wù)。IP寄存器不做設(shè)置,上電復(fù)位后為00H的優(yōu)先級:外部中斷0>定時/計數(shù)器0 >外部中斷1 >定時/計數(shù)器1 >串行中斷 中斷的執(zhí)行優(yōu)先級就是你對IP寄存器的設(shè)置。在2個優(yōu)先級的情況下,某位為1,則相應(yīng)的中斷源為高優(yōu)先級;為0,則為低優(yōu)先級

33、。關(guān)于中斷的優(yōu)先級有三條原則:1)CPU同時接收到幾個中斷時,首先響應(yīng)優(yōu)先級最高的中斷請求;2)正在進(jìn)行的中斷過程不能被新的同級或低行優(yōu)優(yōu)先級的中斷請求所中斷;3)正在進(jìn)行的低行優(yōu)優(yōu)先級中斷服務(wù),能被高行優(yōu)優(yōu)先級中斷請求中斷。若同一執(zhí)行優(yōu)先級中的中斷申請不止一個時,則有一個中斷優(yōu)先權(quán)排隊問題。同一執(zhí)行優(yōu)先級的中斷優(yōu)先權(quán)排隊,由中斷系統(tǒng)硬件確定的自然優(yōu)先級形成,優(yōu)先權(quán)自高到低的順序即:外部中斷0>定時/計數(shù)0>外部中斷1>定時/計數(shù)1>串行接口3.5.2 中斷嵌套當(dāng)CPU正在處理優(yōu)先級較低的一個中斷,又來了優(yōu)先級更高的一個中斷請求,則CPU先停止低優(yōu)先級的中斷處理過程,去

34、響應(yīng)優(yōu)先級更高的中斷請求,在優(yōu)先級更高的中斷處理完成之后,再繼續(xù)處理低優(yōu)先級的中斷,這種情況稱為中斷嵌套。中斷程序嵌套模型如圖3.2所示。中斷3服務(wù)程序中斷2服務(wù)程序中斷1服務(wù)程序中斷2服務(wù)程序中斷2服務(wù)程序主程序中斷1請求中斷2請求中斷3請求1m=1mn1+1n+1斷點(diǎn)斷點(diǎn)斷點(diǎn)IRET(中斷返回)IRET(中斷返回)IRET(中斷返回)圖3.2 中斷程序嵌套示意圖當(dāng)一個中斷正在執(zhí)行的時候,如果事先設(shè)置了中斷優(yōu)先級寄存器IP,那么當(dāng)一個更高優(yōu)先級的中斷到來的時候會發(fā)生中斷嵌套,如果沒有設(shè)置則不會發(fā)生任何嵌套;如果有同一個優(yōu)先級的中斷觸發(fā),它并不是在“不斷的申請”,而是將它相應(yīng)的中斷標(biāo)志位置即I

35、E寄存器的某位置位,當(dāng)CPU執(zhí)行完當(dāng)前中斷之后,按照查詢優(yōu)先級重新去查詢各個中斷標(biāo)志位,進(jìn)入相應(yīng)中斷6 。3.6 中斷控制方式的優(yōu)點(diǎn)中斷是用以提高計算機(jī)工作效率、增強(qiáng)計算機(jī)功能的一項重要技術(shù)。如果計算機(jī)系統(tǒng)沒有中斷,則處理器與外部設(shè)備通信時,它必須在向該設(shè)備發(fā)出指令后進(jìn)行忙等待(Busy waiting),反復(fù)輪詢該設(shè)備是否完成了動作并返回結(jié)果。這就造成了大量處理器周期被浪費(fèi)。引入中斷以后,當(dāng)處理器發(fā)出設(shè)備請求后就可以立即返回以處理其他任務(wù),而當(dāng)設(shè)備完成動作后,發(fā)送中斷信號給處理器,后者就可以再回過頭獲取處理結(jié)果。這樣,在設(shè)備進(jìn)行處理的周期內(nèi),處理器可以執(zhí)行其他一些有意義的工作,而只付出一些很

36、小的、切換上下文所引發(fā)的時間代價。具體有以下好處: 同步操作。有了中斷就可以使CPU和外設(shè)同時工作。CPU在啟動外設(shè)工作后,就繼續(xù)執(zhí)行主程序,同時外設(shè)也在工作,當(dāng)外設(shè)把數(shù)據(jù)準(zhǔn)備好之后發(fā)出中斷請求,請求CPU中斷它的程序,執(zhí)行輸入或輸出(中斷處理),處理完成以后,CPU恢復(fù)執(zhí)行主程序,外設(shè)也繼續(xù)工作。并且有了中斷功能,CPU可以命令多個外設(shè)同時工作。這樣大大提高了CPU的利用率,也提高了輸入輸出的速度。 實(shí)現(xiàn)實(shí)時處理。當(dāng)計算機(jī)用于實(shí)時控制時,中斷是一個十分重要的功能?,F(xiàn)場的各個參數(shù)、信息,可在任何時間發(fā)出中斷申請,要求CPU處理;CPU則可以馬上響應(yīng)(若中斷是開放的話)并加以處理。這樣的及時處理

37、在查詢的工作方式下是做不到的。 故障處理。計算機(jī)在運(yùn)行的過程中,往往會出現(xiàn)事先預(yù)料不到的情況,或者出現(xiàn)一些故障如電源突跳、存儲出錯、運(yùn)算溢出等。計算就可以利用終端系統(tǒng)自行處理,而不必停機(jī)或報告工作人員。中斷系統(tǒng)明顯的提高了計算機(jī)系統(tǒng)中信息處理的并行度和處理器的效率,改善了計算機(jī)系統(tǒng)的性能。它解決了CPU與各種慢速外部設(shè)備之間的速度匹配問題。中斷系統(tǒng)在故障檢測、實(shí)時處理與控制、分時系統(tǒng)、多級系統(tǒng)與通信、并行處理、人機(jī)交互中得到廣泛使用和不斷發(fā)展。4 ARM Cortex-M0的中斷4.1 ARM Cortex-M0簡介ARM公司于2009年推出了Cortex-M0微控制器,這是市場上現(xiàn)有的尺寸最

38、小、能耗最低、最節(jié)能的ARM微控制器。該微控制器能耗非常低、門數(shù)量少、代碼占用空間小,能保留8位微控制器的價位獲得32位微控制器的性能。超低門數(shù)還使其能夠用于模擬信號設(shè)備和混合信號設(shè)備及MCU應(yīng)用中,可明顯降低系統(tǒng)成本,同時保留功能強(qiáng)大的Cortex-M3微控制器的工具和二進(jìn)制兼容能力。該微控制器的推出把ARM的MCU路線圖拓展到了超低能耗MCU和SoC應(yīng)用中,如醫(yī)療器械、電子測量、照明、智能控制、游戲設(shè)置、緊湊型電源、電源和馬達(dá)控制、精密模擬系統(tǒng)和IEEE 802.15.4(ZigBee)及Z-Wave系統(tǒng)等13。4.2 ARM Cortex-M0總線架構(gòu)隨著深亞微米工藝技術(shù)日益成熟,集成電

39、路芯片的規(guī)模越來越大。數(shù)字IC從基于時序驅(qū)動的設(shè)計方法,發(fā)展到基于IP復(fù)用的設(shè)計方法,并在SOC設(shè)計中得到了廣泛應(yīng)用。在基于IP復(fù)用的SoC的設(shè)計中,片上總線設(shè)計是最關(guān)鍵的問題。為此,業(yè)界出現(xiàn)了很多片上總線標(biāo)準(zhǔn)。其中,由ARM公司推出的AMBA片上總線受到了廣大IP開發(fā)商和SoC系統(tǒng)集成者的青睞,已成為一種流行的工業(yè)標(biāo)準(zhǔn)片上結(jié)構(gòu)。AMBA規(guī)范主要包括了系統(tǒng)總線 (Advanced High performance Bus,簡稱AHB)和外圍總線(Advanced Peripheral Bus,簡稱APB) 7。Cortex-M0處理器Cortex-M0處理器核心內(nèi)嵌向量中斷控制器(NVIC)可

40、選調(diào)試部件可選調(diào)試部件可選喚醒中斷控制器(WIC)斷點(diǎn)及觀測點(diǎn)單元斷點(diǎn)及觀測點(diǎn)單元中斷可選調(diào)試訪問接口(DAP)調(diào)試接口總線矩陣調(diào)試接口總線矩陣AHB總線接口SWD或JTAG調(diào)試接口圖4.1 Cortex-M0處理器架構(gòu)Cortex-M0屬于ARMv6-M架構(gòu),包括1顆專為嵌入式應(yīng)用而設(shè)計的ARM 核、緊耦合的可嵌套中斷處理器NVIC、可選的喚醒中斷控制器WIC, 對外提供了基于AMBA結(jié)構(gòu)的AHB- lite總線和基于CoreSight技術(shù)的SWD或JTAG調(diào)試接口。Cortex-M0處理器的硬件實(shí)現(xiàn)包含多個可配置選項:中斷數(shù)量、WIC、睡眠模式和節(jié)能措施、存儲系統(tǒng)大小端模式、系統(tǒng)滴答時鐘等

41、,半導(dǎo)體廠商可以根據(jù)應(yīng)用需要選擇合理的配置14。Cortex-M0處理器架構(gòu)如圖4.1所示。4.3 異常處理模型4.3.1 異常狀態(tài) 未激活(Inactive) 異常沒有被激活也沒有被掛起。 掛起(Pending) 異常正等待被處理器服務(wù)。來自外設(shè)或軟件的中斷請求,能讓相應(yīng)中斷變?yōu)閽炱馉顟B(tài)。 激活(Active) 異常正在被處理器服務(wù),并且服務(wù)尚未結(jié)束。注意:一個異常處理能中斷另一個異常處理,在這種情況下,兩個異常都處于激活態(tài)。 激活且掛起(Active and pending) 異常正在被處理器服務(wù)時,又出現(xiàn)了來自同一異常源的異常。4.3.2 異常類型 Reset 復(fù)位由加電或熱復(fù)位引起,異

42、常模型把復(fù)位當(dāng)作一個特殊形式的異常。當(dāng)復(fù)位信號有效時,無論指令執(zhí)行到什么位置,處理器都停止當(dāng)前的指令。復(fù)位信號失效之后,從復(fù)位異常規(guī)定的入口地址處開始執(zhí)行,按Thread模式工作。 NMI 不可屏蔽中斷可由外設(shè)引起或軟件觸發(fā),NMI是除Reset之外,最高優(yōu)先級的異常,NMI被永久允許,擁有固定的優(yōu)先級-2。NMI不能被:a.任何別的異常屏蔽或阻止;b.除復(fù)位之外的任何異常搶占。 HardFault 硬故障是指在正常情況或異常處理時出現(xiàn)錯誤(error)所引起的一種異常,硬故障有固定的優(yōu)先級-1,表明硬故障比任何一個可以配置優(yōu)先級的異常的優(yōu)先級都高。 SVCall 系統(tǒng)服務(wù)調(diào)用,利用SVC指令

43、調(diào)用系統(tǒng)服務(wù)。 PendSV 可掛起的系統(tǒng)服務(wù)請求,是一種中斷驅(qū)動的請求,用于面向系統(tǒng)級服務(wù)。在操作系統(tǒng)環(huán)境下,當(dāng)沒有別的異常激活時,使用PendSV進(jìn)行上下文切換。 SysTick 如果處理器實(shí)現(xiàn)系統(tǒng)滴答定時器,那么SysTick是由系統(tǒng)滴答定時器計數(shù)到0時所產(chǎn)生的一種異常。軟件也能產(chǎn)生SysTick異常,在操作系統(tǒng)環(huán)境下,處理器能使用這一異常作為系統(tǒng)滴答計時。 中斷(IRQ) 中斷是由外設(shè)或軟件請求而產(chǎn)生的異常,所有的中斷對指令的執(zhí)行是異步進(jìn)行的。在計算機(jī)系統(tǒng)中,外設(shè)通過中斷與處理器通信16。各種異常的優(yōu)先級如下表4.1所示。表4.1 不同類型異常的優(yōu)先級異常編號IRQ編號異常類型優(yōu)先級向

44、量地址激活1-Reset-3,最高0x00000004異步2-14NMI-20x00000008異步3-13HardFault-10x0000000c同步4-10-保留-11-5SVCall可配置0x0000002c同步12-13-保留-14-2PendSV可配置0x00000038異步15-1SysTick-0x0000003c異步15-保留可配置-16及以上0及以上IRQ可配置0x000000040及以上異步為簡化軟件層,CMSIS僅使用IRQ號,因此采用負(fù)數(shù)作為異常的編號,IPSR返回異常編號。如果處理器沒有系統(tǒng)滴答定時器,則異常15保留。IRQ中斷號是在處理器實(shí)現(xiàn)時定義的,范圍是1-3

45、2。未實(shí)現(xiàn)的IRQ異常編號被保留,例如,如果某處理器僅實(shí)現(xiàn)一個IRQ,則異常號17及以上的編號均被保留。增長步長為4。對于異步異常,除Reset外,處理器在異常被觸發(fā)到異常開始被處理的這段時間內(nèi),仍能繼續(xù)執(zhí)行指令。特權(quán)軟件可以禁止以上具有可配置優(yōu)先級的異常。4.3.3 異常處理 ISRs 中斷服務(wù)子程序處理IRQ中斷異常。 Faulthandler 故障處理程序處理硬故障。 系統(tǒng)處理程序 (Systemhandlers) 處理系統(tǒng)異常NMI,PendSV,SVCall,SysTick和HardFault。4.3.4 異常向量表異常向量表包含堆棧指針的復(fù)位值,以及起始地址。堆棧指針的復(fù)位值和起始

46、地址一起被稱為異常向量,用于所有異常處理。下圖列出了異常向量表中的異常向量的次序。每一個向量的最低位必須為1,表明異常處理是用Thumb代碼實(shí)現(xiàn)的。Cortex-M0異常向量表如下表4.2所示。表4.2 Cortex-M0異常向量表16+nn0x440x40+4nIRQn171IRQ11600x40IRQ015-10x3CSysTick,if implemented14-20x100x2C0x38PendSV13Reserved1211-5SVCall10Reserved9876543-130x0CHardFault2-140x040x08NMI1Reset-0x00Initial SP va

47、lue4.3.5 異常優(yōu)先級所有的異常都有一個優(yōu)先級。優(yōu)先級數(shù)值越小,優(yōu)先級越高。除Reset、HardFault和NMI之外,其余所有異常都能配置其優(yōu)先級。如果軟件沒有配置優(yōu)先級,那么所有可配置優(yōu)先級的異常的優(yōu)先級為0??膳渲脙?yōu)先級的數(shù)值范圍是0-192,步長為64。Reset、HardFault和NMI是具有負(fù)數(shù)值的固定優(yōu)先級異常,比其它異常具有更高的優(yōu)先級。給IRQ0分配一個較大的優(yōu)先級數(shù)值,而給IRQ1分配一個較小的優(yōu)先級數(shù)值,就意味著IRQ1比IRQ0的優(yōu)先級高,如果IRQ1和IRQ0都被觸發(fā),則IRQ1比IRQ0先執(zhí)行。如果多個掛起的異常具有同等的優(yōu)先級,那么具有較小異常號的異常優(yōu)

48、先執(zhí)行。例如,如果IRQ0和IRQ1具有相同的優(yōu)先級,且都掛起,則IRQ0比IRQ1優(yōu)先執(zhí)行。當(dāng)處理器在執(zhí)行一個異常處理時,如果有更高優(yōu)先級的異常發(fā)生,則該異??梢员粨屨?。如果發(fā)生的異常與正在執(zhí)行的異常具有相同的優(yōu)先級,則不管其異常號為多少,正在執(zhí)行的異常都不會被搶占,而新發(fā)生的異常的狀態(tài)變?yōu)閽炱稹?.3.6 異常處理的進(jìn)入與返回 搶占(Preemption)。當(dāng)處理器在執(zhí)行一個異常處理時,另一個異常處理可以搶占這個正在被執(zhí)行的異常處理,只要其優(yōu)先級比正在被處理的異常優(yōu)先級高。一個異常處理搶占另一個異常處理,被稱為異常嵌套。 返回(Return)。當(dāng)沒有以下情況時,異常處理結(jié)束之后就異常返回:

49、1)沒有掛起的異常需要服務(wù)。2)所完成的異常處理不是一個遲到異常。處理器從堆棧彈出數(shù)據(jù),現(xiàn)場恢復(fù)到中斷發(fā)生之前的狀態(tài)。 尾鏈(Tail-chaining)。該機(jī)制加速了異常服務(wù)。當(dāng)一個異常處理剛好完成時,若此時有一個掛起的異常滿足進(jìn)入執(zhí)行的條件,則從堆棧彈出數(shù)據(jù)的操作就跳過,直接轉(zhuǎn)到這個新的異常處理。 遲到(Late-arriving)。該機(jī)制加速搶占。當(dāng)一個異常處理正在保存狀態(tài)時,如果出現(xiàn)了一個更高優(yōu)先級的異常,則處理器切換去執(zhí)行這個更高優(yōu)先級的異常,為新異常初始化預(yù)取向量。遲到異常并不影響向量的保存,因?yàn)閮蓚€異常需要保存的狀態(tài)是一致的。在遲到異常返回時,正常的尾鏈規(guī)則依然有效。 異常進(jìn)入。

50、有一個具有足夠高優(yōu)先級的掛起異常,以及以下條件之一,則可以進(jìn)入異常:1)處理器處于Thread模式。2)新的異常比正在處理的異常具有更高的優(yōu)先級。這種情況下,新異常搶占正在執(zhí)行的異常。當(dāng)一個異常搶占另一個異常時,將出現(xiàn)異常嵌套。足夠高優(yōu)先級的含義是,該異常比屏蔽寄存器的任一有限集的優(yōu)先級都高。而比有限集的優(yōu)先級低的異常就掛起,不執(zhí)行。當(dāng)處理器處理一個異常時,除非該異常是一個尾鏈或遲到的異常,處理器把信息壓入當(dāng)前堆棧,這一操作稱為入棧,而這個8字的數(shù)據(jù)結(jié)構(gòu)被稱為一個堆棧幀,堆棧幀包含如下圖4.2所示。SP point here before interruptDecreasingSP+0x00S

51、P+0x04SP+0x08SP+0x0CSP+0x10SP+0x14SP+0x18SP+0x1C<previous>xPSRAddressPCLRR12R3R2R1SP point here after interuptR0圖 4.2 堆棧幀入棧后,堆棧指針指向幀的最低地址,堆棧幀是雙字地址對齊的。地址,該地址值保存在堆棧幀信息的PC中,因此被中斷程序能恢復(fù)現(xiàn)場。處理器從向量表中讀取異常處理程序的起始地址,當(dāng)保護(hù)現(xiàn)場的入棧操作完成后,處理器開始執(zhí)行異常處理程序。與此同時,處理器會將一個EXC_RETURN值寫到LR寄存器,這能指明與堆棧信息幀相應(yīng)的堆棧指針,以及進(jìn)入異常之前處理器所

52、處的操作模式。如果在進(jìn)入異常時沒有發(fā)生更高優(yōu)先級的異常,則處理器開始執(zhí)行該異常處理,并自動把該異常的狀態(tài)由掛起修改為激活。如果在進(jìn)入異常時發(fā)生了另一個更高優(yōu)先級的異常,則處理器將執(zhí)行高優(yōu)先級的異常處理,先前的異常的掛起狀態(tài)保持不變,這屬于遲到異常的情況。 異常返回。當(dāng)處理器處于Handler模式,且執(zhí)行以下之一指令將PC的值置為EXC_RETURN的值,則發(fā)生異常返回:1)執(zhí)行POP指令,加載PC寄存器。2)執(zhí)行BX指令(任何寄存器均可)。在異常進(jìn)入時,處理器把EXC_RETURN的值保存到LR寄存器。處理器根據(jù)此數(shù)值來決定異常處理完成時的動作。EXC_RETURN值的31:4位是0xFFFF

53、FFF,當(dāng)處理器加載的值與之匹配時,處理器將檢測到這不是一個正常的分支操作,而是異常結(jié)束。因此,處理器將開始異常返回操作。EXC_RETURN值的3:0位指出所需的返回堆棧以及處理器模式,如表4.3所示。表4.3 異常返回行為EXC_RETURN描 述0xFFFFFFF1返回Handler模式。異常返回從主站獲取狀態(tài)。返回之后使用MSP。0xFFFFFFF1返回Thread模式。異常返回從主站獲取狀態(tài)。返回之后使用MSP。0xFFFFFFF1返回Thread模式。異常返回從主站獲取狀態(tài)。返回之后使用MSP。其他值保留 故障處理。故障是異常的一個子集。在NMI或HardFault異常處理時發(fā)生的

54、故障將會引起HardFault異?;?qū)е骆i定(Lockup)。故障包含:1) 執(zhí)行一條SVC指令,該指令的優(yōu)先級高于或等于SVCall。2) 缺少調(diào)試器連接時,執(zhí)行BKPT指令。3) 在加載或存儲數(shù)據(jù)時,系統(tǒng)產(chǎn)生總線錯誤。4) 執(zhí)行XN存儲區(qū)的指令。執(zhí)行來自系統(tǒng)已產(chǎn)生總線故障的地址位置的指令。5) 取向量時系統(tǒng)產(chǎn)生總線錯誤。6) 執(zhí)行一條未定義的指令。7) T位已清為0,處理器不在Thumb狀態(tài)時執(zhí)行指令。8) 試圖讀取或保存數(shù)據(jù)到未對齊的地址。注意,只有Reset和NMI能搶占具有固定優(yōu)先級的HardFault異常。而HardFault異常則能搶占除Reset、NMI或另一個HardFault異常之外的所有異常6。 鎖定。以下這些情況處理器會進(jìn)入鎖定狀態(tài):執(zhí)行NMI或HardFault異常處理時發(fā)生故障;或在使用MSP異常返回時,還沒有從堆?;謴?fù)PSR寄存器的值系統(tǒng)就產(chǎn)生總線錯誤。當(dāng)處理器處于鎖定狀態(tài)時,不能執(zhí)行任何指令。處理器將保持鎖定狀態(tài)直到以下情況之一發(fā)生:1) 處理器

溫馨提示

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

評論

0/150

提交評論