ARM 中斷異常處理

ARM 中斷異常處理

ID:37461387

大小:502.50 KB

頁數(shù):9頁

時間:2019-05-24

ARM 中斷異常處理_第1頁
ARM 中斷異常處理_第2頁
ARM 中斷異常處理_第3頁
ARM 中斷異常處理_第4頁
ARM 中斷異常處理_第5頁
資源描述:

《ARM 中斷異常處理》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。

1、s3c2410中斷異常處理???在進入正題之前,我想先把ARM920T的異常向量表(ExceptionVectors)做一個簡短的介紹。:]???ARM920T的異常向量表有兩種存放方式,一種是低端存放(從0x00000000處開始存放),另一種是高端存放(從0xfff000000處開始存放)。關于為什么要分兩種方式進行存放這點我將在介紹MMU的文章中進行說明,本文采用低端模式。ARM920T能處理有8個異常,他們分別是:Reset,Undefinedinstruction,SoftwareInterrupt,Abort(prefetch),Abort(data),Reserve

2、d,IRQ,F(xiàn)IQ???下面是某個采用低端模式的系統(tǒng)源碼片段:/*****************************************************************************_start:b???????Handle_Resetb???????HandleUndefb???????HandleSWIb???????HandlePrefetchAbortb???????HandleDataAbortb???????HandleNotUsedb???????HandleIRQb???????HandleFIQ…..…..othercodes

3、…...*****************************************************************************/上面這部分片段一般出現(xiàn)在一個名叫“head.s”的匯編文件的里,“b???????Handle_Reset”這條語句就是系統(tǒng)上電之后運行的第一條語句。也就是說這部分代碼的二進制碼必須位于內(nèi)存的最開始部分(這正是低端存放模式),因為上電后CPU會從SDRAM的0x00000000處取第一條指令并執(zhí)行。Address???????????????Instruct0x00000000:????????????????b???

4、????Handle_Reset0x00000004:????????????????b???????HandleUndef0x00000008:????????????????b???????HandleSWI0x0000000C:????????????????b???????HandlePrefetchAbort0x00000010:????????????????b???????HandleDataAbort0x00000014:????????????????b???????HandleNotUsed0x00000018:????????????????b???????

5、HandleIRQ0x0000001C:????????????????b???????HandleFIQ上面是該程序段在系統(tǒng)上電后加載到內(nèi)存后的分布情況,我們可以看到每條指令占用了4個字節(jié)。上電后,PC指針會跳轉(zhuǎn)到Handle_Reset處開始運行。以后系統(tǒng)每當有異常出現(xiàn),則CPU會根據(jù)異常號,從內(nèi)存的0x00000000處開始查表做相應的處理,比如系統(tǒng)觸發(fā)了一個IRQ異常,IRQ為第6號異常,則CPU將把PC指向0x00000018地址(4*6=24=0x00000018)處運行,該地址的指令是跳轉(zhuǎn)到“中斷異常服務例程”(HandleIRQ)處運行。以上就是我對異常向量表的一

6、個簡單介紹?,F(xiàn)在可以進入我們文章的主題“中斷異常處理”,s3c2410的中斷分快中斷(FIQ)和普通中斷(IRQ),我們討論的重點是普通中斷(IRQ)。s3c2410的中斷異常處理模塊總共由以下寄存器構(gòu)成SRCPND(SOURCEPENDINGREGISTER)INTMOD(INTERRUPTMODEREGISTER)INTMSK(INTERRUPTMASKREGISTER)PRIORITY(PRIORITYREGISTER)INTPND(INTERRUPTPENDINGREGISTER)INTOFFSET(INTERRUPTOFFSETREGISTER)SUBSRCPND(IN

7、TERRUPTSUBSOURCEPENDING)INTSUBMSK?(INTERRUPTSUBMASKREGISTER)下面我將講解每個寄存器在一個中斷處理流程中所扮演的角色SRCPND/SUBSRCPND這兩個寄存器在功能上是相同的,它們是中斷源引腳寄存器,在一個中斷異常處理流程中,中斷信號傳進中斷異常處理模塊后首先遇到的就是SRCPND/SUBSRCPND,這兩個寄存器的作用是用于標示出哪個中斷請求被觸發(fā)。SRCPND的有效位為32,SUBSRCPND的有效位為11,它們中的

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。