在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

            作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏
            引言

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

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

            ARM處理器的中斷主要有兩種:IRQ普通中斷和FIQ快速中斷??焖僦袛啾举|(zhì)上與普通中斷沒(méi)有太大的差別,它們?cè)谔幚頇C(jī)制上有許多相同的地方。IRQ中斷是最頻繁的也是最為影響系統(tǒng)性能的,所以對(duì)它的研究與處理也就最有價(jià)值。

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

            ①將被中斷任務(wù)模式的CPSR值保存到IRQ模式中的SPSR寄存器中;
            ②將被中斷任務(wù)模式的PC值保存到IRQ模式中的LR寄存器中;
            ③將模式自動(dòng)切換到IRQ模式,并將CPSR中的bit7位置1禁止后繼IRQ中斷的發(fā)生;
            ④PC被賦予0xl8的地址值,程序?qū)?xl8片開(kāi)始執(zhí)行。結(jié)合圖1,可以更好地理解ARM中斷處理機(jī)制的工作過(guò)程。



            2 普通中斷處理

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

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



            <所有已使能中斷的查詢與服務(wù)>
            ;將同時(shí)發(fā)生的中斷全部服務(wù),以提高效率
            LDMFD SP!,{R0-R3,R12,R14} ;恢復(fù)上下文

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

            ①保存.ATPCS規(guī)定的被破壞的寄存器;
            ②保存其他中斷處理程序中用到的寄存器;
            ③同時(shí)將(LR-4)賦予程序計(jì)數(shù)器PC,實(shí)現(xiàn)中斷程序的返回并且恢復(fù)CPSR寄存器的內(nèi)容。

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



            可見(jiàn),無(wú)論是用C語(yǔ)言還是匯編語(yǔ)言來(lái)編寫,它們的工作原理都是一樣的。圖2給出了普通中斷處理過(guò)程中,ARM寄存器的保存示意圖(虛線是壓棧保存,實(shí)線是彈?;謴?fù))。圖中與程序處理的步驟相對(duì)應(yīng),可以幫助理解處理器上下文的保存過(guò)程。



            3 任務(wù)切換

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

            上一頁(yè) 1 2 3 下一頁(yè)

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

            評(píng)論


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

            關(guān)閉