




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式ARM中斷處理的安 全性與高效性研究 引引 言言 1 1 系統(tǒng)中斷處理簡(jiǎn)介系統(tǒng)中斷處理簡(jiǎn)介 2 2 普通中斷處理普通中斷處理 3 3 4 4 可重入性中斷可重入性中斷 5 5 基于優(yōu)先級(jí)的可重入中斷基于優(yōu)先級(jí)的可重入中斷 結(jié)結(jié)束束語語 1嵌入式ARM中斷處理的安全性與高效性研究 在嵌入式系統(tǒng)中常用的RISC處理器是ARM核,它具有體積小、功耗 低、成本低、性價(jià)比高的特點(diǎn)。然而,不管是哪種型號(hào)的arm處理 器,也無論該嵌入式系統(tǒng)中是否有操作系統(tǒng),中斷處理,特別是 IRQ中斷,始終是必須的,而中斷處理的核心問題是上下文的保存。 能否安全而又高效地保存上下文,將影響一個(gè)嵌入式系統(tǒng)的性能與 穩(wěn)定
2、。筆者對(duì)arm處理器的普通中斷處理、任務(wù)切換中斷處理、可 重人中斷處理和基于優(yōu)先級(jí)的可重人性中斷處理的上下文保存技術(shù) 進(jìn)行分析與總結(jié)。為保證理論的正確性,核心的程序代碼都經(jīng)過了 實(shí)驗(yàn)的檢測(cè)。 引言 2嵌入式ARM中斷處理的安全性與高效性研究 arm處理器的中斷主要有兩種:IRQ普通中斷和FIQ快速中斷??焖僦袛啾举|(zhì)上與普通 中斷沒有太大的差別,它們?cè)谔幚頇C(jī)制上有許多相同的地方。IRQ中斷是最頻繁的也 是最為影響系統(tǒng)性能的,所以對(duì)它的研究與處理也就最有價(jià)值。 下面簡(jiǎn)要地介紹一下IRQ異常發(fā)生時(shí)ARM處理器的工作過程。在IRQ中斷發(fā)生時(shí), arm處理器的硬件會(huì)自動(dòng)執(zhí)行以下工作: 將被中斷任務(wù)模式的
3、CPSR值保存到IRQ模式中的SPSR寄存器中; 將被中斷任務(wù)模式的PC值保存到IRQ模式中的LR寄存器中; 將模式自動(dòng)切換到IRQ模式,并將CPSR中的bit7位置1禁止后繼IRQ中斷的發(fā)生; PC被賦予0 xl8的地址值,程序?qū)? xl8片開始執(zhí)行。結(jié)合圖1,可以更好地理 解arm中斷處理機(jī)制的工作過程。 1 1嵌入式ARM開發(fā)教程之系統(tǒng)中斷處理簡(jiǎn)介系統(tǒng)中斷處理簡(jiǎn)介 3嵌入式ARM中斷處理的安全性與高效性研究 嵌入式ARM開發(fā)教程 4嵌入式ARM中斷處理的安全性與高效性研究 有些arm嵌入式系統(tǒng)可能對(duì)中斷的要求比較低,即發(fā)生中斷后首先查詢相 應(yīng)的中斷源,然后進(jìn)行中斷服務(wù),最后從中斷服務(wù)程
4、序中返回到被中斷處 繼續(xù)運(yùn)行程序。如何在這種簡(jiǎn)單應(yīng)用中保證安全又高效地處理中斷 呢?“安全”就意味著中斷發(fā)生時(shí)上下文被完好保存不被破壞,“高效” 就是說保存盡可能少的寄存器(當(dāng)然是建立在安全的基礎(chǔ)上的)。由圖1可 知,在普通中斷處理中,中斷服務(wù)就可以在IRQ模式中運(yùn)行。根據(jù)ATPCS的 調(diào)用規(guī)則,在子程序調(diào)用中arm編譯器保存了R4R11寄存器,因此就沒有 必要再次保存。那么剩下的寄存器就必須予以保存,防止從中斷服務(wù)程序 返回后被破壞??梢杂脜R編語言和C語言書寫處理代碼。 首先假設(shè)初始化代碼中已正確建立了IRQ堆棧。 2 2嵌入式ARM開發(fā)教程之普普 通中斷處理通中斷處理 5嵌入式ARM中斷處
5、理的安全性與高效性研究 ;將同時(shí)發(fā)生的中斷全部服務(wù),以提高效率 LDMFD SP!,R0-R3,R12,R14 ;恢復(fù)上下文 在上述保存上下文中沒有必要保存SPSR。因在非嵌套的中斷處理程序中, 它不會(huì)被任何順序的中斷所破壞。 嵌入式ARM開發(fā)教程 6嵌入式ARM中斷處理的安全性與高效性研究 如果用C語言來書寫該處理程序,可以使用關(guān)鍵字一IRQ來說明,以 告訴編譯器實(shí)現(xiàn)如下的操作: 保存ATPCS規(guī)定的被破壞的寄存器; 保存其他中斷處理程序中用到的寄存器; 同時(shí)將(LR-4)賦予程序計(jì)數(shù)器PC,實(shí)現(xiàn)中斷程序的返回并且 恢復(fù)CPSR寄存器的內(nèi)容。 嵌入式ARM開發(fā)教程 7嵌入式ARM中斷處理的安
6、全性與高效性研究 普通中斷處理的C語言程序可以按如下格式編寫: 嵌入式ARM開發(fā)教程 8嵌入式ARM中斷處理的安全性與高效性研究 可見,無論是用C語言還是匯編語言來編寫,它們的工作原理都是一樣的。 圖2給出了普通中斷處理過程中,arm寄存器的保存示意圖(虛線是壓棧保 存,實(shí)線是彈?;謴?fù))。圖中與程序處理的步驟相對(duì)應(yīng),可以幫助理解處 理器上下文的保存過程。 嵌入式ARM開發(fā)教程 9嵌入式ARM中斷處理的安全性與高效性研究 有操作系統(tǒng)的嵌入式系統(tǒng)中,中斷的發(fā)生要求保存全部寄存器的內(nèi)容到任務(wù)的棧中, 它不是基于安全的考慮是因?yàn)榭赡苤袛鄷?huì)導(dǎo)致任務(wù)的切換。任務(wù)切換發(fā)生時(shí)所有任務(wù) 的寄存器的值都要保存到該
7、任務(wù)的棧中。下個(gè)任務(wù)的上下文將從該任務(wù)棧中得以恢復(fù) 到處理器的寄存器中。下面就本問題作出分析并給出實(shí)現(xiàn)的程序代碼。從圖1中斷處 理寄存器的保存可知,中斷發(fā)生后任務(wù)的CPSR和PC兩寄存器的值在IRQ模式的SPSR和 LR中,所以不能簡(jiǎn)單地切換到任務(wù)運(yùn)行的模式中,否則被中斷任務(wù)返回時(shí)的CPSR和PC 將不可見(因?yàn)樗鼈儽4嬖贗RQ模式的專用寄存器中,在其他模式中無法操作)。此時(shí), 可以考慮設(shè)置一些變量區(qū)作為媒介,將其予以轉(zhuǎn)存到任務(wù)運(yùn)行模式的棧中去。 下面假設(shè)任務(wù)切換是在SVC模式中運(yùn)行的。結(jié)合上面的分析,可以有圖3所示的保 存任務(wù)切換的示意圖(虛線是壓棧保存,實(shí)線是彈?;謴?fù);LR_Frame和S
8、PSR_Frame是 變量區(qū))。 3 3嵌入式ARM開發(fā)教程任任 務(wù)切換務(wù)切換 10嵌入式ARM中斷處理的安全性與高效性研究 嵌入式ARM開發(fā)教程 11嵌入式ARM中斷處理的安全性與高效性研究 結(jié)合圖3任務(wù)切換中斷處理中的步驟,可以用匯編語言寫出相對(duì)應(yīng)的中斷 處理程序: 嵌入式ARM開發(fā)教程 12嵌入式ARM中斷處理的安全性與高效性研究 嵌入式ARM開發(fā)教程 13嵌入式ARM中斷處理的安全性與高效性研究 如果希望在處理中斷時(shí)仍能響應(yīng)其他中斷請(qǐng)求以此來縮短中斷延時(shí), 就必須設(shè)計(jì)可重人性中斷??芍厝胄灾袛嗍翘幚矶鄠€(gè)中斷的一種方 法,但它也同時(shí)帶來新的問題。在IRQ中斷模式中,如果直接重新 允許了I
9、RQ中斷,此時(shí)因?yàn)閳?zhí)行一條BL指令而將子程序返回的地址 保存在LR_irq中,而在此間中斷發(fā)生了。新來的中斷會(huì)將其返回地 址裝入LR_irq中,此時(shí)舊中斷子程序的返回地址必將被覆蓋從而導(dǎo) 致系統(tǒng)紊亂。此種情形是無法通過將LR_irq壓棧來解決的,如程序 語句: 4 4嵌入式ARM開發(fā)教程可重可重 入性中斷入性中斷 14嵌入式ARM中斷處理的安全性與高效性研究 嵌入式ARM開發(fā)教程 15嵌入式ARM中斷處理的安全性與高效性研究 但是仍不能排除在保存LR之前中斷發(fā)生的可能性。要解決上述LR_irq被破 壞的問題,就必須切換處理器的模式,常見的是切換到SVC處理模式。在 SVC模式中,通過BL調(diào)用子
10、程序時(shí)會(huì)將返回地址保存在LR_SVC之中。此時(shí) 新中斷發(fā)生(因?yàn)樗鼤?huì)將返回地址保存到LR_irq而不是LR_SVC),不會(huì)破壞 舊中斷中子程序返回地址了。有了基于上述的原理分析再來編寫可重入性 中斷的代碼就思路清晰了。但是為了保證處理的高效性,盡可能地及早允 許中斷以縮短延時(shí),在保存完LR_irq和SPSR_irq后,就馬上切換到SVC模 式中并重新允許中斷,如圖4所示(虛線是壓棧保存,實(shí)線是彈?;謴?fù))。 嵌入式ARM開發(fā)教程 16嵌入式ARM中斷處理的安全性與高效性研究 嵌入式ARM開發(fā)教程 17嵌入式ARM中斷處理的安全性與高效性研究 結(jié)合圖4中的處理步驟,可以比較清晰地寫出可重入中斷處理
11、的匯編語言 程序: 嵌入式ARM開發(fā)教程 18嵌入式ARM中斷處理的安全性與高效性研究 在上面的可重人中斷中可能發(fā)生這種情形,某高優(yōu)先級(jí)中斷在中斷服務(wù)程序中因?yàn)橹?新允許了中斷請(qǐng)求而被另一低優(yōu)先級(jí)中斷所打斷,于是高優(yōu)先級(jí)中斷不得不等到低優(yōu) 先級(jí)中斷完畢后方可繼續(xù)運(yùn)行。這樣一來,高優(yōu)先級(jí)中斷服務(wù)的延遲將更加增大。 為了減少上述高優(yōu)先級(jí)中斷的延遲,特別引入了基于優(yōu)先級(jí)的可重人性中斷。它 的原則是:在中斷服務(wù)程序中只允許高于本中斷的其他中斷源予以請(qǐng)求中斷,因此一 個(gè)高優(yōu)先級(jí)的中斷將比一個(gè)低優(yōu)先級(jí)的中斷優(yōu)先得到服務(wù),這是大多數(shù)嵌入式系統(tǒng)中 所必需的。采取的方法是,當(dāng)某優(yōu)先級(jí)中斷發(fā)生時(shí),在其中斷處理程序
12、中可以使用屏 蔽位將低于或等于該優(yōu)先級(jí)的中斷予以屏蔽。特別需要注意的是,在退出本中斷時(shí)要 恢復(fù)原中斷寄存器的值。在此假設(shè)有這樣幾個(gè)中斷寄存器(其實(shí)arm的很多處理器都有 此類的中斷控制寄存器):IRQMask,中斷源屏蔽寄存器;IRQStatus,中斷標(biāo)志寄存 器;IRQClear,清除中斷標(biāo)志寄存器。同時(shí)假設(shè)中斷的優(yōu)先級(jí)是從高位(bit31)到低 位(bitO)遞減的,那么首先可以預(yù)定義如下的屏蔽變量值: 5 5嵌入式ARM開發(fā)教程基于優(yōu)先級(jí)的可重入中斷基于優(yōu)先級(jí)的可重入中斷 19嵌入式ARM中斷處理的安全性與高效性研究 嵌入式ARM開發(fā)教程 20嵌入式ARM中斷處理的安全性與高效性研究 嵌入式ARM開發(fā)教程 21嵌入式ARM中斷處理的安全性與高效性研究 22嵌入式ARM中斷處理的安全性與高效性研究 本程序的上下文保存與可重人中斷處理基本相同。增加的部分在于 中斷屏蔽碼的查詢與設(shè)置,相應(yīng)的處理步驟可以參考圖4。 嵌入式ARM開發(fā)教程 23嵌入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廠區(qū)道路橫平豎直施工方案
- 湖南舊鋼煙囪防腐施工方案
- 帶視頻的數(shù)學(xué)試卷
- 電纜線下作業(yè)施工方案
- 杭州日式屋頂花園施工方案
- 數(shù)控加工工藝與編程技術(shù)基礎(chǔ) 教案 模塊二 項(xiàng)目三 自動(dòng)編程(3-4)
- 智能制造與傳統(tǒng)制造的區(qū)別
- 石油化工靜電接地的接地網(wǎng)設(shè)計(jì)
- 健全公共衛(wèi)生體系的策略及實(shí)施路徑
- 環(huán)保與可持續(xù)發(fā)展在新型城鎮(zhèn)化中的作用
- 2024版非ST段抬高型急性冠脈綜合征診斷和治療指南解讀
- 中華人民共和國(guó)統(tǒng)計(jì)法
- 中考數(shù)學(xué)計(jì)算題練習(xí)100道(2024年中考真題)
- 主要腸內(nèi)營(yíng)養(yǎng)制劑成分比較
- 老年人各系統(tǒng)的老化改變
- 小學(xué)五年級(jí)綜合實(shí)踐課教案
- 煤礦井下供電常用計(jì)算公式及系數(shù)
- ISO14001:2015中文版(20211205141421)
- 汽車總裝車間板鏈輸送線的應(yīng)用研究
- 工作日志模板
- 購(gòu)銷合同模板(excel版)
評(píng)論
0/150
提交評(píng)論