新聞中心

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

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

        作者: 時間:2009-07-02 來源:網絡 收藏

        下面假設任務切換是在SVC模式中運行的。結合上面的分析,可以有圖3所示的保存任務切換的示意圖(虛線是壓棧保存,實線是彈棧恢復;LR_Frame和SPSR_Frame是變量區)。
        結合圖3任務切換中的步驟,可以用匯編語言寫出相對應的程序:

        4 可重入性
        如果希望在中斷時仍能響應其他中斷請求以此來縮短中斷延時,就必須設計可重人性中斷。可重入性中斷是處理多個中斷的一種方法,但它也同時帶來新的問題。在IRQ中斷模式中,如果直接重新允許了IRQ中斷,此時因為執行一條BL指令而將子程序返回的地址保存在LR_irq中,而在此間中斷發生了。新來的中斷會將其返回地址裝入LR_irq中,此時舊中斷子程序的返回地址必將被覆蓋從而導致系統紊亂。此種情形是無法通過將LR_irq壓棧來解決的,如程序語句:


        但是仍不能排除在保存LR之前中斷發生的可能性。要解決上述LR_irq被破壞的問題,就必須切換處理器的模式,常見的是切換到SVC處理模式。在SVC模式中,通過BL調用子程序時會將返回地址保存在LR_SVC之中。此時新中斷發生(因為它會將返回地址保存到LR_irq而不是LR_SVC),不會破壞舊中斷中子程序返回地址了。有了基于上述的原理分析再來編寫可重入性中斷的代碼就思路清晰了。但是為了保證處理的性,盡可能地及早允許中斷以縮短延時,在保存完LR_irq和SPSR_irq后,就馬上切換到SVC模式中并重新允許中斷,如圖4所示(虛線是壓棧保存,實線是彈棧恢復)。

        結合圖4中的處理步驟,可以比較清晰地寫出可重入中斷處理的匯編語言程序:

        5 基于優先級的可重入中斷
        在上面的可重人中斷中可能發生這種情形,某高優先級中斷在中斷服務程序中因為重新允許了中斷請求而被另一低優先級中斷所打斷,于是高優先級中斷不得不等到低優先級中斷完畢后方可繼續運行。這樣一來,高優先級中斷服務的延遲將更加增大。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 泾川县| 台北市| 阳原县| 磐石市| 缙云县| 尼玛县| 枣强县| 巩义市| 博爱县| 独山县| 班戈县| 任丘市| 开原市| 阜宁县| 文成县| 宁波市| 庆安县| 黄骅市| 克拉玛依市| 绥中县| 佛教| 太白县| 定安县| 沛县| 古交市| 五峰| 新乡县| 长子县| 北流市| 五台县| 夹江县| 广灵县| 南丰县| 个旧市| 新巴尔虎右旗| 金沙县| 永寿县| 巴马| 清河县| 临海市| 广饶县|