<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM中斷處理的安全性與高效性研究

          ARM中斷處理的安全性與高效性研究

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

          摘要 重點分析了器的多種,包括普通、任務(wù)切換處理、可重入中斷處理和基于優(yōu)先級的可重入性中斷處理的上下文保存技術(shù),并給出了程序予以實現(xiàn)。對普通的前后臺系統(tǒng)和帶OS的嵌入式系統(tǒng)都有實用價值。
          關(guān)鍵詞 中斷 安全 上下文保存

          本文引用地址:http://www.ex-cimer.com/article/152438.htm


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


          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中斷處理機制的工作過程。

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


          上一頁 1 2 3 4 下一頁

          關(guān)鍵詞: 高效 研究 安全性 處理 中斷 ARM

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();