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

          新聞中心

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

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

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

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

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


          所有已使能的查詢與服務>
          ;將同時發(fā)生的全部服務,以提
          LDMFD SP!,{R0-R3,R12,R14} ;恢復上下文
          在上述保存上下文中沒有必要保存SPSR。因在非嵌套的程序中,它不會被任何順序的中斷所破壞。
          如果用C語言來書寫該程序,可以使用關鍵字一IRQ來說明,以告訴編譯器實現(xiàn)如下的操作:
          ①保存.ATPCS規(guī)定的被破壞的寄存器;
          ②保存其他中斷程序中用到的寄存器;
          ③同時將(LR-4)賦予程序計數(shù)器PC,實現(xiàn)中斷程序的返回并且恢復CPSR寄存器的內(nèi)容。
          普通中斷處理的C語言程序可以按如下格式編寫:


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

          3 任務切換
          有操作系統(tǒng)的嵌入式系統(tǒng)中,中斷的發(fā)生要求保存全部寄存器的內(nèi)容到任務的棧中,它不是基于安全的考慮是因為可能中斷會導致任務的切換。任務切換發(fā)生時所有任務的寄存器的值都要保存到該任務的棧中。下個任務的上下文將從該任務棧中得以恢復到處理器的寄存器中。下面就本問題作出分析并給出實現(xiàn)的程序代碼。從圖1中斷處理寄存器的保存可知,中斷發(fā)生后任務的CPSR和PC兩寄存器的值在IRQ模式的SPSR和LR中,所以不能簡單地切換到任務運行的模式中,否則被中斷任務返回時的CPSR和PC將不可見(因為它們保存在IRQ模式的專用寄存器中,在其他模式中無法操作)。此時,可以考慮設置一些變量區(qū)作為媒介,將其予以轉(zhuǎn)存到任務運行模式的棧中去。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();