




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、天津電子信息職業(yè)技術學院嵌入式系統(tǒng)原理與應用課程報告論文名稱: SEP3203的中斷響應機制 課程代碼: 114232 姓 名: 甘琦 學 號: 48 專 業(yè): 物聯(lián)網(wǎng)應用技術 班 級: 物聯(lián)S14-1 完成時間: 2016 年 10 月 24 日 摘要1一、概述2二、SEP3203的中斷響應機制32.1中斷延時32.2 中斷過程3三、ARM核下的多中斷源處理方案3四、ARM7 的異常響應機制44.1異常分類44.2異常發(fā)生的硬件操作54.3異常返回地址64.4異常向量表84.5異常處理的返回11五、結語12參考文獻1413摘要現(xiàn)代嵌人式操作系統(tǒng)中,中斷處理技術是一項重要的技術。通過中斷技術,
2、使得處理器能夠和外設并行地工作,提高了CPU的執(zhí)行效率。首先分析了SEP3203的中斷響應機制,然后介紹了中斷向量表的軟件實現(xiàn),最后分析了異常發(fā)生的硬件操作以及處理返回。關鍵字:ARM,SEP3203,中斷,異常一、概述ARM(Advanced RISC Machines),既可以認為是一個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字。1991年ARM公司成立于英國劍橋,主要出售芯片設計技術的授權,作為知識產(chǎn)權供應商,本身不直接從事芯片生產(chǎn),靠轉讓設計許可由合作公司生產(chǎn)各具特色的芯片,世界各大半導體生產(chǎn)商從ARM公司購買其設計的ARM微處理器核,根據(jù)各自不同的應用領
3、域,加入適當?shù)耐鈬娐罚瑥亩纬勺约旱腁RM微處理器芯片進入市場。目前,采用ARM技術知識產(chǎn)權(IP)核的微處理器,即我們通常所說的ARM微處理器,已遍及工業(yè)控制、消費類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡系統(tǒng)、無線系統(tǒng)等各類產(chǎn)品市場,基于ARM技術的微處理器應用約占據(jù)了32位RISC微處理器75%以上的市場份額,ARM技術正在逐步滲入到我們生活的各個方面。SEP3203 處理器內嵌由英國ARM 公司提供的ARM7TDMI 處理器內核,全芯片可穩(wěn)定運行在75MHz。集成了支持黑白,灰度,彩色的LCD 控制器;多媒體加速模塊,用于提供多媒體處理定點矢量乘加的計算能力;支持低成本的NAND Flash 控制器
4、并可從其直接啟動;支持多種外存類型:SRAM,NOR Flash,SDRAM;支持實時時鐘(RTC);支持四通道的定時器和兩通道的PWM;支持用于連接觸摸屏通訊的SPI 協(xié)議;支持兩個UART 控制器,其中一個支持紅外傳輸;支持USB1.1 Device 控制器用于PC 與移動終端之間的高速信息傳輸;支持MMC 卡控制器,用戶可以擴展系統(tǒng)的存儲能力和外設功能;支持兼容AC97 協(xié)議的控制器,用于音頻文件的播放和錄制。SEP3203 處理器內嵌20KByte 零等待的靜態(tài)存儲器(SRAM),用于多媒體處理時的核心代碼與數(shù)據(jù)的存放,用戶也可以將操作系統(tǒng)的核心代碼或LCD 幀緩存存放在該處理器中,用
5、于提供更高的性能和更低的能量消耗; 6 通道DMA 控制器,為用戶提高了高速的數(shù)據(jù)傳輸通道。為了支持低成本的系統(tǒng)方案,SEP3203支持外部32 位/16 位數(shù)據(jù)總線,結合ARM 提供的Thumb 指令集,將大大降低系統(tǒng)成本和功耗,考慮到Nand Flash 的成本優(yōu)勢,SEP3203 處理器提供專用的Nand Flash 控制器,并支持系統(tǒng)直接從Nand Flash 啟動。SEP3203 處理器采用LQFP176 封裝形式。二、SEP3203的中斷響應機制2.1中斷延時從外部請求信號發(fā)出到取出對應的中斷服務程序(ISR)的第一條指令,這期間的間隔時間。2.2 中斷過程ARM 體系中通常在存儲
6、地址的低端固化了一個32 字節(jié)的硬件中斷向量表,用來指定各異常中斷及其處理程序的對應關系。當一個異常出現(xiàn)以后,ARM 微處理器會執(zhí)行以下幾步操作:1)保存處理器當前狀態(tài)、中斷屏蔽位以及各條件標志位;2)設置當前程序狀態(tài)寄存器CPSR中相應的位;3)將寄存器lr_mode設置成返回地址;4)將程序計數(shù)器(PC)值設置成該異常中斷的中斷向量地址,從而跳轉到相應的異常中斷處理程序處執(zhí)行。在接收到中斷請求以后,ARM 處理器內核會自動執(zhí)行以上四步,程序計數(shù)器PC總是跳轉到相應的固定地址。三、ARM核下的多中斷源處理方案ARM核只有一個常規(guī)中斷引腳nIRQ,而在現(xiàn)代嵌入式系統(tǒng)中,中斷源可能多達幾十個為此
7、,在系統(tǒng)設計時,采用了二級中斷的方式來實現(xiàn)中斷控制。即由一個中斷控制器來處理來自不同中斷源的中斷信號,經(jīng)過判斷后將中斷信號送給ARM內核的中斷引腳。SEP3203內集成的中斷控制器支持32個普通中斷源,并給這32個普通中斷源分配了固定的優(yōu)先級。每個中斷源相應的可以配置為硬件中斷或軟件強制中斷。當硬件中斷或軟件強制中斷產(chǎn)生的時候,都可以產(chǎn)生mQ中斷信號。基于硬件的架構,軟件系統(tǒng)在實現(xiàn)中斷向量的初始化時要構建2級向量表,如圖所示。第一級為ARM核的異常向量表(普通向量表),第二級由具體CPU中斷控制器控制的異常向量表通常第二級向量表是IRQ異常處理向量表(特殊向量表)。BIrqdesc()Irqd
8、esc 0x1c 0x18 0x14 Irq3.actionIrq2.actionIrq1.action 0x10 0x0c 0x08 0x0 0x00 兩級中斷向量表四、ARM7 的異常響應機制 所謂異常就是正常的用戶程序被暫時中止,處理器就進入異常模式,例如響應一個來自外設的中斷,或者當前程序非法訪問內存地址都會進入相應異常模式。4.1異常分類(1)復位異常 當CPU 剛上電時或按下reset 重啟鍵之后進入該異常,該異常在管理模式下處理。(2)一般/快速中斷請求 CPU 和外部設備是分別獨立的硬件執(zhí)行單元,CPU 對全部設備進行管理和資源調度處理,CPU 要想知道外部設備的運行狀態(tài),要么
9、CPU 定時的去查看外部設備特定寄存器,要么讓外部設備在出現(xiàn)需要CPU 干涉處理時“打斷”CPU,讓它來處理外部設備的請求,毫無疑問第二種方式更合理,可以讓CPU“專心”去工作,這里的“打斷”操作就叫做中斷請求,根據(jù)請求的緊急情況,中斷請求分一般中斷和快速中斷,快速中斷具有最高中斷優(yōu)先級和最小的中斷延遲,通常用于處理高速數(shù)據(jù)傳輸及通道的中數(shù)據(jù)恢復處理,如DMA 等,絕大部分外設使用一般中斷請求。(3)預取指令中止異常 該異常發(fā)生在CPU 流水線取指階段,如果目標指令地址是非法地址進入該異常,該異常在中止異常模式下處理。(4)未定義指令異常 該異常發(fā)生在流水線技術里的譯碼階段,如果當前指令不能被
10、識別為有效指令,產(chǎn)生未定義指令異常,該異常在未定義異常模式下處理。(5)軟件中斷指令(SWI)異常 該異常是應用程序自己調用時產(chǎn)生的,用于用戶程序申請訪問硬件資源時,例如:printf()打印函數(shù),要將用戶數(shù)據(jù)打印到顯示器上,用戶程序要想實現(xiàn)打印必須申請使用顯示器,而用戶程序又沒有外設硬件的使用權,只能通過使用軟件中斷指令切換到內核態(tài),通過操作系統(tǒng)內核代碼來訪問外設硬件,內核態(tài)是工作在特權模式下,操作系統(tǒng)在特權模式下完成將用戶數(shù)據(jù)打印到顯示器上。這樣做的目的無非是為了保護操作系統(tǒng)的安全和硬件資源的合理使用,該異常在管理模式下處理。(6)數(shù)據(jù)中止訪問異常 該異常發(fā)生在要訪問數(shù)據(jù)地址不存在或者為非
11、法地址時,該異常在中止異常模式下處理。4.2異常發(fā)生的硬件操作在異常發(fā)生后,ARM 內核會自動做以下工作:(1)保存執(zhí)行狀態(tài) 當前程序的執(zhí)行狀態(tài)是保存在CPSR 里面的,異常發(fā)生時,要保存當前的CPSR 里的執(zhí)行狀態(tài)到異常模式里的SPSR 里,將來異常返回時,恢復回CPSR,恢復執(zhí)行狀態(tài)。(2)模式切換 硬件自動根據(jù)當前的異常類型,將異常碼寫入CPSR 里的M4:0模式位,這樣CPU 就進入了對應異常模式下。不管是在ARM 狀態(tài)下還是在THUMB 狀態(tài)下發(fā)生異常,都會自動切換到ARM 狀態(tài)下進行異常的處理,這是由硬件自動完成的(當一個異常發(fā)生時,ARM 處理器總是切換到ARM 狀態(tài)(即非Thu
12、mb 狀態(tài))。Thumb 指令集沒有包含進行異常處理時需要的一些指令,因此在異常中斷時,還是要使用ARM 指令。),將CPSR5 設置為0。同時,CPU 會關閉中斷IRQ(設置CPSR 寄存器I 位),防止中斷進入,如果當前是快速中斷FIQ異常,關閉快速中斷(設置CPSR 寄存器F 位)。(3)保存返回地址 當前程序被異常打斷,切換到異常處理程序里,異常處理完之后,返回當前被打斷模式繼續(xù)執(zhí)行,因此必須要保存當前執(zhí)行指令的下一條指令的地址到LR,由于異常模式不同以及ARM 內核采用流水線技術,異常處理程序里要根據(jù)異常模式計算返回地址。(4)跳入異常向量表 該操作是CPU 硬件自動完成的,當異常發(fā)
13、生時,CPU 強制將PC的值修改為一個固定內存地址,這個固定地址叫做異常向量。4.3異常返回地址 一條指令的執(zhí)行分為:取指,譯碼,執(zhí)行三個主要階段, CPU 由于使用流水線技術,造成當前執(zhí)行指令的地址應該是PC 8(32 位機一條指令四個字節(jié)),那么執(zhí)行指令的下條指令應該是PC 4。在異常發(fā)生時,CPU 自動會將將PC 4 的值保存到LR 里,但是值是否正確還要看異常類型才能決定。其中,各模式的返回地址說明如下:(a)一般/快速中斷請求: 快速中斷請求和一般中斷請求返回處理是一樣的。通常處理器執(zhí)行完當前指令后,查詢FIQ/IRQ 中斷引腳,并查看是否允許FIQ/IRQ 中斷,如果某個中斷引腳有
14、效,并且系統(tǒng)允許該中斷產(chǎn)生,處理器將產(chǎn)生FIQ/IRQ 異常中斷,當FIQ/IRQ 異常中斷產(chǎn)生時,程序計數(shù)器PC的值已經(jīng)更新,它指向當前指令后面第3 條指令(對于ARM 指令,它指向當前指令地址加12 字節(jié)的位置;對于Thumb 指令,它指向當前指令地址加6 字節(jié)的位置),當FIQ/IRQ異常中斷產(chǎn)生時,處理器將值(pc-4)保存到FIQ/IRQ 異常模式下的寄存器LR中,它指向當前指令之后的第2 條指令,因此正確返回地址可以通過下面指令算出:SUBS PC,LR,#4 ; 一般中斷SUBS PC,LR,#4 ; 快速中斷(b)預取指中止異常: 在指令預取時,如果目標地址是非法的,該指令被標
15、記成有問題的指令,這時,流水線上該指令之前的指令繼續(xù)執(zhí)行,當執(zhí)行到該被標記成有問題的指令時,處理器產(chǎn)生指令預取中止異常中斷。發(fā)生指令預取異常中斷時,程序要返回到該有問題的指令處,重新讀取并執(zhí)行該指令,因此指令預取中止異常中斷應該返回到產(chǎn)生該指令預取中止異常中斷的指令處,而不是當前指令的下一條指令。指令預取中止異常中斷由當前執(zhí)行的指令在ALU 里執(zhí)行時產(chǎn)生,當指令預取中止異常中斷發(fā)生時,程序計數(shù)器pc 的值還未更新,它指向當前指令后面第2 條指令(對于ARM指令,它指向當前指令地址加8 字節(jié)的位置;對于Thumb 指令,它指向當前指令地址加4字節(jié)的位置)。此時處理器將值(pc-4)保存到lr中,
16、它指向當前指令的下一條指令,所以返回操作可以通過下面指令實現(xiàn):SUBS PC,LR,#4未定義指令異常中斷由當前執(zhí)行的指令在ALU 里執(zhí)行時產(chǎn)生,當未定義指令異常中斷產(chǎn)生時,程序計數(shù)器pc 的值還未更新,它指向當前指令后面第2 條指令(對于ARM 指令,它指向當前指令地址加8 字節(jié)的位置;對于Thumb 指令,它指向當前指令地址加4 字節(jié)的位置),當未定義指令異常中斷發(fā)生時,處理器將值(pc-4)保存到lr_und 中,此時(pc-4)指向當前指令的下一條指令,所以從未定義指令異常中斷返回可以通過如下指令來實現(xiàn):MOV PC, LR(d)軟中斷指令(SWI)異常: SWI 異常中斷和未定義異常
17、中斷指令一樣,也是由當前執(zhí)行的指令在ALU 里執(zhí)行時產(chǎn)生,當SWI 指令執(zhí)行時,pc 的值還未更新,它指向當前指令后面第2 條指令(對于ARM指令,它指向當前指令地址加8 字節(jié)的位置;對于Thumb 指令,它指向當前指令地址加4字節(jié)的位置),當未定義指令異常中斷發(fā)生時,處理器將值(pc-4)保存到lr中,此時(pc-4)指向當前指令的下一條指令,所以從SWI 異常中斷處理返回的實現(xiàn)方法與從未定義指令異常中斷處理返回一樣:MOV PC, LR(e)數(shù)據(jù)中止異常: 發(fā)生數(shù)據(jù)訪問異常中斷時,程序要返回到該有問題的指令處,重新訪問該數(shù)據(jù),因此數(shù)據(jù)訪問異常中斷應該返回到產(chǎn)生該數(shù)據(jù)訪問中止異常中斷的指令處
18、,而不是當前指令的下一條指令。數(shù)據(jù)訪問異常中斷由當前執(zhí)行的指令在ALU 里執(zhí)行時產(chǎn)生,當數(shù)據(jù)訪問異常中斷發(fā)生時,程序計數(shù)器pc 的值已經(jīng)更新,它指向當前指令后面第3 條指令(對于ARM 指令,它指向當前指令地址加12 字節(jié)的位置;對于Thumb 指令,它指向當前指令地址加6 字節(jié)的位置)。此時處理器將值(pc-4)保存到lr中,它指向當前指令后面第2 條指令,所以返回操作可以通過下面指令實現(xiàn):SUBS PC, LR, #8上述每一種異常發(fā)生時,其返回地址都要根據(jù)具體異常類型進行重新修復返回地址,再次強調下,被打斷程序的返回地址保存在對應異常模式下的LR里。4.4異常向量表異常向量表是一段特定內
19、存地址空間,每種ARM 異常對應一個字長空間(4Bytes),正好是一條32 位指令長度,當異常發(fā)生時,CPU 強制將PC 的值設置為當前異常對應的固定內存地址。異常向量表的初始化Trap_init()通過調用entry_amvS中的(一一trap_init)函數(shù)段由匯編語言編寫的一段代碼。用于在系統(tǒng)的0x00地址處安裝的異常向量表,然后在200處建立各個異常(如irq,fiq,data,undefined等)的分類處理路線,以建立起完整的異常處理表。中斷發(fā)生時處理器的動作如下??截怌PSR到SPSR一;設置適當?shù)腃PSR位:i.改變處理器狀態(tài)進入ARM狀態(tài) ii改變處理器模式進入相應的異常模
20、式 iii.設置中斷禁止位禁止相應中斷;更新LR一;設置PC到相應的異常向量。具體代碼實現(xiàn)如下: 無論在何種工作模式發(fā)生異常,系統(tǒng)都將切換到SVC模式下處理主要的響應流程為:保護現(xiàn)場,獲得中斷號(get_irqnr_and_base),強制切換到(SVC)模式,再執(zhí)行相應的處理獲礙中斷號的處理函數(shù)如下:其中INTCFNLSTS是Garfield SEP3203的中斷控制器中的最終狀態(tài)寄存器,在linux-24xincludeasm-armnommuarch-gfdhardwareh中定義。獲得中斷控制器中的最終狀態(tài)寄存器的值后,采用移位判斷法來確定最終的中號。在DO一IRQ中,根據(jù)中斷號獲得相
21、應處理函數(shù)的入口指針地址,執(zhí)行中斷處理。中斷處理完成后,進行一次調度,如果沒有其它進程需要執(zhí)行,則系統(tǒng)返回中斷前的用戶現(xiàn)場。(2)中斷請求隊列的初始化 startkernel通過執(zhí)行上面的兩個函數(shù)來建立兩級中斷向量表但第二級向量表是一堆空的數(shù)組結構,每個中斷服務隊列都是空的。雖然從中斷源的硬件以及中斷控制器的角度來看,似乎已經(jīng)得到服務了,但是從邏輯角度、功能角度來看,他并沒有執(zhí)行到具體的中斷服務例程,沒有得到具體的中斷服務。具體設備初始化時會將其中斷處理程序通過request_irq()向系統(tǒng)”登記”,調用setup_arm_irq()掛入某個中斷請求隊列,參數(shù)irq是中斷請求號,對應于中斷控
22、制器為每個中斷源配置的中斷號。中斷處理例程結束時通過free-irq來釋放斷。 (3)ARM 的例外優(yōu)先級從高到低依次為:ResetData abortFIQIRQPrefetch abortUndefined instruction/SWI 跳入異常向量表操作是異常發(fā)生時,硬件自動完成的,剩下的異常處理任務完全交給了程序員。由上表可知,異常向量是一個固定的內存地址,我們可以通過向該地址處寫一條跳轉指令,讓它跳向我們自己定義的異常處理程序的入口,就可以完成異常處理了。正是由于異常向量表的存在,才讓硬件異常處理和程序員自定義處理程序有機聯(lián)系起來。異常向量表里0x00000000 地址處是rese
23、t 復位異常,之所以它為0 地址,是因為CPU在上電時自動從0 地址處加載指令,由此可見將復位異常安裝在此地址處也是前后接合起來設計的,其后面分別是其余7 種異常向量,每種異常向量都占有四個字節(jié),正好是一條指令的大小,最后一個異常是快速中斷異常,將其安裝在此也有它的意義,在0x0000001C 地址處可以直接存放快速中斷的處理程序,不用設置跳轉指令,這樣可以節(jié)省一個時鐘周期,加快快速中斷處理時間。我們可以通過簡單的使用下面的指令來安裝異常向量表:b reset ;跳入reset 處理程序b HandleUndef ;跳入未定義處理程序b HandSWI ;跳入軟中斷處理程序b HandPref
24、etchAbt ;跳入預取指令處理程序b HandDataAbt ;跳入數(shù)據(jù)訪問中止處理程序b HandNoUsed ;跳入未使用程序b HandleIRQ ;跳入中斷處理程序b HandleFIQ ;跳入快速中斷處理程序 通常安裝完異常向量表,跳到我們自己定義的處理程序入口,這時我們還沒有保存被打斷程序的現(xiàn)場,因此在異常處理程序的入口里先要保存打斷程序現(xiàn)場。 保存執(zhí)行現(xiàn)場:異常處理程序最開始,要保存被打斷程序的執(zhí)行現(xiàn)場,程序的執(zhí)行現(xiàn)場無非就是保存當前操作寄存器里的數(shù)據(jù),可以通過下面的棧操作指令實現(xiàn)保存現(xiàn)場:STMFD SP, R0 R12, LR需要注意的是,在跳轉到異常處理程序入口時,已經(jīng)
25、切換到對應異常模式下了,因此這里的SP 是異常模式下的SP了,所以被打斷程序現(xiàn)場(寄存器數(shù)據(jù))是保存在異常模式下的棧里,上述指令將R0R12 全部都保存到了異常模式棧,最后將修改完的被打斷程序返回地址入棧保存,之所以保存該返回地址就是將來可以通過類似:MOV PC, LR 的指令,返回用戶程序繼續(xù)執(zhí)行。異常發(fā)生后,要針對異常類型進行處理,因此,每種異常都有自己的異常處理程序,異常處理過程通過下節(jié)的系統(tǒng)中斷處理來進行分析。4.5異常處理的返回 異常處理完成之后,返回被打斷程序繼續(xù)執(zhí)行,具體操作如下:(1)恢復被打斷程序運行時寄存器數(shù)據(jù)(2)恢復程序運行時狀態(tài)CPSR(3)通過進入異常時保存的返回地址,返回到被打斷程序繼續(xù)執(zhí)行 異常發(fā)生后,進入異常處理程序時,將用戶程序寄存器R0R12 里的數(shù)據(jù)保存在了異常模式下棧里面,異常處理完返
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)考試題及答案
- 云南省保山隆陽區(qū)一中2024-2025學年高二化學第二學期期末調研試題含解析
- 云南省宣威市第十中學2025年化學高二下期末統(tǒng)考試題含解析
- 新疆博爾塔拉蒙古自治州第五師高級中學2025年化學高二下期末綜合測試模擬試題含解析
- 云南師大附中2024-2025學年數(shù)學高二下期末達標檢測試題含解析
- 重慶市永川區(qū)2025屆化學高二第二學期期末綜合測試模擬試題含解析
- 餐飲行業(yè)食品安全風險評估與防控合同范本
- 醫(yī)療機構床單被褥洗滌消毒承包合同
- 農(nóng)村集體代養(yǎng)牛只收益分成合同
- 餐飲行業(yè)投資股權收購及收益分配合同
- 《糖的變化(含練習)》參考課件
- 四川省南充市2023-2024學年七年級下學期7月期末英語試題
- 中山市大涌鎮(zhèn)招聘公辦中小學合同制教師筆試真題2022
- 食品安全體系FSSC22000-V6版標準要求及內審員培訓教材
- DZ∕T 0272-2015 礦產(chǎn)資源綜合利用技術指標及其計算方法(正式版)
- 生命科學簡史智慧樹知到期末考試答案章節(jié)答案2024年中國科學技術大學
- 2024土地代耕代種協(xié)議書
- 《水電工程巖爆風險評估技術規(guī)范》(NB-T 10143-2019)
- 預防術中低體溫Pdca 課件
- 胃癌診療指南(2022年版)
- 醫(yī)院物業(yè)人員交接方案
評論
0/150
提交評論