新聞中心

        ARM中斷處理的研究

        作者: 時間:2011-07-12 來源:網(wǎng)絡(luò) 收藏

        在嵌入式系統(tǒng)中常用的RISC器是核,它具有體積小、功耗低、成本低、性價比高的特點。然而,不管是哪種型號的器,也無論該嵌入式系統(tǒng)中是否有操作系統(tǒng),,特別是IRQ,始終是必須的,而處理的核心問題是上下文的保存。能否安全而又高效地保存上下文,將影響一個嵌入式系統(tǒng)的性能與穩(wěn)定。筆者對處理器的普通中斷處理、任務(wù)切換中斷處理、可重人中斷處理和基于優(yōu)先級的可重人性中斷處理的上下文保存技術(shù)進行分析與總結(jié)。為保證理論的正確性,核心的程序代碼都經(jīng)過了實驗的檢測。

        本文引用地址:http://www.104case.com/article/150484.htm

          1 系統(tǒng)中斷處理簡介

          ARM處理器的中斷主要有兩種:IRQ普通中斷和FIQ快速中斷。快速中斷本質(zhì)上與普通中斷沒有太大的差別,它們在處理機制上有許多相同的地方。IRQ中斷是最頻繁的也是最為影響系統(tǒng)性能的,所以對它的與處理也就最有價值。

          下面簡要地介紹一下IRQ異常發(fā)生時ARM處理器的工作過程。在IRQ中斷發(fā)生時,ARM處理器的硬件會自動執(zhí)行以下工作:

          ①將被中斷任務(wù)模式的CPSR值保存到IRQ模式中的SPSR寄存器中;

          ②將被中斷任務(wù)模式的PC值保存到IRQ模式中的LR寄存器中;

          ③將模式自動切換到IRQ模式,并將CPSR中的bit7位置1禁止后繼IRQ中斷的發(fā)生;

          ④PC被賦予0xl8的地址值,程序?qū)?xl8片開始執(zhí)行。結(jié)合圖1,可以更好地理解ARM中斷處理機制的工作過程。

          

        IRQ中斷處理寄存器保存示意圖

          2 普通中斷處理

          有些ARM嵌入式系統(tǒng)可能對中斷的要求比較低,即發(fā)生中斷后首先查詢相應(yīng)的中斷源,然后進行中斷服務(wù),最后從中斷服務(wù)程序中返回到被中斷處繼續(xù)運行程序。如何在這種簡單應(yīng)用中保證安全又高效地處理中斷呢?“安全”就意味著中斷發(fā)生時上下文被完好保存不被破壞,“高效”就是說保存盡可能少的寄存器(當然是建立在安全的基礎(chǔ)上的)。由圖1可知,在普通中斷處理中,中斷服務(wù)就可以在IRQ模式中運行。根據(jù)ATPCS的調(diào)用規(guī)則,在子程序調(diào)用中ARM編譯器保存了R4~R11寄存器,因此就沒有必要再次保存。那么剩下的寄存器就必須予以保存,防止從中斷服務(wù)程序返回后被破壞。可以用匯編語言和C語言書寫處理代碼。

          首先假設(shè)初始化代碼中已正確建立了IRQ堆棧。

          

        程序

          所有已使能中斷的查詢與服務(wù)>

          ;將同時發(fā)生的中斷全部服務(wù),以提高效率

          LDMFD SP!,{R0-R3,R12,R14} ;恢復(fù)上下文

          在上述保存上下文中沒有必要保存SPSR。因在非嵌套的中斷處理程序中,它不會被任何順序的中斷所破壞。

          如果用C語言來書寫該處理程序,可以使用關(guān)鍵字一IRQ來說明,以告訴編譯器實現(xiàn)如下的操作:

          ①保存.ATPCS規(guī)定的被破壞的寄存器;

          ②保存其他中斷處理程序中用到的寄存器;

          ③同時將(LR-4)賦予程序計數(shù)器PC,實現(xiàn)中斷程序的返回并且恢復(fù)CPSR寄存器的內(nèi)容。

          普通中斷處理的C語言程序可以按如下格式編寫:

          

        程序

          可見,無論是用C語言還是匯編語言來編寫,它們的工作原理都是一樣的。圖2給出了普通中斷處理過程中,ARM寄存器的保存示意圖(虛線是壓棧保存,實線是彈棧恢復(fù))。圖中與程序處理的步驟相對應(yīng),可以幫助理解處理器上下文的保存過程。

          

        普通中斷處理過程


        上一頁 1 2 下一頁

        關(guān)鍵詞: 研究 處理 中斷 ARM

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 顺昌县| 莒南县| 惠东县| 布尔津县| 安平县| 武川县| 天柱县| 三都| 惠州市| 稻城县| 马公市| 皮山县| 伊金霍洛旗| 博爱县| 栾川县| 逊克县| 瓦房店市| 农安县| 庆阳市| 古蔺县| 广德县| 岱山县| 吉木萨尔县| 青河县| 安阳市| 乌鲁木齐市| 拉孜县| 开封县| 循化| 龙陵县| 芦溪县| 道孚县| 沁水县| 北海市| 印江| 乾安县| 日照市| 株洲县| 合作市| 格尔木市| 大城县|