




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 計算機體系結構中,異常或者中斷是處理系統中突發事件的一種機制,幾乎所有的處理器都提供這種機制。異常主要是從處理器被動接受的角度出發的一種描述,指意外操作引起的異常。而中斷則帶有向處理器主動申請的意味。但這兩種情況具有一定的共性,都是請求處理器打斷正常的程序執行流程,進入特定程序的一種機制。若無特別說明,對“異常”和“中斷”都不作嚴格的區分。本文結合經過實際驗證的代碼對ARM9中斷處理流程進行分析,并設計出基于S3C2410芯片的外部中斷處理程序。 1.異常中斷響應和返回 系系統運行行時,異異常可能能會隨時時發生。當當一個異異常出現現以后,AARM微微處理器器會執行行以下幾幾步操作作: 1)
2、將將下一條條指令的的地址存存入相應應連接寄寄存器LLR,以以便程序序在處理理異常返返回時能能從正確確的位置置重新開開始執行行。 2) 將將CPSSR復制制到相應應的SPPSR中中。 3) 根根據異常常類型,強強制設置置CPSSR的運運行模式式位。 4) 強制PPC從相相關的異異常向量量地址取取下一條條指令執執行,從從而跳轉轉到相應應的異常常處理程程序處。 這些工工作是由由ARMM 內核核完成的的,不需需要用戶戶程序參參與。異異常處理理完畢之之后,AARM微微處理器器會執行行以下幾幾步操作作從異常常返回: 1) 將連連接寄存存器LRR的值減減去相應應的偏移移量后送送到PCC中。 2) 將將SPS
3、SR復制制回CPPSR中中。 3) 若若在進入入異常處處理時設設置了中中斷禁止止位,要要在此清清除。 這這些工作作必須由由用戶在在中斷處處理函數數中實現現。為保保證在AARM處處理器發發生異常常時不至至于處于于未知狀狀態,在在應用程程序的設設計中,首首先要進進行異常常處理。采采用的方方式是在在異常向向量表中中的特定定位置放放置一條條跳轉指指令,跳跳轉到異異常處理理程序。當當ARMM處理器器發生異異常時,程程序計數數器PCC會被強強制設置置為對應應的異常常向量,從從而跳轉轉到異常常處理程程序。當當異常處處理完成成以后,返返回到主主程序繼繼續執行行。可以以認為應應用程序序總是從從復位異異常處理理程
4、序開開始執行行的,因因此復位位異常處處理程序序不需要要返回。 22.異常常處理程程序設計計 22.1 異異常響應應流程 由由于向量量表的限限制,只只能有一一條指令令B完成成32MMB范圍圍內的跳跳轉,并并不能保保證所有有的異常常處理函函數都位位于322MB范范圍內。為為了擴展展跳轉范范圍,需需要二次次跳轉才才能把異異常處理理函數的的地址傳傳送給PPC。異異常處理理調用關關系如圖圖1所示示。 三星星公司網網站提供供了teest224100_r111軟件件包,其其中24410iinitt.s有有如下代代碼: HHanddlerrXXXX suub ssp,ssp,#4 ;減減少spp,保存存跳轉地
5、地址 sttmfdd ssp!,r00 ;將工作作寄存器器壓入堆堆棧 lddr r00,=HHanddleXXXX ;將HHanddleXXXX地地址放入入r0 lddr r0,r00 ;將將中斷程程序入口口地址放放入r00 sttr r00,ssp,#4 ;將將中斷程程序入口口地址壓壓入堆棧棧 lddmfdd sp!,rr0,ppc ;將將工作寄寄存器和和中斷程程序入口口地址彈彈出到rr0和PPC圖1異常處處理調用用 并且在在RAMM中定義義了存有有中斷程程序入口口地址表表_ISSR_SSTARRTADDDREESS: AREEA RRamDDataa, DDATAA, RREADDWRII
6、TE _IISR_STAARTAADDRRESSS HanndleeResset # 44 HanndleeUnddef # 4 HanndleeSWII # 44 HanndleePabbortt # 4 HanndleeDabbortt # 4 HanndleeResservved # 4 HanndleeIRQQ # 44 HanndleeFIQQ # 44 通常HHanddlerrXXXX位于程程序入口口地址332MBB范圍內內,HaandlleXXXX是以以_ISSR_SSTARRTADDDREESS為為基地址址的RAAM中地地址。該該代碼主主要實現現跳轉功功能,把把異常處處理程序序
7、地址HHanddleXXXX送送到PCC中。例例如產生生IRQQ中斷時時,PCC會被強強制設置置為0 xx18,執執行指令令:b HaandllerIIRQ 在HaandllerIIRQ程程序段內內,處理理器做一一些必要要的處理理,就會會將_IISR_STAARTAADDRRESSS表中存存放的IIRQ入入口地址址送入PPC,然然后開始始執行相相關中斷斷程序。由由于_IISR_STAARTAADDRRESSS表存放放在RAAM中,后后面的CC語言程程序可以以方便地地更改相相關中斷斷服務程程序的內內容。 2.22 異常分分支 系系統可能能存在多多個 IIRQ/FIQQ的中斷斷處理程程序。為為了從
8、向向量表入入口處的的跳轉最最終能找找到正確確的中斷斷處理程程序,需需要設計計一套處處理機制制和方法法來實現現。可以以在ARRM的異異常向量量表之外外,增加加一張關關聯中斷斷控制器器的向量量表,向向量表中中的內容容對應每每個具體體的中斷斷源,可可以協助助跳轉到到不同的的中斷處處理程序序。 當當響應外外設的一一個中斷斷請求時時,首先先觸發AARM核核的中斷斷,進人人中斷程程序,再再通過中中斷控制制器識別別中斷源源,使PPC能夠夠自動獲獲得中斷斷處理程程序的地地址。有有的芯片片支持特特殊的硬硬件分支支功能,依依據中斷斷源自動動跳轉到到向量表表的相應應地址,多多數情況況下是用用軟件來來處理異異常分支支
9、。 在在S3CC24110體系系中,中中斷的調調用可以以看成是是經歷了了2次“中中斷向量量表”的的查詢。224100iniit.ss中的以以下代碼碼完成功功能就是是查詢中中斷偏移移寄存器器INTTOFFFSETT,得到到當前中中斷的中中斷號,并并根據中中斷號再再調用相相關的中中斷服務務程序。 IsrrIRQQ suub ssp,ssp,#4 sttmfdd sp!,rr8-rr9 lddr r9,=INNTOFFFSEET lddr r9,r99 lddr r8,=HaandlleEIINT00 addd rr8,rr8,rr9,llsl #2 lddr r8,r88 sttr r8,spp,
10、#88 lddmfdd sp!,rr8-rr9,ppc 為為了方便便C程序序使用中中斷,將將IsrrIRQQ設為IIRQ的的中斷服服務程序序。 lddr r0,=HaandlleIRRQ lddr r1,=IssrIRRQ sttr r1,r00 其其中HaandlleEIINT00是用戶戶自己開開辟的一一塊存儲儲空間的的起始地地址,后后面按次次序存放放中斷異異常處理理程序的的地址,也也可以理理解為二二級中斷斷向量表表。IssrIRRQ從中中斷控制制器處獲獲取中斷斷源信息息,然后后再從二二級中斷斷向量表表中的對對應地址址單元得得到異常常中斷處處理程序序的入口口地址,完完成異常常響應的的跳轉。二
11、二級中斷斷向量表表一般位位于 HHanddleFFIQ的的后面,也也就是以以_ISSR_SSTARRTADDDREESS0 x220為起起始地址址,這里里定義了了S3CC24110處理理器所有有中斷源源的相關關中斷處處理處理理程序入入口。這這種方法法的好處處是用戶戶程序在在運行過過程中能能夠動態態改變異異常向量量。 22.3 中中斷函數數設計 為為了方便便高級語語言設計計中斷處處理函數數,標準準的ARRM指令令編譯器器提供了了一個用用來聲明明中斷處處理函數數的關鍵鍵字-iirq,使使用此關關鍵字聲聲明的函函數可以以被編譯譯器識別別為中斷斷處理函函數。編編譯后的的代碼在在處理異異常事件件前保存存
12、現場信信息,處處理異常常事件后后對現場場信息進進行恢復復。中斷斷函數設設計如下下:statiic vvoidd _irqq Eiint33Intt(vooid) CCleaarPeendiing(BITT_EIINT33);Uart_Priintff(EEINTT3 iinteerruupt is occcurrred.n); nnum_intt=3;設置標標志位 定定義中斷斷處理程程序入口口地址:#deefinne ppISRR_EIINT33 (*(uunsiigneed *)(_ISRR_STTARTTADDDRESSS+00 x2cc) 在在初始化化程序,引引用代碼碼pISSR_EEI
13、NTT3=(U322)Eiint33Intt,即可可定義地地址_IISR_STAARTAADDRRESSS+0 xx2c內內容是EEintt3Innt的地地址,外外部中斷斷3產生生請求時時即可調調用中斷斷處理函函數Eiint33Intt。 33.外中中斷初始始化程序序設計 SS3C224100X 的的中斷控控制寄存存器能接接收來自自56個個中斷源源的請求求。內部部的外圍圍模塊和和外部管管腳產生生的多個個中斷請請求通過過中斷控控制器沖沖裁后,向向ARMM9200T核發發出FIIQ或者者 IRRQ中斷斷。ARRM內核核只有22個外部部中斷輸輸入信號號nIRRQ和nnFIQQ,在具具體嵌入入式系統統
14、中,需需要用中中斷控制制器管理理多個外外部中斷斷源,選選擇其中中一個中中斷,通通過 nnIRQQ或nFFIQ向向ARMM內核發發出中斷斷請求,如如圖2所所示。 圖2 FIIQIIRQ中中斷處理理過程 AARM9920TT內核可可以識別別正常中中斷請求求和快速速中斷請請求兩種種類型的的外部中中斷,中中斷的行行為模式式由中斷斷控制器器來設置置。S33C24410XX的中斷斷控制器器包括66類寄存存器:中中斷源狀狀態寄存存器、中中斷模式式寄存器器、中斷斷屏蔽寄寄存器、優優先級寄寄存器、中中斷狀態態寄存器器,以及及中斷偏偏移寄存存器。 在在初始化化程序中中,需要要選擇相相應管腳腳的功能能,在此此定義G
15、GPF33為EIINT33模式,通通過外部部中斷控控制寄存存器EXXTINNT0設設定EIINT33是下降降沿觸發發方式,通通過設置置中斷源源懸掛寄寄存器SSRCPPND、中中斷懸掛掛寄存器器INTTPNDD和中斷斷屏蔽寄寄存器IINTMMSK開開啟EIINT33。中斷斷模式寄寄存器和和中斷優優先級寄寄存器采采用系統統默認方方式。具具體代碼碼實現如如下:void Einnt_IInitt(vooid)rGPFCCON = (rGPPFCOON & 0 xx3f00c)|(17);rEXTIINT00 = (rEEXTIINT00 & (00 x7122) | 00 x2122; pISR_EINNT3=(U332)EEintt3Innt; rSRRCPNND = BIIT_EEINTT3; rIINTPPND = BBIT_EINNT3; rIINTMMSK=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45653-2025新能源汽車售后服務規范
- 廣告策劃合同范本模板
- 信用證抵押借款合同8篇
- 購銷合同模板
- GB/T 28634-2025微束分析電子探針顯微分析塊狀試樣波譜法定量點分析
- 環氧地坪協議書
- 藥費賠償協議書
- 美俄簽署協議書
- 哈爾濱協同發展協議書
- 小紅書藝人合作協議書
- 娛樂用高空滑索裝置項目可行性實施報告
- 廣東省深圳市羅湖區2023-2024學年二年級下學期期末考試數學試題
- 四川省成都市2024年中考道德與法治真題試卷 附答案
- 液化天然氣汽車加氣站技術規范
- (正式版)SHT 3158-2024 石油化工管殼式余熱鍋爐
- 加油站百日攻堅行動實施方案
- 供電企業輿情的預防及處置
- GB/T 41666.4-2024地下無壓排水管網非開挖修復用塑料管道系統第4部分:原位固化內襯法
- 4、《通向金融王國的自由之路》
- 大學生職業素養(高職)全套教學課件
- 涉密內網分級保護設計方案
評論
0/150
提交評論