版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Good is good, but better carries it.精益求精,善益求善。ARMCortexM0嵌入式微處理器中斷控制系統(tǒng)研究平頂山工學院畢 業(yè) 設 計 論 文題 目:ARM Cortex-M0 嵌入式微處理器中斷控制系統(tǒng)研究學 院: 電氣與信息工程學院 專 業(yè): 自動化 摘 要本文介紹了ARM Cortex-M0嵌入式微處理器中斷控制系統(tǒng)的設計。Cortex-M0是ARM公司開發(fā)的一款提供超低功耗、低成本微處理器,采用獨特的中斷控制系統(tǒng),能夠有效加速中斷響應過程。通過對M0處理器的中斷控制系統(tǒng)研究,可以更深入的了解微處理器架構以及中斷控制系統(tǒng)設計。本文首先簡述了嵌入式系統(tǒng)的
2、結構、現(xiàn)狀以及發(fā)展趨勢,然后解釋了中斷和中斷嵌套優(yōu)先級的概念,重點介紹了ARM Cortex-M0的結構特點,總結了M0異常和中斷的特點,并對M0的中斷優(yōu)先級、嵌套向量中斷控制器(NVIC)和ARM Cortex微控制器軟件接口標準(CMSIS)作說明,最后在ALTERA DE2-115上用按鍵邊沿觸發(fā)中斷,通過觀察LED的閃爍狀態(tài)來驗證編寫的中斷控制程序。關鍵詞: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 研究內容11.3 研究成果11.4 論文結構22 嵌入式系統(tǒng)32.1 嵌入式系統(tǒng)簡介32.2 嵌入式系統(tǒng)的組成與分類42.3 常見嵌入式處理器的體系結構52.4 嵌入式處理器的發(fā)展趨勢63 中斷83.1 中斷的定義83.2 中斷源93.3 中斷分類93.4 中斷應具有的功能103.5 中斷嵌套與優(yōu)先級
7、103.5.1 中斷優(yōu)先級103.5.2 中斷嵌套113.6 中斷控制方式的優(yōu)點124 ARM Cortex-M0的中斷134.1 ARM Cortex-M0簡介134.2 ARM Cortex-M0總線架構134.3 異常處理模型144.3.1 異常狀態(tài)144.3.2 異常類型144.3.3 異常處理154.3.4 異常向量表154.3.5 異常優(yōu)先級164.3.6 異常處理的進入與返回174.3.7 Cortex-M0異常處理機制204.4 嵌套向量中斷控制器224.4.1 異常模式和系統(tǒng)中斷映射234.4.2 操作描述254.4.3 Cortex-M0中斷的特點274.5 CMSIS軟件
8、接口標準284.5.1 CMSIS標準的軟件架構294.5.2 CMSIS規(guī)范305 實驗335.1 控制要求335.2 實驗準備335.2.1 Keil uVision4簡介335.2.2 ALTERA DE2-115簡介335.3 程序流程圖355.4 程序代碼及分析355.5 實驗結果36結 論37參考文獻38致 謝39附 錄40IV1 緒論1.1 研究背景隨著半導體行業(yè)進入深亞微米乃至納米時代,在單一集成電路芯片上就可以實現(xiàn)一個復雜的電路系統(tǒng),即SoC系統(tǒng)。隨著人們對消費電子產品的多功能、智能化的要求越來越高,SoC芯片被大量使用,而微處理器是SoC系統(tǒng)的核心。縱觀嵌入式微處理器的發(fā)展
9、歷史,從高端微控制器領域到低端微控制器領域,人們對低成本、低功耗、高性能的追求似乎永無止境。ARM 公司推出了低成本、低功耗、高性能的Cortex-M系列產品,其中于2009年初推出了Cortex-M0 處理器,這是市場上現(xiàn)有的除Cortex-M0+ 外尺寸最小、能耗最低、最節(jié)能的ARM 處理器。該處理器能耗非常低、門數(shù)量少、代碼占用空間小,能以8位器的價位獲得32位處理器的性能,將逐步取代現(xiàn)有市場中的8051微控制器。1.2 研究內容ARM Cortex-M0處理器采用獨特的中斷控制系統(tǒng),能夠有效加速中斷響應過程。通過對M0處理器的中斷控制系統(tǒng)的研究,了解主流的嵌入式微處理器及其主流架構,掌
10、握基本的微處理器中斷處理流程,了解M0中斷控制系統(tǒng),并針對M0微處理器編寫實例程序,使用keil軟件仿真器仿真驗證M0的中斷控制過程。本次設計需要有單片機原理和C語言基礎,自行查閱Cortex-M0的有關資料,了解M0中斷控制系統(tǒng),在此理論基礎上,用M0的中斷控制系統(tǒng)去控制LED的閃爍狀態(tài),具體來說就是:當按下電源開關后,LED開始慢閃,當按下按鍵后,LED進入快閃狀態(tài),當松開后,LED恢復慢閃,但是當按鍵按下去和松開的時間間隔小于200ms時,NVIC禁止中斷,LED保持常亮。編寫相應的程序代碼,用keil uvision4編譯代碼并在ALTERA DE2-115上進行中斷控制實驗。實驗結果
11、應符合中斷控制系統(tǒng)控制要求,體現(xiàn)出M0中斷控制的特點。1.3 研究成果在ARM Cortex-M0中斷控制系統(tǒng)的設計中,了解基本的微處理器中斷處理流程,重點是掌握ARM Cortex-M0中斷控制系統(tǒng),對Cortex-M0處理器的搶占、末尾連鎖、遲到等加速中斷響應的技術作細致的了解,并對比所學過的51單片機的中斷控制過程,充分的體會到M0能夠有效加速中斷響應過程的特點。1.4 論文結構第二章講述了嵌入式系統(tǒng)的概念、結構及應用領域,嵌入式微處理器分類、主流的體系結構和未來發(fā)展趨勢,并介紹了當前主流的嵌入式操作系統(tǒng)。第三章簡要的闡述了計算機技術上中斷的概念、類型和作用,同時也介紹了中斷嵌套優(yōu)先級的
12、概念。第四章介紹ARM Cortex-M0的中斷,首先簡單介紹了M0的結構特點,其次講解了M0的異常處理模型,另起一節(jié)講解了嵌套向量中斷控制器 (NVIC),并在此總結了M0中斷的特點,最后介紹了CMSIS軟件接口標準。第五章為實驗,按照控制要求進行硬、軟件的設計,繪制程序流程圖,編寫程序代碼,并記錄下實驗結果,并對其進行分析。382 嵌入式系統(tǒng)2.1 嵌入式系統(tǒng)簡介嵌入式系統(tǒng)是將計算機的硬件或是軟件嵌入其他機、電設備或應用系統(tǒng)中去,所構成了一種新的系統(tǒng),即嵌入式系統(tǒng)。是以應用為中心,以計算機技術為基礎,采用可裁剪軟硬件,適用于對功能、可靠性、成本、體積、功耗等有嚴格要求的專用計算機系統(tǒng),用于
13、實現(xiàn)對其他設備的控制、監(jiān)視或管理等功能。嵌入式系統(tǒng)具有系統(tǒng)內核小、專用性強、系統(tǒng)精簡、高實時性的特征1。由于嵌入式系統(tǒng)具有體積小、性能好、功耗低、可靠性高以及面向應用的突出特點,因此嵌入式系統(tǒng)已被廣泛應用于軍事、國防、電子信息、家電、網絡通信、工業(yè)控制等領域。嵌入式系統(tǒng)的應用前景是非常廣闊的,IC 卡、手持電腦、智能手機、車載GPS、數(shù)字電視機頂盒,人們在生活中無時無處不接觸到嵌入式產品,尤其是嵌入式無線網絡產品的出現(xiàn),使嵌入式產品和我們的生活緊密相連2。軍事電子信息家電嵌入式應用工業(yè)設備智能玩具智能儀表通訊設備汽車電子移動設備網絡設備電子商務網 絡圖 嵌入式系統(tǒng)的應用領域工業(yè)控制消費電子軍事
14、國防網絡其他 圖2.1 嵌入式系統(tǒng)的應用領域嵌入式系統(tǒng)可以說無處不在,無所不在,有著廣闊的發(fā)展前景,也充滿了機遇和挑戰(zhàn)3。 2.2 嵌入式系統(tǒng)的組成與分類嵌入式系統(tǒng)一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統(tǒng)(可選),以及用戶應用軟件系統(tǒng)等四個部分組成4。嵌入式系統(tǒng)結構如圖2.2所示。嵌入式應用軟件系統(tǒng)嵌入式操作系統(tǒng)嵌入式處理器為核心的硬件平臺應用系統(tǒng)的I/O圖2.2 嵌入式系統(tǒng)結構嵌入式系統(tǒng)由嵌入式硬件與嵌入式軟件組成。嵌入式硬件以芯片、模板、組件、控制器形式埋藏于設備內部。嵌入式軟件是實時多任務操作系統(tǒng)和各種專用軟件,一般固化在ROM或閃存中。嵌入式系統(tǒng)軟硬兼施,融為一體,成為產品,
15、但在開發(fā)過程中需要一些開發(fā)工具進行輔助開發(fā)。如圖2.3所示。功能層應用程序軟件層文件系統(tǒng)圖形用戶接口任務管理實時操作系統(tǒng)(RTOS)中間 層BSP/HAL硬件抽象層/板極支持包硬件層D/A嵌入式微處理器通用接口A/DROMI/OSDRAM人機交換接口圖2.3 嵌入式系統(tǒng)的整體架構嵌入式處理器毫無疑問是嵌入式系統(tǒng)的核心部分,其直接關系到整個嵌入式系統(tǒng)的性能。通常情況下嵌入式處理器被認為是對嵌入式系統(tǒng)中運算和控制核心器件總的稱謂,但如果要仔細劃分的話,大體上可以將其分為四大類,即嵌入式微處理器、嵌入式微控制器、嵌入式數(shù)字信號處理器、系統(tǒng)級芯片。 嵌入式微處理器:嵌入式微處理器(Embedded M
16、icroprocessor Unit,簡稱MPU)的基礎是通用計算機中的CPU。在應用中將微處理器裝配在專門設計的電路板上,只保留和嵌入式應用有關的母板功能,這樣可以大幅度減小系統(tǒng)體積和功耗。為了滿足嵌入式應用的特殊要求,嵌入式微處理器雖然在功能上和標準微處理器基本是一樣的,但在工作溫度、抗電磁干擾、可靠性等方面一般都做了各種增強。 嵌入式微控制器:嵌入式微控制器(Microcontroller Unit,簡稱MCU,也稱單片機)一般以某一種微處理器內核為核心,芯片內部集成ROM、RAM、總線、總線邏輯、定時計數(shù)器、I/O、串行口等各種必要功能和外設。為適應不同的應用需求,產品的處理器內核都是
17、一樣的,不同的是存儲器和外設的配置及封裝。和嵌入式微處理器相比,微控制器的最大特點是單片化,體積大大減小,從而使功耗和成本下降、可靠性提高。 嵌入式數(shù)字信號處理器:嵌入式數(shù)字信號處理器(Embedded Digital Signal Processor,簡稱DSP)對系統(tǒng)結構和指令進行了特殊設計,使其適合于執(zhí)行DSP算法,編譯效率較高,指令執(zhí)行速度也較高。在數(shù)字濾波、FFT、譜分析等方面,DSP算法正在大量進入嵌入式領域,DSP應用正從在通用單片機中以普通指令實現(xiàn)DSP 功能,過渡到采用嵌入式DSP 處理器。 系統(tǒng)級芯片:系統(tǒng)級芯片(System On Chip,簡稱SOC,也稱片上系統(tǒng))是一
18、個有專用目標的集成電路,其中包含完整系統(tǒng),并有嵌入式軟件的全部內容。在SOC中通常將一個以上MPU和DSP,以及RAM、ROM、Cache、時鐘電路、定時器、中斷控制器、I/O端口、ADC、DAC等電路集成到一塊芯片中,同時可以由外部對芯片進行編程。應用SOC可以使系統(tǒng)電路板變得很簡潔,起到減小體積、降低功耗、提高可靠性的作用。2.3 常見嵌入式處理器的體系結構各種嵌入式處理器層出不窮,嵌入式處理器市場呈現(xiàn)出百花齊放的景象。目前常用的嵌入式處理器的主要結構歸結起來有:8051體系結構、ARM體系結構、MIPS體系結構、PowerPC、DSP、x86 等2。 8051體系結構:8051 單片機最
19、早由Intel公司推出。它在一塊超大規(guī)模集成電路芯片上同時集成了CPU、ROM、RAM以及TIMER、COUNTER 等部件,具有64KB的尋址能力。由于某些原因,8051在國內的使用非常普遍,但總的來說8051因其微處理器性能落后,仍然是一款低端產品。 ARM體系結構:ARM處理器遍及工業(yè)控制、消費類電子產品、通信系統(tǒng)、網絡系統(tǒng)、無線系統(tǒng)等各類產品市場,基于ARM技術的處理器應用約占據了32位RISC微處理器75%以上的市場。目前市面上常見的ARM處理器架構,可分為ARM7、ARM9、ARM11和Cortex系列。IPhone、NOKIA、HTC 等智能手機中的微處理器,就是由高通和德州儀器
20、授權生產的ARM處理器。 MIPS體系結構:MIPS是美國歷史悠久的RISC處理器體系,分為32-bit以及64-bit兩大家族,以技術授權作為主要營利模式。MIPS除了在手機中應用的比例極小外,其在一般數(shù)字消費、網絡語音、個人娛樂、通訊、與商務應用市場有著相當不錯的成績,不過近年來因為其它IP授權公司的興起,其占有比率稍有衰退。MIPS應用最為廣泛的應屬家庭視聽電器(包含機頂盒)、網通產品以及汽車電子方面。 PowerPC體系結構:PowerPC是早期Motorola和IBM聯(lián)合為Apple的MAC機開發(fā)的CPU芯片,PowerPC的體系結構也是RISC,有200多條定長32位的指令,通常只
21、執(zhí)行一個單一的操作(比如將內存加載到寄存器,或者將寄存器數(shù)據存儲到內存),同時支持字節(jié)(8位)、半字(16位)、字(32位)和雙字(64位)數(shù)據類型。 DSP體系結構:DSP是一種專用微處理器,主要對數(shù)字信號進行實時處理,以得到相應的處理結果。DSP 在存儲容量和運算速度上都很高,成為語音處理、圖像硬件處理技術的基礎,同時在高端的工業(yè)控制方面也得到廣泛應用,如空間矢量PWM控制系統(tǒng),電機的DSP控制系統(tǒng)等。 x86體系結構:x86處理器應用在嵌入式系統(tǒng)的歷史相當悠久,但其普遍都有功耗過高且芯片數(shù)量龐大的缺點,因而不適合應用在要求精簡省電的嵌入式架構中。可是在有些對于能耗控制要求不高的領域,如工
22、控電腦產業(yè)中,可以看到許多x86處理器仍然在被使用。同時Inter最新的嵌入式處理器Atom系列也是兼容x86結構的5。2.4 嵌入式處理器的發(fā)展趨勢 嵌入式處理器性能的提高。嵌入式處理器給人的第一感覺就是穩(wěn)定、功耗低、性能差。實際上嵌入式處理器確實需要有很好的穩(wěn)定性,較低的功耗,但這并不表明嵌入式處理器不需要高性能。事實上對于嵌入式處理器性能的追求從來就沒有停止過,尤其在消費類電子產品中,嵌入式處理器的性能往往對產品具有決定性的影響。未來對于嵌入式處理器性能的追求肯定也不會停止,更好的處理器設計和更先進的制造工藝都將被運用進來,使嵌入式處理器的性能產生巨大的提升。 更高的集成度和更豐富的功能
23、。嵌入式處理器的集成度將不斷提高,越來越多的功能將被集成到處理器當中。如內存控制器已經被普遍集成到處理器當中,未來USB 控制器、網絡控制器,甚至是圖形顯示功能都可能被集成到處理器當中。 更低的功耗和更小的體積。嵌入式系統(tǒng)因其工作環(huán)境的限制,往往決定了其體積必須小巧,這就要求其核心部分嵌入式處理器也必須在性能保證的情況下盡可能的小。同時,嵌入式系統(tǒng)的能耗也必須很低,有的系統(tǒng)需要在一節(jié)電池供電的情況下使用幾個月,這就對嵌入式處理器的功耗提出了近乎苛刻的要求,而這些也正是推動嵌入式處理器發(fā)展的動力。 嵌入式處理器中將會實現(xiàn)CPU和GPU的融合。CPU和GPU的融合并不是把一個CPU核心和一個GPU
24、核心簡單的集成到一塊芯片當中。其還需要一套適合的調度算法,融合CPU強大的處理能力和GPU強大的運算能力,使之可以協(xié)同工作2。目前,AMD已經在通用處理器上實現(xiàn)了上述功能,而其嵌入式產品APU- C系列也開始出現(xiàn)在市場上,并被運用在平板電腦等領域,帶來了性能的巨大提升,由此可見嵌入式處理器中CPU和GPU的融合是未來發(fā)展的必然趨勢15。3 中斷3.1 中斷的定義中斷是指CPU正常執(zhí)行程序被某種臨時發(fā)生的事件所打斷,當前程序暫時中止,處理器轉去處理所發(fā)生的事件,處理完畢在返回執(zhí)行暫時中止的程序。就是說,在當前程序中插進一段別的程序中斷服務程序或中斷處理程序。CPU執(zhí)行現(xiàn)行的程序被中斷時的后繼指令
25、(下一條指令)的地址稱為斷點地址(簡稱斷點)。中斷時,CPU執(zhí)行程序過程中所處的狀態(tài)成為現(xiàn)場。中斷流程如圖3.1。正是有了中斷,外部設備才能主動的改變CPU正常執(zhí)行程序的順序。何時中斷,CPU預先并不知道,因此,中斷具有隨機性。由外部硬件引起的終端成為硬中斷。有主機內部產生,或由程序預先安排的中斷稱為軟中斷。通常,在接收到來自外圍硬件(相對于中央處理器和內存)的異步信號,或來自軟件的同步信號之后,處理器將會進行相應的硬件/軟件處理。發(fā)出這樣的信號稱為進行中斷請求(interrupt request,即IRQ)。硬件中斷導致處理器通過一個上下文切換(context switch)來保存執(zhí)行狀態(tài)(
26、以程序計數(shù)器和程序狀態(tài)字等寄存器信息為主);軟件中斷則通常作為CPU指令集中的一個指令,以可編程的方式直接指示這種上下文切換,并將處理導向一段中斷處理代碼。中斷在計算機多任務處理,尤其是即時系統(tǒng)中尤為有用10。CPU收到中斷信號中斷服務程序執(zhí)行結束,返回繼續(xù)執(zhí)行原來的程序正在運行的程序中斷返回中斷CPU中斷正在執(zhí)行的程序,轉到執(zhí)行中斷服務程序圖3.1 中斷處理過程 3.2 中斷源凡是能夠引起中斷原因或提出中斷請求的設備和異常故障均稱被稱為“中斷源”。有以下幾種: 外部設備請求中斷。一般的外部設備(如鍵盤、打印機和A / D轉換器等)在完成自身的操作后,向CPU發(fā)出中斷請求,要求CPU為他服務。
27、由計算機硬件異?;蚬收弦鸬闹袛啵卜Q為內部異常中斷。 故障強迫中斷。計算機在一些關鍵部位都設有故障自動檢測裝置。如運算溢出、存儲器讀出出錯、外部設備故障、電源掉電以及其他報警信號等,這些裝置的報警信號都能使CPU中斷,進行相應的中斷處理。 實時時鐘請求中斷。在控制中遇到定時檢測和控制,為此常采用一個外部時鐘電路(可編程)控制其時間間隔。需要定時時,CPU發(fā)出命令使時鐘電路開始工作,一旦到達規(guī)定時間,時鐘電路發(fā)出中斷請求,由CPU轉去完成檢測和控制工作。 數(shù)據通道中斷。數(shù)據通道中斷也稱直接存儲器存?。―MA)操作中斷,如磁盤、磁帶機或CRT等直接與存儲器交換數(shù)據所要求的中斷。 程序自愿中斷。C
28、PU執(zhí)行了特殊指令(自陷指令)或由硬件電路引起的中斷是程序自愿中斷,是指當用戶調試程序時,程序自愿中斷檢查中間結果或尋找錯誤所在而采用的檢查手段,如斷點中斷和單步中斷等6。3.3 中斷分類按中斷處理方式,中斷可分為以下幾類: 簡單中斷,即采用周期竊用的方法來執(zhí)行中斷服務,有時也稱數(shù)據通道或DMA。 程序中斷,它不是竊用中央處理機的周期來進行中斷處理,而是中止現(xiàn)行程序的執(zhí)行,轉去執(zhí)行中斷服務程序。按中斷產生的方式,中斷可分為: 自愿中斷,即通過自陷指令引起的中斷,或稱軟件中斷。 強迫中斷,這是一種隨機發(fā)生的實時中斷。按中斷產生的位置,中斷可分為: 外部中斷,或稱外部硬件實時中斷,它由發(fā)至CPU某
29、一引腳上的信號引起。 內部中斷,或稱軟件指令中斷,是為了處理程序運行過程中發(fā)生的一些意外情況或調試程序而提供的中斷。3.4 中斷應具有的功能中斷應具有以下功能: 實現(xiàn)中斷及返回。當某一中斷源發(fā)出申請時,CPU能決定是否響應這個中斷請求(當CPU在執(zhí)行更緊急、更重要的工作時,可以暫不響應中斷),若允許響應這個中斷請求,CPU必須在現(xiàn)行的指令執(zhí)行完成后,把斷點處的IP和CS值(即下一條應執(zhí)行的指令的地址)、各個寄存器的內容和標志位的狀態(tài)推入堆棧保留下來稱為保護斷點和現(xiàn)場。然后轉到需要處理的中斷源的服務(Interrupt Service Routine,即ISR)的入口,同時清除中斷請求觸發(fā)期。當
30、中斷處理完后,再恢復被保留下來的各個寄存器和標志位的狀態(tài)(稱為恢復現(xiàn)場),恢復IP和CS值(稱為恢復斷點),使CPU返回斷點,繼續(xù)執(zhí)行主程序。 實現(xiàn)優(yōu)先權排隊。在系統(tǒng)中通常有多個中斷源,會出現(xiàn)兩個或更多個中斷源同時提出中斷請求的情況,這樣就必須要設計者事先根據輕重緩急,給每個中斷源確定一個終端級別優(yōu)先權。當多個中斷源同時發(fā)出中斷申請時,CPU能找到優(yōu)先權級別最高的中斷源,響應它的中斷請求;在優(yōu)先權級別最高的中斷源處理完了以后,在相應級別較低的中斷源。 高級中斷源能中斷低級的中斷處理。當CPU響應某一中斷源的請求,在進行中斷處理時,若有優(yōu)先級別更高的中斷源發(fā)出中斷申請,則CPU要能中斷正在進行的
31、中斷服務程序;保留這個程序的斷點和現(xiàn)場(類似于子程序嵌套),響應高級中斷,在高級中斷處理完以后,再繼續(xù)進行被中斷的中斷服務程序。而當發(fā)出新的中斷申請的中斷源的優(yōu)先級別與正在處理的中斷源同級或更低時,則CPU就先不響應這個中斷申請,直至正在處理的中斷服務程序執(zhí)行完以后才去處理新的中斷申請。3.5 中斷嵌套與優(yōu)先級3.5.1 中斷優(yōu)先級為了管理眾多的中斷請求,需要按每個(類)中斷處理的急迫程度,對中斷進行分級管理,稱其為中斷優(yōu)先級。在有多個中斷請求時,總是響應與處理優(yōu)先級高的設備的中斷請求。中斷的優(yōu)先級有兩個:查詢優(yōu)先級和執(zhí)行優(yōu)先級。 中斷的查詢優(yōu)先級是不可以更改和設置的。這是一個中斷優(yōu)先權排隊的
32、問題。是指多個中斷源同時產生中斷信號時,中斷仲裁器選擇對哪個中斷源優(yōu)先處理的順序。而這與是否發(fā)生中斷服務程序的嵌套毫不相干。當CPU查詢各個中斷標志位的時候,會依照上述5個查詢優(yōu)先級順序依次查詢,當數(shù)個中斷同時請求的時候,會優(yōu)先查詢到高優(yōu)查詢先級的中斷標志位,但并不代表高查詢優(yōu)先級的中斷可以打斷已經并且正在執(zhí)行的低查詢優(yōu)先級的中斷服務。IP寄存器不做設置,上電復位后為00H的優(yōu)先級:外部中斷0>定時/計數(shù)器0 >外部中斷1 >定時/計數(shù)器1 >串行中斷 中斷的執(zhí)行優(yōu)先級就是你對IP寄存器的設置。在2個優(yōu)先級的情況下,某位為1,則相應的中斷源為高優(yōu)先級;為0,則為低優(yōu)先級
33、。關于中斷的優(yōu)先級有三條原則:1)CPU同時接收到幾個中斷時,首先響應優(yōu)先級最高的中斷請求;2)正在進行的中斷過程不能被新的同級或低行優(yōu)優(yōu)先級的中斷請求所中斷;3)正在進行的低行優(yōu)優(yōu)先級中斷服務,能被高行優(yōu)優(yōu)先級中斷請求中斷。若同一執(zhí)行優(yōu)先級中的中斷申請不止一個時,則有一個中斷優(yōu)先權排隊問題。同一執(zhí)行優(yōu)先級的中斷優(yōu)先權排隊,由中斷系統(tǒng)硬件確定的自然優(yōu)先級形成,優(yōu)先權自高到低的順序即:外部中斷0>定時/計數(shù)0>外部中斷1>定時/計數(shù)1>串行接口3.5.2 中斷嵌套當CPU正在處理優(yōu)先級較低的一個中斷,又來了優(yōu)先級更高的一個中斷請求,則CPU先停止低優(yōu)先級的中斷處理過程,去
34、響應優(yōu)先級更高的中斷請求,在優(yōu)先級更高的中斷處理完成之后,再繼續(xù)處理低優(yōu)先級的中斷,這種情況稱為中斷嵌套。中斷程序嵌套模型如圖3.2所示。中斷3服務程序中斷2服務程序中斷1服務程序中斷2服務程序中斷2服務程序主程序中斷1請求中斷2請求中斷3請求1m=1mn1+1n+1斷點斷點斷點IRET(中斷返回)IRET(中斷返回)IRET(中斷返回)圖3.2 中斷程序嵌套示意圖當一個中斷正在執(zhí)行的時候,如果事先設置了中斷優(yōu)先級寄存器IP,那么當一個更高優(yōu)先級的中斷到來的時候會發(fā)生中斷嵌套,如果沒有設置則不會發(fā)生任何嵌套;如果有同一個優(yōu)先級的中斷觸發(fā),它并不是在“不斷的申請”,而是將它相應的中斷標志位置即I
35、E寄存器的某位置位,當CPU執(zhí)行完當前中斷之后,按照查詢優(yōu)先級重新去查詢各個中斷標志位,進入相應中斷6 。3.6 中斷控制方式的優(yōu)點中斷是用以提高計算機工作效率、增強計算機功能的一項重要技術。如果計算機系統(tǒng)沒有中斷,則處理器與外部設備通信時,它必須在向該設備發(fā)出指令后進行忙等待(Busy waiting),反復輪詢該設備是否完成了動作并返回結果。這就造成了大量處理器周期被浪費。引入中斷以后,當處理器發(fā)出設備請求后就可以立即返回以處理其他任務,而當設備完成動作后,發(fā)送中斷信號給處理器,后者就可以再回過頭獲取處理結果。這樣,在設備進行處理的周期內,處理器可以執(zhí)行其他一些有意義的工作,而只付出一些很
36、小的、切換上下文所引發(fā)的時間代價。具體有以下好處: 同步操作。有了中斷就可以使CPU和外設同時工作。CPU在啟動外設工作后,就繼續(xù)執(zhí)行主程序,同時外設也在工作,當外設把數(shù)據準備好之后發(fā)出中斷請求,請求CPU中斷它的程序,執(zhí)行輸入或輸出(中斷處理),處理完成以后,CPU恢復執(zhí)行主程序,外設也繼續(xù)工作。并且有了中斷功能,CPU可以命令多個外設同時工作。這樣大大提高了CPU的利用率,也提高了輸入輸出的速度。 實現(xiàn)實時處理。當計算機用于實時控制時,中斷是一個十分重要的功能。現(xiàn)場的各個參數(shù)、信息,可在任何時間發(fā)出中斷申請,要求CPU處理;CPU則可以馬上響應(若中斷是開放的話)并加以處理。這樣的及時處理
37、在查詢的工作方式下是做不到的。 故障處理。計算機在運行的過程中,往往會出現(xiàn)事先預料不到的情況,或者出現(xiàn)一些故障如電源突跳、存儲出錯、運算溢出等。計算就可以利用終端系統(tǒng)自行處理,而不必停機或報告工作人員。中斷系統(tǒng)明顯的提高了計算機系統(tǒng)中信息處理的并行度和處理器的效率,改善了計算機系統(tǒng)的性能。它解決了CPU與各種慢速外部設備之間的速度匹配問題。中斷系統(tǒng)在故障檢測、實時處理與控制、分時系統(tǒng)、多級系統(tǒng)與通信、并行處理、人機交互中得到廣泛使用和不斷發(fā)展。4 ARM Cortex-M0的中斷4.1 ARM Cortex-M0簡介ARM公司于2009年推出了Cortex-M0微控制器,這是市場上現(xiàn)有的尺寸最
38、小、能耗最低、最節(jié)能的ARM微控制器。該微控制器能耗非常低、門數(shù)量少、代碼占用空間小,能保留8位微控制器的價位獲得32位微控制器的性能。超低門數(shù)還使其能夠用于模擬信號設備和混合信號設備及MCU應用中,可明顯降低系統(tǒng)成本,同時保留功能強大的Cortex-M3微控制器的工具和二進制兼容能力。該微控制器的推出把ARM的MCU路線圖拓展到了超低能耗MCU和SoC應用中,如醫(yī)療器械、電子測量、照明、智能控制、游戲設置、緊湊型電源、電源和馬達控制、精密模擬系統(tǒng)和IEEE 802.15.4(ZigBee)及Z-Wave系統(tǒng)等13。4.2 ARM Cortex-M0總線架構隨著深亞微米工藝技術日益成熟,集成電
39、路芯片的規(guī)模越來越大。數(shù)字IC從基于時序驅動的設計方法,發(fā)展到基于IP復用的設計方法,并在SOC設計中得到了廣泛應用。在基于IP復用的SoC的設計中,片上總線設計是最關鍵的問題。為此,業(yè)界出現(xiàn)了很多片上總線標準。其中,由ARM公司推出的AMBA片上總線受到了廣大IP開發(fā)商和SoC系統(tǒng)集成者的青睞,已成為一種流行的工業(yè)標準片上結構。AMBA規(guī)范主要包括了系統(tǒng)總線 (Advanced High performance Bus,簡稱AHB)和外圍總線(Advanced Peripheral Bus,簡稱APB) 7。Cortex-M0處理器Cortex-M0處理器核心內嵌向量中斷控制器(NVIC)可
40、選調試部件可選調試部件可選喚醒中斷控制器(WIC)斷點及觀測點單元斷點及觀測點單元中斷可選調試訪問接口(DAP)調試接口總線矩陣調試接口總線矩陣AHB總線接口SWD或JTAG調試接口圖4.1 Cortex-M0處理器架構Cortex-M0屬于ARMv6-M架構,包括1顆專為嵌入式應用而設計的ARM 核、緊耦合的可嵌套中斷處理器NVIC、可選的喚醒中斷控制器WIC, 對外提供了基于AMBA結構的AHB- lite總線和基于CoreSight技術的SWD或JTAG調試接口。Cortex-M0處理器的硬件實現(xiàn)包含多個可配置選項:中斷數(shù)量、WIC、睡眠模式和節(jié)能措施、存儲系統(tǒng)大小端模式、系統(tǒng)滴答時鐘等
41、,半導體廠商可以根據應用需要選擇合理的配置14。Cortex-M0處理器架構如圖4.1所示。4.3 異常處理模型4.3.1 異常狀態(tài) 未激活(Inactive) 異常沒有被激活也沒有被掛起。 掛起(Pending) 異常正等待被處理器服務。來自外設或軟件的中斷請求,能讓相應中斷變?yōu)閽炱馉顟B(tài)。 激活(Active) 異常正在被處理器服務,并且服務尚未結束。注意:一個異常處理能中斷另一個異常處理,在這種情況下,兩個異常都處于激活態(tài)。 激活且掛起(Active and pending) 異常正在被處理器服務時,又出現(xiàn)了來自同一異常源的異常。4.3.2 異常類型 Reset 復位由加電或熱復位引起,異
42、常模型把復位當作一個特殊形式的異常。當復位信號有效時,無論指令執(zhí)行到什么位置,處理器都停止當前的指令。復位信號失效之后,從復位異常規(guī)定的入口地址處開始執(zhí)行,按Thread模式工作。 NMI 不可屏蔽中斷可由外設引起或軟件觸發(fā),NMI是除Reset之外,最高優(yōu)先級的異常,NMI被永久允許,擁有固定的優(yōu)先級-2。NMI不能被:a.任何別的異常屏蔽或阻止;b.除復位之外的任何異常搶占。 HardFault 硬故障是指在正常情況或異常處理時出現(xiàn)錯誤(error)所引起的一種異常,硬故障有固定的優(yōu)先級-1,表明硬故障比任何一個可以配置優(yōu)先級的異常的優(yōu)先級都高。 SVCall 系統(tǒng)服務調用,利用SVC指令
43、調用系統(tǒng)服務。 PendSV 可掛起的系統(tǒng)服務請求,是一種中斷驅動的請求,用于面向系統(tǒng)級服務。在操作系統(tǒng)環(huán)境下,當沒有別的異常激活時,使用PendSV進行上下文切換。 SysTick 如果處理器實現(xiàn)系統(tǒng)滴答定時器,那么SysTick是由系統(tǒng)滴答定時器計數(shù)到0時所產生的一種異常。軟件也能產生SysTick異常,在操作系統(tǒng)環(huán)境下,處理器能使用這一異常作為系統(tǒng)滴答計時。 中斷(IRQ) 中斷是由外設或軟件請求而產生的異常,所有的中斷對指令的執(zhí)行是異步進行的。在計算機系統(tǒng)中,外設通過中斷與處理器通信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號,因此采用負數(shù)作為異常的編號,IPSR返回異常編號。如果處理器沒有系統(tǒng)滴答定時器,則異常15保留。IRQ中斷號是在處理器實現(xiàn)時定義的,范圍是1-3
45、2。未實現(xiàn)的IRQ異常編號被保留,例如,如果某處理器僅實現(xiàn)一個IRQ,則異常號17及以上的編號均被保留。增長步長為4。對于異步異常,除Reset外,處理器在異常被觸發(fā)到異常開始被處理的這段時間內,仍能繼續(xù)執(zhí)行指令。特權軟件可以禁止以上具有可配置優(yōu)先級的異常。4.3.3 異常處理 ISRs 中斷服務子程序處理IRQ中斷異常。 Faulthandler 故障處理程序處理硬故障。 系統(tǒng)處理程序 (Systemhandlers) 處理系統(tǒng)異常NMI,PendSV,SVCall,SysTick和HardFault。4.3.4 異常向量表異常向量表包含堆棧指針的復位值,以及起始地址。堆棧指針的復位值和起始
46、地址一起被稱為異常向量,用于所有異常處理。下圖列出了異常向量表中的異常向量的次序。每一個向量的最低位必須為1,表明異常處理是用Thumb代碼實現(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是具有負數(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í)行。當處理器在執(zhí)行一個異常處理時,如果有更高優(yōu)先級的異常發(fā)生,則該異常可以被搶占。如果發(fā)生的異常與正在執(zhí)行的異常具有相同的優(yōu)先級,則不管其異常號為多少,正在執(zhí)行的異常都不會被搶占,而新發(fā)生的異常的狀態(tài)變?yōu)閽炱稹?.3.6 異常處理的進入與返回 搶占(Preemption)。當處理器在執(zhí)行一個異常處理時,另一個異常處理可以搶占這個正在被執(zhí)行的異常處理,只要其優(yōu)先級比正在被處理的異常優(yōu)先級高。一個異常處理搶占另一個異常處理,被稱為異常嵌套。 返回(Return)。當沒有以下情況時,異常處理結束之后就異常返回:
49、1)沒有掛起的異常需要服務。2)所完成的異常處理不是一個遲到異常。處理器從堆棧彈出數(shù)據,現(xiàn)場恢復到中斷發(fā)生之前的狀態(tài)。 尾鏈(Tail-chaining)。該機制加速了異常服務。當一個異常處理剛好完成時,若此時有一個掛起的異常滿足進入執(zhí)行的條件,則從堆棧彈出數(shù)據的操作就跳過,直接轉到這個新的異常處理。 遲到(Late-arriving)。該機制加速搶占。當一個異常處理正在保存狀態(tài)時,如果出現(xiàn)了一個更高優(yōu)先級的異常,則處理器切換去執(zhí)行這個更高優(yōu)先級的異常,為新異常初始化預取向量。遲到異常并不影響向量的保存,因為兩個異常需要保存的狀態(tài)是一致的。在遲到異常返回時,正常的尾鏈規(guī)則依然有效。 異常進入。
50、有一個具有足夠高優(yōu)先級的掛起異常,以及以下條件之一,則可以進入異常:1)處理器處于Thread模式。2)新的異常比正在處理的異常具有更高的優(yōu)先級。這種情況下,新異常搶占正在執(zhí)行的異常。當一個異常搶占另一個異常時,將出現(xiàn)異常嵌套。足夠高優(yōu)先級的含義是,該異常比屏蔽寄存器的任一有限集的優(yōu)先級都高。而比有限集的優(yōu)先級低的異常就掛起,不執(zhí)行。當處理器處理一個異常時,除非該異常是一個尾鏈或遲到的異常,處理器把信息壓入當前堆棧,這一操作稱為入棧,而這個8字的數(shù)據結構被稱為一個堆棧幀,堆棧幀包含如下圖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中,因此被中斷程序能恢復現(xiàn)場。處理器從向量表中讀取異常處理程序的起始地址,當保護現(xiàn)場的入棧操作完成后,處理器開始執(zhí)行異常處理程序。與此同時,處理器會將一個EXC_RETURN值寫到LR寄存器,這能指明與堆棧信息幀相應的堆棧指針,以及進入異常之前處理器所
52、處的操作模式。如果在進入異常時沒有發(fā)生更高優(yōu)先級的異常,則處理器開始執(zhí)行該異常處理,并自動把該異常的狀態(tài)由掛起修改為激活。如果在進入異常時發(fā)生了另一個更高優(yōu)先級的異常,則處理器將執(zhí)行高優(yōu)先級的異常處理,先前的異常的掛起狀態(tài)保持不變,這屬于遲到異常的情況。 異常返回。當處理器處于Handler模式,且執(zhí)行以下之一指令將PC的值置為EXC_RETURN的值,則發(fā)生異常返回:1)執(zhí)行POP指令,加載PC寄存器。2)執(zhí)行BX指令(任何寄存器均可)。在異常進入時,處理器把EXC_RETURN的值保存到LR寄存器。處理器根據此數(shù)值來決定異常處理完成時的動作。EXC_RETURN值的31:4位是0xFFFF
53、FFF,當處理器加載的值與之匹配時,處理器將檢測到這不是一個正常的分支操作,而是異常結束。因此,處理器將開始異常返回操作。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異?;驅е骆i定(Lockup)。故障包含:1) 執(zhí)行一條SVC指令,該指令的優(yōu)先級高于或等于SVCall。2) 缺少調試器連接時,執(zhí)行BKPT指令。3) 在加載或存儲數(shù)據時,系統(tǒng)產生總線錯誤。4) 執(zhí)行XN存儲區(qū)的指令。執(zhí)行來自系統(tǒng)已產生總線故障的地址位置的指令。5) 取向量時系統(tǒng)產生總線錯誤。6) 執(zhí)行一條未定義的指令。7) T位已清為0,處理器不在Thumb狀態(tài)時執(zhí)行指令。8) 試圖讀取或保存數(shù)據到未對齊的地址。注意,只有Reset和NMI能搶占具有固定優(yōu)先級的HardFault異常。而HardFault異常則能搶占除Reset、NMI或另一個HardFault異常之外的所有異常6。 鎖定。以下這些情況處理器會進入鎖定狀態(tài):執(zhí)行NMI或HardFault異常處理時發(fā)生故障;或在使用MSP異常返回時,還沒有從堆?;謴蚉SR寄存器的值系統(tǒng)就產生總線錯誤。當處理器處于鎖定狀態(tài)時,不能執(zhí)行任何指令。處理器將保持鎖定狀態(tài)直到以下情況之一發(fā)生:1) 處理器
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024學校鍋爐工環(huán)境保護與節(jié)能減排合同范本3篇
- 自動打鈴器課程設計數(shù)電
- 漢川市汽車營銷課程設計
- 自動飛行系統(tǒng)課程設計
- 2024年裝表接電工(初級工)技能鑒定理論考試復習題庫(含答案)
- 2024年美術教案課件
- 童話課程設計封面
- 立式車床主軸箱課程設計
- 小班兔子繪本課程設計
- 金融投資行業(yè)顧問工作總結
- GA 1802.2-2022生物安全領域反恐怖防范要求第2部分:病原微生物菌(毒)種保藏中心
- 企業(yè)EHS風險管理基礎智慧樹知到答案章節(jié)測試2023年華東理工大學
- 健身俱樂部入場須知
- 井下機電安裝安全教育培訓試題及答案
- TZJXDC 002-2022 電動摩托車和電動輕便摩托車用閥控式鉛酸蓄電池
- GB/T 4744-2013紡織品防水性能的檢測和評價靜水壓法
- GB/T 337.1-2002工業(yè)硝酸濃硝酸
- 《解放戰(zhàn)爭》(共48張PPT)
- 放射工作人員法律法規(guī)及防護知識培訓考核試題附答案
- 勞動仲裁追加申請申請書(標準版)
- 西方法律思想史 課件
評論
0/150
提交評論