版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 計(jì)算機(jī)體系結(jié)構(gòu)中,異?;蛘咧袛嗍翘幚硐到y(tǒng)中突發(fā)事件的一種機(jī)制,幾乎所有的處理器都提供這種機(jī)制。異常主要是從處理器被動(dòng)接受的角度出發(fā)的一種描述,指意外操作引起的異常。而中斷則帶有向處理器主動(dòng)申請(qǐng)的意味。但這兩種情況具有一定的共性,都是請(qǐng)求處理器打斷正常的程序執(zhí)行流程,進(jìn)入特定程序的一種機(jī)制。若無(wú)特別說(shuō)明,對(duì)“異?!焙汀爸袛唷倍疾蛔鲊?yán)格的區(qū)分。本文結(jié)合經(jīng)過(guò)實(shí)際驗(yàn)證的代碼對(duì)ARM9中斷處理流程進(jìn)行分析,并設(shè)計(jì)出基于S3C2410芯片的外部中斷處理程序。 1.異常中斷響應(yīng)和返回 系統(tǒng)運(yùn)行時(shí),異??赡軙?huì)隨時(shí)發(fā)生。當(dāng)一個(gè)異常出現(xiàn)以后,ARM微處理器會(huì)執(zhí)行以下幾步操作: 11) 將下一一條指令令的地址址存
2、入相相應(yīng)連接接寄存器器LR,以便程程序在處處理異常常返回時(shí)時(shí)能從正正確的位位置重新新開(kāi)始執(zhí)執(zhí)行。 22) 將CPPSR復(fù)復(fù)制到相相應(yīng)的SSPSRR中。 33) 根據(jù)異異常類型型,強(qiáng)制制設(shè)置CCPSRR的運(yùn)行行模式位位。 44) 強(qiáng)制制PC從從相關(guān)的的異常向向量地址址取下一一條指令令執(zhí)行,從而跳跳轉(zhuǎn)到相相應(yīng)的異異常處理理程序處處。 這些些工作是是由ARRM 內(nèi)內(nèi)核完成成的,不不需要用用戶程序序參與。異常處處理完畢畢之后,ARMM微處理理器會(huì)執(zhí)執(zhí)行以下下幾步操操作從異異常返回回: 1) 將將連接寄寄存器LLR的值值減去相相應(yīng)的偏偏移量后后送到PPC中。 2) 將SPPSR復(fù)復(fù)制回CCPSRR中。
3、3) 若在進(jìn)進(jìn)入異常常處理時(shí)時(shí)設(shè)置了了中斷禁禁止位,要在此此清除。 這些工工作必須須由用戶戶在中斷斷處理函函數(shù)中實(shí)實(shí)現(xiàn)。為為保證在在ARMM處理器器發(fā)生異異常時(shí)不不至于處處于未知知狀態(tài),在應(yīng)用用程序的的設(shè)計(jì)中中,首先先要進(jìn)行行異常處處理。采采用的方方式是在在異常向向量表中中的特定定位置放放置一條條跳轉(zhuǎn)指指令,跳跳轉(zhuǎn)到異異常處理理程序。當(dāng)ARRM處理理器發(fā)生生異常時(shí)時(shí),程序序計(jì)數(shù)器器PC會(huì)會(huì)被強(qiáng)制制設(shè)置為為對(duì)應(yīng)的的異常向向量,從從而跳轉(zhuǎn)轉(zhuǎn)到異常常處理程程序。當(dāng)當(dāng)異常處處理完成成以后,返回到到主程序序繼續(xù)執(zhí)執(zhí)行??煽梢哉J(rèn)為為應(yīng)用程程序總是是從復(fù)位位異常處處理程序序開(kāi)始執(zhí)執(zhí)行的,因此復(fù)復(fù)位異常常處理
4、程程序不需需要返回回。 2.異異常處理理程序設(shè)設(shè)計(jì) 2.11 異常響響應(yīng)流程程 由于向向量表的的限制,只能有有一條指指令B完完成322MB范范圍內(nèi)的的跳轉(zhuǎn),并不能能保證所所有的異異常處理理函數(shù)都都位于332MBB范圍內(nèi)內(nèi)。為了了擴(kuò)展跳跳轉(zhuǎn)范圍圍,需要要二次跳跳轉(zhuǎn)才能能把異常常處理函函數(shù)的地地址傳送送給PCC。異常常處理調(diào)調(diào)用關(guān)系系如圖11所示。 三三星公司司網(wǎng)站提提供了ttestt24110_rr11軟軟件包,其中224100iniit.ss有如下下代碼: HanndleerXXXX ssub sp,sp,#4 ;減少ssp,保保存跳轉(zhuǎn)轉(zhuǎn)地址 sstmffd sp!,rr0 ;將工工作寄存存器
5、壓入入堆棧 lldr rr0,=HanndleeXXXX ;將將HanndleeXXXX地址放放入r00 lldr r00,rr0 ;將中斷斷程序入入口地址址放入rr0 sstr rr0,sp,#4 ;將中斷斷程序入入口地址址壓入堆堆棧 lldmffd spp!,r0,pc ;將工作作寄存器器和中斷斷程序入入口地址址彈出到到r0和和PC圖1異常常處理調(diào)調(diào)用 并且且在RAAM中定定義了存存有中斷斷程序入入口地址址表_IISR_STAARTAADDRRESSS: ARREA RammDatta, DATTA, REAADWRRITEE _ISRR_STTARTTADDDRESSS Haandlle
6、Reesett # 4 HaandlleUnndeff # 4 HaandlleSWWI # 4 HaandllePaaborrt # 4 HaandlleDaaborrt # 4 HaandlleReeserrvedd # 4 HaandlleIRRQ # 4 HaandlleFIIQ # 4 通常常HanndleerXXXX位于于程序入入口地址址32MMB范圍圍內(nèi),HHanddleXXXX是是以_IISR_STAARTAADDRRESSS為基地地址的RRAM中中地址。該代碼碼主要實(shí)實(shí)現(xiàn)跳轉(zhuǎn)轉(zhuǎn)功能,把異常常處理程程序地址址HanndleeXXXX送到PPC中。例如產(chǎn)產(chǎn)生IRRQ中斷斷時(shí),PP
7、C會(huì)被被強(qiáng)制設(shè)設(shè)置為00 x188,執(zhí)行行指令:b HanndleerIRRQ 在HHanddlerrIRQQ程序段段內(nèi),處處理器做做一些必必要的處處理,就就會(huì)將_ISRR_STTARTTADDDRESSS表中中存放的的IRQQ入口地地址送入入PC,然后開(kāi)開(kāi)始執(zhí)行行相關(guān)中中斷程序序。由于于_ISSR_SSTARRTADDDREESS表表存放在在RAMM中,后后面的CC語(yǔ)言程程序可以以方便地地更改相相關(guān)中斷斷服務(wù)程程序的內(nèi)內(nèi)容。 2.2 異常常分支 系統(tǒng)可可能存在在多個(gè) IRQQ/FIIQ的中中斷處理理程序。為了從從向量表表入口處處的跳轉(zhuǎn)轉(zhuǎn)最終能能找到正正確的中中斷處理理程序,需要設(shè)設(shè)計(jì)一套套處
8、理機(jī)機(jī)制和方方法來(lái)實(shí)實(shí)現(xiàn)??煽梢栽贏ARM的的異常向向量表之之外,增增加一張張關(guān)聯(lián)中中斷控制制器的向向量表,向量表表中的內(nèi)內(nèi)容對(duì)應(yīng)應(yīng)每個(gè)具具體的中中斷源,可以協(xié)協(xié)助跳轉(zhuǎn)轉(zhuǎn)到不同同的中斷斷處理程程序。 當(dāng)響應(yīng)應(yīng)外設(shè)的的一個(gè)中中斷請(qǐng)求求時(shí),首首先觸發(fā)發(fā)ARMM核的中中斷,進(jìn)進(jìn)人中斷斷程序,再通過(guò)過(guò)中斷控控制器識(shí)識(shí)別中斷斷源,使使PC能能夠自動(dòng)動(dòng)獲得中中斷處理理程序的的地址。有的芯芯片支持持特殊的的硬件分分支功能能,依據(jù)據(jù)中斷源源自動(dòng)跳跳轉(zhuǎn)到向向量表的的相應(yīng)地地址,多多數(shù)情況況下是用用軟件來(lái)來(lái)處理異異常分支支。 在S33C24410體體系中,中斷的的調(diào)用可可以看成成是經(jīng)歷歷了2次次“中斷斷向量表表”
9、的查查詢。224100iniit.ss中的以以下代碼碼完成功功能就是是查詢中中斷偏移移寄存器器INTTOFFFSETT,得到到當(dāng)前中中斷的中中斷號(hào),并根據(jù)據(jù)中斷號(hào)號(hào)再調(diào)用用相關(guān)的的中斷服服務(wù)程序序。 IssrIRRQ ssub sp,sp,#4 sstmffd spp!,r8-r9 lldr r99,=IINTOOFFSSET lldr r99,rr9 lldr r88,=HHanddleEEINTT0 aadd r8,r8,r9,lsll #22 lldr r88,rr8 sstr r88,ssp,#8 lldmffd spp!,r8-r9,pc 為了方方便C程程序使用用中斷,將IssrIR
10、RQ設(shè)為為IRQQ的中斷斷服務(wù)程程序。 lldr r00,=HHanddleIIRQ lldr r11,=IIsrIIRQ sstr r11,rr0 其中HHanddleEEINTT0是用用戶自己己開(kāi)辟的的一塊存存儲(chǔ)空間間的起始始地址,后面按按次序存存放中斷斷異常處處理程序序的地址址,也可可以理解解為二級(jí)級(jí)中斷向向量表。IsrrIRQQ從中斷斷控制器器處獲取取中斷源源信息,然后再再?gòu)亩?jí)級(jí)中斷向向量表中中的對(duì)應(yīng)應(yīng)地址單單元得到到異常中中斷處理理程序的的入口地地址,完完成異常常響應(yīng)的的跳轉(zhuǎn)。二級(jí)中中斷向量量表一般般位于 HanndleeFIQQ的后面面,也就就是以_ISRR_STTARTTADD
11、DRESSS00 x200為起始始地址,這里定定義了SS3C224100處理器器所有中中斷源的的相關(guān)中中斷處理理處理程程序入口口。這種種方法的的好處是是用戶程程序在運(yùn)運(yùn)行過(guò)程程中能夠夠動(dòng)態(tài)改改變異常常向量。 2.33 中斷函函數(shù)設(shè)計(jì)計(jì) 為了方方便高級(jí)級(jí)語(yǔ)言設(shè)設(shè)計(jì)中斷斷處理函函數(shù),標(biāo)標(biāo)準(zhǔn)的AARM指指令編譯譯器提供供了一個(gè)個(gè)用來(lái)聲聲明中斷斷處理函函數(shù)的關(guān)關(guān)鍵字-irqq,使用用此關(guān)鍵鍵字聲明明的函數(shù)數(shù)可以被被編譯器器識(shí)別為為中斷處處理函數(shù)數(shù)。編譯譯后的代代碼在處處理異常常事件前前保存現(xiàn)現(xiàn)場(chǎng)信息息,處理理異常事事件后對(duì)對(duì)現(xiàn)場(chǎng)信信息進(jìn)行行恢復(fù)。中斷函函數(shù)設(shè)計(jì)計(jì)如下:stattic voiid _ir
12、rq EEintt3Innt(vvoidd) CleearPPenddingg(BIIT_EEINTT3);Uartt_Prrinttf(EINNT3 intterrruptt iss occcurrredd.nn); numm_innt=33;設(shè)置置標(biāo)志位位 定義中中斷處理理程序入入口地址址:#ddefiine pISSR_EEINTT3 (*(unssignned *)(_ISSR_SSTARRTADDDREESS+0 x22c) 在初始始化程序序,引用用代碼ppISRR_EIINT33=(UU32)Einnt3IInt,即可定定義地址址_ISSR_SSTARRTADDDREESS+0 x
13、22c內(nèi)容容是Eiint33Intt的地址址,外部部中斷33產(chǎn)生請(qǐng)請(qǐng)求時(shí)即即可調(diào)用用中斷處處理函數(shù)數(shù)Einnt3IInt。 3.外外中斷初初始化程程序設(shè)計(jì)計(jì) S3CC24110X 的中斷斷控制寄寄存器能能接收來(lái)來(lái)自566個(gè)中斷斷源的請(qǐng)請(qǐng)求。內(nèi)內(nèi)部的外外圍模塊塊和外部部管腳產(chǎn)產(chǎn)生的多多個(gè)中斷斷請(qǐng)求通通過(guò)中斷斷控制器器沖裁后后,向AARM9920TT核發(fā)出出FIQQ或者 IRQQ中斷。ARMM內(nèi)核只只有2個(gè)個(gè)外部中中斷輸入入信號(hào)nnIRQQ和nFFIQ,在具體體嵌入式式系統(tǒng)中中,需要要用中斷斷控制器器管理多多個(gè)外部部中斷源源,選擇擇其中一一個(gè)中斷斷,通過(guò)過(guò) nIIRQ或或nFIIQ向AARM內(nèi)內(nèi)核
14、發(fā)出出中斷請(qǐng)請(qǐng)求,如如圖2所所示。圖2 FFIQIRQQ中斷處處理過(guò)程程 ARMM9200T內(nèi)核核可以識(shí)識(shí)別正常常中斷請(qǐng)請(qǐng)求和快快速中斷斷請(qǐng)求兩兩種類型型的外部部中斷,中斷的的行為模模式由中中斷控制制器來(lái)設(shè)設(shè)置。SS3C224100X的中中斷控制制器包括括6類寄寄存器:中斷源源狀態(tài)寄寄存器、中斷模模式寄存存器、中中斷屏蔽蔽寄存器器、優(yōu)先先級(jí)寄存存器、中中斷狀態(tài)態(tài)寄存器器,以及及中斷偏偏移寄存存器。 在初始始化程序序中,需需要選擇擇相應(yīng)管管腳的功功能,在在此定義義GPFF3為EEINTT3模式式,通過(guò)過(guò)外部中中斷控制制寄存器器EXTTINTT0設(shè)定定EINNT3是是下降沿沿觸發(fā)方方式,通通過(guò)設(shè)置
15、置中斷源源懸掛寄寄存器SSRCPPND、中斷懸懸掛寄存存器INNTPNND和中中斷屏蔽蔽寄存器器INTTMSKK開(kāi)啟EEINTT3。中中斷模式式寄存器器和中斷斷優(yōu)先級(jí)級(jí)寄存器器采用系系統(tǒng)默認(rèn)認(rèn)方式。具體代代碼實(shí)現(xiàn)現(xiàn)如下:voidd Eiint_Iniit(vvoidd)rGPFFCONN = (rGGPFCCON & 00 x3ff0c)|(1177);rEXTTINTT0 = (rrEXTTINTT0 & (0 x77112) | 0 x22112; pISRR_EIINT33=(UU32)Einnt3IInt; rSSRCPPND = BBIT_EINNT3; rrINTTPNDD = BITT_EIINT33; rrINTTMSKK
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年集裝箱堆場(chǎng)運(yùn)輸外包合同范本3篇
- 2025年烈士陵園、紀(jì)念館服務(wù)項(xiàng)目申請(qǐng)報(bào)告模稿
- 1 子路、曾皙、冉有、公西華侍坐(說(shuō)課稿)-2024-2025學(xué)年高一語(yǔ)文必修下冊(cè)同步備課系列(說(shuō)課稿+說(shuō)課稿)(統(tǒng)編版2019)
- 5風(fēng)兒輕輕吹 第一課時(shí)(說(shuō)課稿)-部編版道德與法治一年級(jí)下冊(cè)
- 5《一次比一次有進(jìn)步》說(shuō)課稿-2023-2024學(xué)年培智語(yǔ)文六年級(jí)下冊(cè)
- 波泰西尼《輝煌的快板協(xié)奏曲(門(mén)德?tīng)査娠L(fēng)格)》的作品及其演奏分析
- 河北省永清縣重點(diǎn)中學(xué)2025屆中考生物押題試卷含解析2
- 2025屆上海市寶山區(qū)中考生物仿真試卷含解析
- 年度玻璃浮球戰(zhàn)略市場(chǎng)規(guī)劃報(bào)告
- 6.2中華人民共和國(guó)主席(原卷版)
- 碳排放監(jiān)測(cè)員(高級(jí))技能鑒定考試題及答案
- 2024年中醫(yī)執(zhí)業(yè)醫(yī)師資格考試題庫(kù)及答案
- 柯橋區(qū)五年級(jí)上學(xué)期語(yǔ)文期末學(xué)業(yè)評(píng)價(jià)測(cè)試試卷
- 2022年廣東省中考物理試題試題(含答案+解析)
- 北京市豐臺(tái)區(qū)2024屆高三下學(xué)期二模試題 數(shù)學(xué) 含解析
- 質(zhì)量保證措施
- 耕地占補(bǔ)平衡系統(tǒng)課件
- 2024年三年級(jí)品社下冊(cè)《鄰居家的小伙伴》教案2 蘇教版
- 交易平臺(tái)保證金協(xié)議書(shū)
- 醫(yī)院OA辦公系統(tǒng)技術(shù)需求
- 文物保護(hù)中的智能材料應(yīng)用
評(píng)論
0/150
提交評(píng)論