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

當前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀] 在嵌入式系統(tǒng)中常用的RISC處理器是ARM核,它具有體積小、功耗低、成本低、性價比高的特點。然而,不管是哪種型號的ARM處理器,也無論該嵌入式系統(tǒng)中是否有操作系統(tǒng),中斷處理,特別是IRQ中斷,始終是

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

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

  ARM處理器的中斷主要有兩種:IRQ普通中斷和FIQ快速中斷。快速中斷本質(zhì)上與普通中斷沒有太大的差別,它們在處理機制上有許多相同的地方。IRQ中斷是最頻繁的也是最為影響系統(tǒng)性能的,所以對它的研究與處理也就最有價值。

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

  ①將被中斷任務(wù)模式的CPSR值保存到IRQ模式中的SPSR寄存器中;

 ?、趯⒈恢袛嗳蝿?wù)模式的PC值保存到IRQ模式中的LR寄存器中;

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

 ?、躊C被賦予0xl8的地址值,程序?qū)?xl8片開始執(zhí)行。結(jié)合圖1,可以更好地理解ARM中斷處理機制的工作過程。

  

  2 普通中斷處理

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

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

  

  <所有已使能中斷的查詢與服務(wù)>

  ;將同時發(fā)生的中斷全部服務(wù),以提高效率

  LDMFD SP!,{R0-R3,R12,R14} ;恢復(fù)上下文

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

  如果用C語言來書寫該處理程序,可以使用關(guān)鍵字一IRQ來說明,以告訴編譯器實現(xiàn)如下的操作:

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

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

 ?、弁瑫r將(LR-4)賦予程序計數(shù)器PC,實現(xiàn)中斷程序的返回并且恢復(fù)CPSR寄存器的內(nèi)容。

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

  

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

  

3 任務(wù)切換


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

  下面假設(shè)任務(wù)切換是在SVC模式中運行的。結(jié)合上面的分析,可以有圖3所示的保存任務(wù)切換的示意圖(虛線是壓棧保存,實線是彈?;謴?fù);LR_Frame和SPSR_Frame是變量區(qū))。

  

  結(jié)合圖3任務(wù)切換中斷處理中的步驟,可以用匯編語言寫出相對應(yīng)的中斷處理程序:

  

  

  4 可重入性中斷

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

  

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

  

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

  


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

在半導(dǎo)體產(chǎn)業(yè)的傳統(tǒng)認知中,Arm 是構(gòu)建數(shù)字世界的“圖紙?zhí)峁┥獭?。然而,隨著代理式 AI(Agentic AI)對異構(gòu)計算需求的指數(shù)級增長,單純的 IP 和計算子系統(tǒng)授權(quán)已難以完全消納市場對于算力部署時效性的渴求。Arm...

關(guān)鍵字: ARM AGI CPU 數(shù)據(jù)中心 AI

展望未來,當摩根士丹利預(yù)測中 800 倍增長的機器人半導(dǎo)體市場真正兌現(xiàn)時,Arm 的物理 AI 平臺將作為底層基礎(chǔ)設(shè)施,支撐起從工廠到家庭、從道路到天空的智能物理世界。計算的邊界正在被重新定義,而 Arm 已在新邊界上筑...

關(guān)鍵字: ARM 物理 AI 自動駕駛 機器人

3月25日消息,一直以來,Arm都是一家對外提供IP授權(quán)的芯片企業(yè),包括CPU、GPU、NPU和各種系統(tǒng)IP。

關(guān)鍵字: ARM META

成立三十余年來,Arm一直是芯片行業(yè)特殊的“幕后推手”——不生產(chǎn)一顆芯片,卻定義了全球99%智能手機的底層架構(gòu)。然而,這家長期保持中立的IP授權(quán)巨頭,如今正打破自己一手建立的商業(yè)規(guī)則。

關(guān)鍵字: ARM CPU 芯片

Arm 首次將其平臺矩陣拓展至量產(chǎn)芯片產(chǎn)品,為業(yè)界提供覆蓋 IP、Arm計算子系統(tǒng) (CSS)及芯片的最廣泛的計算產(chǎn)品選擇。 發(fā)布首款由 Arm 設(shè)計的數(shù)據(jù)中心 CPU——Arm AGI CPU,專為代理式AI 基...

關(guān)鍵字: ARM CPU 數(shù)據(jù)中心 代理式AI

為下一代 AI 基礎(chǔ)設(shè)施實現(xiàn)突破性機架級性能、擴展性和效率

關(guān)鍵字: ARM AGI CPU 代理式AI

在工業(yè)控制、汽車電子等實時性要求嚴苛的領(lǐng)域,中斷風暴如同懸在系統(tǒng)頭頂?shù)倪_摩克利斯之劍——當多個高優(yōu)先級中斷密集觸發(fā)時,傳統(tǒng)MCU常因處理能力不足陷入癱瘓。ARM Cortex-M內(nèi)核通過NVIC(嵌套向量中斷控制器)的優(yōu)...

關(guān)鍵字: 中斷風暴 ARM

在現(xiàn)代電子設(shè)備的研發(fā)、生產(chǎn)與維護鏈條中,JTAG(Joint Test Action Group,聯(lián)合測試行動組)技術(shù)如同一條"隱形橋梁",連接著開發(fā)者與芯片內(nèi)部的核心邏輯。從最初解決電路板測試難題的工業(yè)標準,到如今成為...

關(guān)鍵字: JTAG ARM

當工程師將代碼從經(jīng)典的8051架構(gòu)遷移至現(xiàn)代ARM Cortex-M系列時,常常會遇到因內(nèi)存對齊規(guī)則差異導(dǎo)致的硬件異?;蛐阅芟陆祮栴}。以某物聯(lián)網(wǎng)設(shè)備廠商的遷移案例為例,其將基于8051的溫濕度傳感器通信協(xié)議移植至STM3...

關(guān)鍵字: ARM 8051
關(guān)閉