日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]ARM中斷處理的安全性與高效性研究

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


引 言
    在嵌入式系統(tǒng)中常用的RISC處理器是ARM核,它具有體積小、功耗低、成本低、性?xún)r(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ā)生中斷后首先查詢(xún)相應(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ù)程序返回后被破壞。可以用匯編語(yǔ)言和C語(yǔ)言書(shū)寫(xiě)處理代碼。[!--empirenews.page--]
    首先假設(shè)初始化代碼中已正確建立了IRQ堆棧。

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

   
    可見(jiàn),無(wú)論是用C語(yǔ)言還是匯編語(yǔ)言來(lái)編寫(xiě),它們的工作原理都是一樣的。圖2給出了普通中斷處理過(guò)程中,ARM寄存器的保存示意圖(虛線(xiàn)是壓棧保存,實(shí)線(xiàn)是彈?;謴?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模式的專(zhuān)用寄存器中,在其他模式中無(wú)法操作)。此時(shí),可以考慮設(shè)置一些變量區(qū)作為媒介,將其予以轉(zhuǎn)存到任務(wù)運(yùn)行模式的棧中去。

[!--empirenews.page--]

    下面假設(shè)任務(wù)切換是在SVC模式中運(yùn)行的。結(jié)合上面的分析,可以有圖3所示的保存任務(wù)切換的示意圖(虛線(xiàn)是壓棧保存,實(shí)線(xiàn)是彈?;謴?fù);LR_Frame和SPSR_Frame是變量區(qū))。
    結(jié)合圖3任務(wù)切換中斷處理中的步驟,可以用匯編語(yǔ)言寫(xiě)出相對(duì)應(yīng)的中斷處理程序:

 

4 可重入性中斷
     如果希望在處理中斷時(shí)仍能響應(yīng)其他中斷請(qǐng)求以此來(lái)縮短中斷延時(shí),就必須設(shè)計(jì)可重人性中斷??芍厝胄灾袛嗍翘幚矶鄠€(gè)中斷的一種方法,但它也同時(shí)帶來(lái)新的問(wèn)題。在IRQ中斷模式中,如果直接重新允許了IRQ中斷,此時(shí)因?yàn)閳?zhí)行一條BL指令而將子程序返回的地址保存在LR_irq中,而在此間中斷發(fā)生了。新來(lái)的中斷會(huì)將其返回地址裝入LR_irq中,此時(shí)舊中斷子程序的返回地址必將被覆蓋從而導(dǎo)致系統(tǒng)紊亂。此種情形是無(wú)法通過(guò)將LR_irq壓棧來(lái)解決的,如程序語(yǔ)句:


    但是仍不能排除在保存LR之前中斷發(fā)生的可能性。要解決上述LR_irq被破壞的問(wèn)題,就必須切換處理器的模式,常見(jiàn)的是切換到SVC處理模式。在SVC模式中,通過(guò)BL調(diào)用子程序時(shí)會(huì)將返回地址保存在LR_SVC之中。此時(shí)新中斷發(fā)生(因?yàn)樗鼤?huì)將返回地址保存到LR_irq而不是LR_SVC),不會(huì)破壞舊中斷中子程序返回地址了。有了基于上述的原理分析再來(lái)編寫(xiě)可重入性中斷的代碼就思路清晰了。但是為了保證處理的高效性,盡可能地及早允許中斷以縮短延時(shí),在保存完LR_irq和SPSR_irq后,就馬上切換到SVC模式中并重新允許中斷,如圖4所示(虛線(xiàn)是壓棧保存,實(shí)線(xiàn)是彈?;謴?fù))。

                              

    結(jié)合圖4中的處理步驟,可以比較清晰地寫(xiě)出可重入中斷處理的匯編語(yǔ)言程序:

   

5 基于優(yōu)先級(jí)的可重入中斷
    在上面的可重人中斷中可能發(fā)生這種情形,某高優(yōu)先級(jí)中斷在中斷服務(wù)程序中因?yàn)橹匦略试S了中斷請(qǐng)求而被另一低優(yōu)先級(jí)中斷所打斷,于是高優(yōu)先級(jí)中斷不得不等到低優(yōu)先級(jí)中斷完畢后方可繼續(xù)運(yùn)行。這樣一來(lái),高優(yōu)先級(jí)中斷服務(wù)的延遲將更加增大。[!--empirenews.page--]
    為了減少上述高優(yōu)先級(jí)中斷的延遲,特別引入了基于優(yōu)先級(jí)的可重人性中斷。它的原則是:在中斷服務(wù)程序中只允許高于本中斷的其他中斷源予以請(qǐng)求中斷,因此一個(gè)高優(yōu)先級(jí)的中斷將比一個(gè)低優(yōu)先級(jí)的中斷優(yōu)先得到服務(wù),這是大多數(shù)嵌入式系統(tǒng)中所必需的。采取的方法是,當(dāng)某優(yōu)先級(jí)中斷發(fā)生時(shí),在其中斷處理程序中可以使用屏蔽位將低于或等于該優(yōu)先級(jí)的中斷予以屏蔽。特別需要注意的是,在退出本中斷時(shí)要恢復(fù)原中斷寄存器的值。在此假設(shè)有這樣幾個(gè)中斷寄存器(其實(shí)ARM的很多處理器都有此類(lèi)的中斷控制寄存器):IRQMask,中斷源屏蔽寄存器;IRQStatus,中斷標(biāo)志寄存器;IRQClear,清除中斷標(biāo)志寄存器。同時(shí)假設(shè)中斷的優(yōu)先級(jí)是從高位(bit31)到低位(bitO)遞減的,那么首先可以預(yù)定義如下的屏蔽變量值:


    本程序的上下文保存與可重人中斷處理基本相同。增加的部分在于中斷屏蔽碼的查詢(xún)與設(shè)置,相應(yīng)的處理步驟可以參考圖4。


結(jié) 語(yǔ)
    本文重點(diǎn)研究了ARM處理器在多種中斷處理中上下文保存的安全與高效性,結(jié)合處理器結(jié)構(gòu)圖和程序代碼分析了各種中斷的處理方案。對(duì)ARM處理器具有通用價(jià)值而不受不同廠商硬件的局限。
    文中涉及的程序源代碼都在ADSl.2開(kāi)發(fā)環(huán)境和SEP4020開(kāi)發(fā)評(píng)估板上測(cè)試過(guò)。實(shí)驗(yàn)證明此中斷處理技術(shù)是安全高效的。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

成都2022年10月19日 /美通社/ -- 近期,平安養(yǎng)老險(xiǎn)積極籌備個(gè)人養(yǎng)老金的產(chǎn)品設(shè)計(jì)和系統(tǒng)開(kāi)發(fā)工作,發(fā)展多樣化的養(yǎng)老金融產(chǎn)品,推動(dòng)商業(yè)養(yǎng)老保險(xiǎn)、個(gè)人養(yǎng)老金、專(zhuān)屬商業(yè)養(yǎng)老保險(xiǎn)等產(chǎn)品供給。 搭養(yǎng)老政策東風(fēng) ...

關(guān)鍵字: 溫度 BSP 東風(fēng) 大眾

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎(chǔ)單元,承載著生存與活動(dòng)的最基本功能。而對(duì)于理想空間的解構(gòu)意義卻在物理性容器之外,體現(xiàn)出人們對(duì)于空間和生活深層關(guān)系的思考,同時(shí)也塑造著人與空間的新型連接...

關(guān)鍵字: 溫度 BSP 智能化 進(jìn)程

上海2022年10月19日 /美通社/ -- 10月17日晚間,安集科技披露業(yè)績(jī)預(yù)告。今年前三季度,公司預(yù)計(jì)實(shí)現(xiàn)營(yíng)業(yè)收入7.54億元至8.33億元,同比增長(zhǎng)60.24%至77.03%;歸母凈利潤(rùn)預(yù)計(jì)為1.73億...

關(guān)鍵字: 電子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市經(jīng)濟(jì)和信息化局發(fā)布2022年度第一批北京市市級(jí)企業(yè)技術(shù)中心創(chuàng)建名單的通知,諾誠(chéng)健華正式獲得"北京市企業(yè)技術(shù)中心"認(rèn)定。 北京市企業(yè)技...

關(guān)鍵字: BSP ARMA COM 代碼

北京2022年10月18日 /美通社/ -- 10月14日,國(guó)際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國(guó)軟件定義存儲(chǔ)及超融合市場(chǎng)研究報(bào)告》,報(bào)告顯示:2022年上半年浪潮超融合銷(xiāo)售額同比增長(zhǎng)59.4%,近5倍于...

關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都銀行集團(tuán)成立60周年的紀(jì)念日。趁著首都銀行集團(tuán)成立60周年與首都銀行(中國(guó))在華深耕經(jīng)營(yíng)12年的“大日子”,圍繞作為外資金融機(jī)構(gòu)對(duì)在華戰(zhàn)略的構(gòu)想和業(yè)...

關(guān)鍵字: 數(shù)字化 BSP 供應(yīng)鏈 控制

東京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式會(huì)社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團(tuán)公司上海通運(yùn)國(guó)際物流有限公司(Nipp...

關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSP

廣州2022年10月18日 /美通社/ -- 10月15日,第 132 屆中國(guó)進(jìn)出口商品交易會(huì)("廣交會(huì)")于"云端"開(kāi)幕。本屆廣交會(huì)上高新技術(shù)企業(yè)云集,展出的智能產(chǎn)品超過(guò)140,...

關(guān)鍵字: 中國(guó)智造 BSP 手機(jī) CAN

要問(wèn)機(jī)器人公司哪家強(qiáng),波士頓動(dòng)力絕對(duì)是其中的佼佼者。近來(lái)年該公司在機(jī)器人研發(fā)方面獲得的一些成果令人印象深刻,比如其開(kāi)發(fā)的機(jī)器人會(huì)后空翻,自主爬樓梯等。這不,波士頓動(dòng)力又發(fā)布了其機(jī)器人組團(tuán)跳男團(tuán)舞的新視頻,表演的機(jī)器人包括...

關(guān)鍵字: 機(jī)器人 BSP 工業(yè)機(jī)器人 現(xiàn)代汽車(chē)

南京2022年10月17日 /美通社/ -- 日前《2022第三屆中國(guó)高端家電品牌G50峰會(huì)》于浙江寧波落幕,來(lái)自?xún)砂儆嗝袠I(yè)大咖、專(zhuān)家學(xué)者共同探討了在形勢(shì)依然嚴(yán)峻的當(dāng)下,如何以科技創(chuàng)新、高端化轉(zhuǎn)型等手段,幫助...

關(guān)鍵字: LINK AI BSP 智能家電

嵌入式教程

6897 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉