www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

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

在嵌入式系統(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寄存器中;

 ?、蹖⒛J阶詣?dòng)切換到IRQ模式,并將CPSR中的bit7位置1禁止后繼IRQ中斷的發(fā)生;

 ?、躊C被賦予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ū)寫(xiě)處理代碼。

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

  

 

  <所有已使能中斷的查詢與服務(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)如下的操作:

 ?、俦4?ATPCS規(guī)定的被破壞的寄存器;

 ?、诒4嫫渌袛嗵幚沓绦蛑杏玫降募拇嫫?

 ?、弁瑫r(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寄存器的保存示意圖(虛線是壓棧保存,實(shí)線是彈?;謴?fù))。圖中與程序處理的步驟相對(duì)應(yīng),可以幫助理解處理器上下文的保存過(guò)程。

  

[!--empirenews.page--]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)行模式的棧中去。

  下面假設(shè)任務(wù)切換是在SVC模式中運(yùn)行的。結(jié)合上面的分析,可以有圖3所示的保存任務(wù)切換的示意圖(虛線是壓棧保存,實(shí)線是彈棧恢復(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所示(虛線是壓棧保存,實(shí)線是彈棧恢復(fù))。

  

 

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

  

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

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(chē)(EV)作為新能源汽車(chē)的重要代表,正逐漸成為全球汽車(chē)產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車(chē)的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車(chē)的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車(chē) 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車(chē)場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周?chē)娮釉O(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉