下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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í)行以 下幾步操
2、作:1) 將下一條指令的地址存入相應(yīng)連接寄存器LR ,以便程序在處理異常返回時(shí)能從正確的位置重新開(kāi)始執(zhí)行。2) 將 CPSR 復(fù)制到相應(yīng)的 SPSR 中。3) 根據(jù)異常類(lèi)型,強(qiáng)制設(shè)置 CPSR 的運(yùn)行模式位。4) 強(qiáng)制 PC 從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處 理程序處。這些工作是由 ARM 內(nèi)核完成的 ,不需要用戶(hù)程序參與。異常處理完畢之后,ARM微處理器會(huì)執(zhí)行以下幾步操作從異常返回:1) 將連接寄存器 LR 的值減去相應(yīng)的偏移量后送到 PC 中。2) 將SPSR復(fù)制回CPSR中。3) 若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除。這些工作必須由用戶(hù)在中斷處理函數(shù)
3、中實(shí)現(xiàn)。為保證在 ARM 處理器發(fā)生異常時(shí)不 至于處于未知狀態(tài), 在應(yīng)用程序的設(shè)計(jì)中, 首先要進(jìn)行異常處理。 采用的方式是在異常向量 表中的特定位置放置一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到異常處理程序。當(dāng) ARM 處理器發(fā)生異常時(shí),程 序計(jì)數(shù)器 PC 會(huì)被強(qiáng)制設(shè)置為對(duì)應(yīng)的異常向量,從而跳轉(zhuǎn)到異常處理程序。當(dāng)異常處理完成 以后, 返回到主程序繼續(xù)執(zhí)行。 可以認(rèn)為應(yīng)用程序總是從復(fù)位異常處理程序開(kāi)始執(zhí)行的, 因 此復(fù)位異常處理程序不需要返回。2. 異常處理程序設(shè)計(jì)2.1 異常響應(yīng)流程由于向量表的限制,只能有一條指令B完成32MB范圍內(nèi)的跳轉(zhuǎn),并不能保證所有的異常處理函數(shù)都位于32MB范圍內(nèi)。為了擴(kuò)展跳轉(zhuǎn)范圍,需要二
4、次跳轉(zhuǎn)才能把異常處理函數(shù)的地址傳送給 PC。異常處理調(diào)用關(guān)系如圖1所示。三星公司網(wǎng)站提供了test2410_r11軟件包,其中2410init.s有如下代碼:Han dlerXXXsubsp,sp,#4;減少sp,保存跳轉(zhuǎn)地址stmfdsp!,rO;將工作寄存器壓入堆棧ldr r0,=HandleXXX ;將 HandleXXX 地址放入 r0ldr rO,rO;將中斷程序入口地址放入r0str rO,sp,#4;將中斷程序入口地址壓入堆棧ldmfd sp!,rO,pc;將工作寄存器和中斷程序入口地址彈出到r0和PCf1Ei llaEidkrf OB IhncIkrlkQ如zH Humllrr
5、rbJiKnlb ItaulkrSWI伽dHB HjndktUncfOtWJLJMitncirrtRQHamiickiyHndteSW I;lUndte* ladef圖1異常處理調(diào)用并且在RAM中定義了存有中斷程序入口地址表_ISR_STARTADDRESS :AREA RamData, DA TA, READWRITEA _ISR_STARTADDRESSHan dleReset#4Han dleU ndef#4Han dleSWI# 4Han dlePabort#4Han dleDabort#4Han dleReserved#4Han dleIRQ通 常 HandlerXXX 位 于 程
6、序 入 口 地 址 32MB 范 圍 內(nèi) , HandleXXX 是 以 _ISR_STARTADDRESS 為基地址的 RAM 中地址。該代碼主要實(shí)現(xiàn)跳轉(zhuǎn)功能,把異常處理 程序地址 HandleXXX 送到 PC 中。例如產(chǎn)生 IRQ 中斷時(shí), PC 會(huì)被強(qiáng)制設(shè)置為 0x18 ,執(zhí)行 指令: b HandlerIRQ在 HandlerIRQ 程序段內(nèi),處理器做一些必要的處理, 就會(huì)將 _ISR_STARTADDRESS 表中存放的IRQ入口地址送入 PC,然后開(kāi)始執(zhí)行相關(guān)中斷程序。 由于_ISR_STARTADDRESS 表存放在 RAM 中,后面的 C 語(yǔ)言程序可以方便地更改相關(guān)中斷服務(wù)程
7、序的內(nèi)容。2.2 異常分支系統(tǒng)可能存在多個(gè) IRQ/FIQ 的中斷處理程序。 為了從向量表入口處的跳轉(zhuǎn)最終能找 到正確的中斷處理程序, 需要設(shè)計(jì)一套處理機(jī)制和方法來(lái)實(shí)現(xiàn)??梢栽?ARM 的異常向量表 之外, 增加一張關(guān)聯(lián)中斷控制器的向量表, 向量表中的內(nèi)容對(duì)應(yīng)每個(gè)具體的中斷源, 可以協(xié) 助跳轉(zhuǎn)到不同的中斷處理程序。當(dāng)響應(yīng)外設(shè)的一個(gè)中斷請(qǐng)求時(shí),首先觸發(fā) ARM 核的中斷,進(jìn)人中斷程序,再通過(guò) 中斷控制器識(shí)別中斷源,使 PC 能夠自動(dòng)獲得中斷處理程序的地址。有的芯片支持特殊的硬 件分支功能, 依據(jù)中斷源自動(dòng)跳轉(zhuǎn)到向量表的相應(yīng)地址, 多數(shù)情況下是用軟件來(lái)處理異常分 支。在 S3C2410 體系中,中
8、斷的調(diào)用可以看成是經(jīng)歷了 2 次“中斷向量表 ”的查詢(xún)。 2410init.s 中的以下代碼完成功能就是查詢(xún)中斷偏移寄存器 INTOFFSET ,得到當(dāng)前中斷的中 斷號(hào),并根據(jù)中斷號(hào)再調(diào)用相關(guān)的中斷服務(wù)程序。IsrIRQsubsp,sp,#4stmfdsp!,r8-r9ldrr9,=INTOFFSETldrr9,r9ldrr8,=HandleEINT0addr8,r8,r9,lsl #2ldrr8,r8str r8,sp,#8ldmfd sp!,r8-r9,pc為了方便C程序使用中斷,將IsrIRQ設(shè)為IRQ的中斷服務(wù)程序。ldr r0,=HandleIRQldrr1,=IsrIRQstrr1
9、,r0其中 HandleEINT0 是用戶(hù)自己開(kāi)辟的一塊存儲(chǔ)空間的起始地址, 后面按次序存放中 斷異常處理程序的地址, 也可以理解為二級(jí)中斷向量表。 IsrIRQ 從中斷控制器處獲取中斷源 信息,然后再?gòu)亩?jí)中斷向量表中的對(duì)應(yīng)地址單元得到異常中斷處理程序的入口地址,完成異常響 應(yīng)的 跳 轉(zhuǎn)。 二級(jí) 中 斷 向量表 一般 位于 HandleFIQ 的 后面 , 也就是 以 _ISR_STARTADDRESS + 0x20為起始地址,這里定義了S3C2410處理器所有中斷源的相關(guān)中斷處理處理程序入口。這種方法的好處是用戶(hù)程序在運(yùn)行過(guò)程中能夠動(dòng)態(tài)改變異常向量。2.3 中斷函數(shù)設(shè)計(jì)為了方便高級(jí)語(yǔ)言設(shè)計(jì)
10、中斷處理函數(shù),標(biāo)準(zhǔn)的 ARM 指令編譯器提供了一個(gè)用來(lái)聲 明中斷處理函數(shù)的關(guān)鍵字-irq,使用此關(guān)鍵字聲明的函數(shù)可以被編譯器識(shí)別為中斷處理函數(shù)。編譯后的代碼在處理異常事件前保存現(xiàn)場(chǎng)信息, 處理異常事件后對(duì)現(xiàn)場(chǎng)信息進(jìn)行恢復(fù)。 中斷 函數(shù)設(shè)計(jì)如下:static void _irq Eint3Int(void)ClearPending(BIT_EINT3);Uart_Printf(EINT3 interrupt is occurred.n);num_int=3; 設(shè)置標(biāo)志位定 義 中 斷 處 理 程 序 入 口 地 址 : #define pISR_EINT3(*(unsigned*)(_ISR_S
11、TARTADDRESS+0x2c)在 初 始 化 程 序 , 引 用 代 碼 pISR_EINT3=(U32)Eint3Int , 即 可 定 義 地 址 _ISR_STARTADDRESS+0x2c 內(nèi)容是 Eint3Int 的地址,外部中斷 3產(chǎn)生請(qǐng)求時(shí)即可調(diào)用中斷 處理函數(shù) Eint3Int 。3外中斷初始化程序設(shè)計(jì)S3C2410X的中斷控制寄存器能接收來(lái)自56個(gè)中斷源的請(qǐng)求。內(nèi)部的外圍模塊和外部管腳產(chǎn)生的多個(gè)中斷請(qǐng)求通過(guò)中斷控制器沖裁后,向ARM920T核發(fā)出FIQ或者IRQ中斷。ARM內(nèi)核只有2個(gè)外部中斷輸入信號(hào) nIRQ和nFIQ,在具體嵌入式系統(tǒng)中,需要用中 斷控制器管理多個(gè)外部
12、中斷源,選擇其中一個(gè)中斷,通過(guò)nIRQ或nFIQ向ARM內(nèi)核發(fā)出中斷請(qǐng)求,如圖2所示。圖2 FIQ/ IRQ中斷處理過(guò)程ARM920T內(nèi)核可以識(shí)別正常中斷請(qǐng)求和快速中斷請(qǐng)求兩種類(lèi)型的外部中斷,中斷 的行為模式由中斷控制器來(lái)設(shè)置。S3C2410X的中斷控制器包括 6類(lèi)寄存器:中斷源狀態(tài)寄存器、中斷模式寄存器、中斷屏蔽寄存器、優(yōu)先級(jí)寄存器、中斷狀態(tài)寄存器,以及中斷偏移 寄存器。在初始化程序中,需要選擇相應(yīng)管腳的功能,在此定義GPF3為EINT3模式,通過(guò)外部中斷控制寄存器 EXTINT0設(shè)定EINT3是下降沿觸發(fā)方式,通過(guò)設(shè)置中斷源懸掛寄存器 SRCPND、中斷懸掛寄存器INTPND和中斷屏蔽寄存器 INTMSK開(kāi)啟EINT3。中斷模式寄 存器和中斷優(yōu)先級(jí)寄存器采用系統(tǒng)默認(rèn)方式。具體代碼實(shí)現(xiàn)如下:void Ei nt_ln it(void)rGPFCON = (rGPFCON & 0x3f0c)|(17);rEXTINTO = (rEXTINTO & (0x712) | 0x212; plSR_EINT3=(U32)Ei nt3l
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)玻璃鋼膜殼市場(chǎng)深度分析及投資戰(zhàn)略咨詢(xún)報(bào)告
- 2025年中國(guó)香菇菌多糖片行業(yè)市場(chǎng)深度評(píng)估及投資戰(zhàn)略規(guī)劃報(bào)告
- 2025年珠寶工藝行業(yè)深度研究分析報(bào)告
- 2025年度智能門(mén)禁系統(tǒng)安裝與維護(hù)服務(wù)合同8篇
- 二零二五年度代理報(bào)關(guān)服務(wù)合同范本7篇
- 2025年中國(guó)縫紉機(jī)械制造行業(yè)投資潛力分析及行業(yè)發(fā)展趨勢(shì)報(bào)告
- 二零二五年度美容院美容師職業(yè)發(fā)展規(guī)劃聘用合同4篇
- 2025年度臨時(shí)倉(cāng)儲(chǔ)物流租賃合同范本4篇
- 2025年華師大版九年級(jí)地理上冊(cè)階段測(cè)試試卷含答案
- 2025年人教A新版選修化學(xué)上冊(cè)階段測(cè)試試卷
- 第22單元(二次函數(shù))-單元測(cè)試卷(2)-2024-2025學(xué)年數(shù)學(xué)人教版九年級(jí)上冊(cè)(含答案解析)
- 藍(lán)色3D風(fēng)工作總結(jié)匯報(bào)模板
- 安全常識(shí)課件
- 河北省石家莊市2023-2024學(xué)年高一上學(xué)期期末聯(lián)考化學(xué)試題(含答案)
- 2024年江蘇省導(dǎo)游服務(wù)技能大賽理論考試題庫(kù)(含答案)
- 2024年中考英語(yǔ)閱讀理解表格型解題技巧講解(含練習(xí)題及答案)
- 新版中國(guó)食物成分表
- 浙江省溫州市溫州中學(xué)2025屆數(shù)學(xué)高二上期末綜合測(cè)試試題含解析
- 2024年山東省青島市中考生物試題(含答案)
- 保安公司市場(chǎng)拓展方案-保安拓展工作方案
- GB/T 15843.2-2024網(wǎng)絡(luò)安全技術(shù)實(shí)體鑒別第2部分:采用鑒別式加密的機(jī)制
評(píng)論
0/150
提交評(píng)論