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

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件

引言

  目前,在嵌入式處理器芯片中,以ARM7為核心的處理器是應(yīng)用較多的一種。它具有多種工作模式,并且支持兩種不同的指令集(標(biāo)準(zhǔn)32位ARM指令集和16位Thumb指令集)。μC/OSII是專為嵌入式應(yīng)用設(shè)計(jì)的搶占式、多任務(wù)實(shí)時操作系統(tǒng),可用于各類8位、16位和32位單片機(jī)或DSP。μC/OSII向ARM7移植具有得天獨(dú)厚的優(yōu)點(diǎn),所以“μC/OSII+ARM7”成為廣泛應(yīng)用的一款平臺。

  不管是哪種型號的ARM處理器,也無論該嵌入式系統(tǒng)中是否有操作系統(tǒng),在計(jì)算機(jī)與外界實(shí)時交互的過程中,中斷技術(shù)都是一項(xiàng)關(guān)鍵的技術(shù)。當(dāng)外部事件發(fā)生時,CPU必須及時響應(yīng)中斷以實(shí)現(xiàn)對相應(yīng)事件的處理,因此能否中斷嵌套是影響嵌入式系統(tǒng)實(shí)時性能的主要因素。

  1 ARM7的中斷處理

  ARM7處理器的中斷主要有兩種,本文主要討論IRQ中斷異常的響應(yīng)機(jī)制。當(dāng)中斷請求IRQ到來使CPU進(jìn)入中斷響應(yīng)時,CPU將會自動完成下列工作:首先,將PC、CPSR的當(dāng)前值存入中斷模式的LR、SPSR中;然后,操作CPSR中的運(yùn)行狀態(tài)位,使CPU進(jìn)入中斷模式并關(guān)閉中斷;最后將PC的值改成0x00000018,從而使CPU的執(zhí)行跳轉(zhuǎn)到IRQ中斷入口0x00000018處。異常向量表中的0x00000018處使用一條“LDR PC,[PC,#?0xff0]”指令,在IRQ處使用的這條指令與其他向量不同。當(dāng)CPU執(zhí)行這條指令但還沒有跳轉(zhuǎn)時,PC的值為0x00000020(因?yàn)锳RM7TDMI內(nèi)核是三級流水結(jié)構(gòu)),0x00000020減去0x00000FF0為0xFFFFF030,這是VIC的特殊寄存器VICVectAddr的地址單元。這個寄存器保存當(dāng)前將要服務(wù)的IRQ的中斷服務(wù)程序的入口,故讀取VICVectAddr寄存器的值,然后放入PC程序指針,即跳轉(zhuǎn)到相應(yīng)中斷服務(wù)程序,從而使CPU開始執(zhí)行中斷服務(wù)程序。

  2 Handler宏分析

  “μC/OSII+ARM7”系統(tǒng)中,只使用了ARM7的IRQ中斷。由于不同的ARM芯片的中斷系統(tǒng)并不完全一樣,因此不可能編寫出對所有使用ARM核的處理器通用的中斷及時鐘節(jié)拍移植代碼。但是,為了使用戶用C語言編寫中斷服務(wù)程序時不必為處理器的硬件區(qū)別而困擾,這里根據(jù)μC/OSII對中斷服務(wù)程序的要求以及ARM7體系結(jié)構(gòu)和ADS編譯器的特點(diǎn),編寫了一個適用于所有基于ARM7核處理器的匯編宏--Handler。這個宏實(shí)現(xiàn)了“μC/OSII+ ARM7”中斷服務(wù)程序的匯編語言代碼與C語言函數(shù)代碼之間的通用接口。其作用是對用戶的C語言中斷處理程序進(jìn)行包裝,只有通過這個包裝之后,系統(tǒng)才能執(zhí)行用戶的中斷處理程序。

  中斷服務(wù)程序流程如圖1所示。在進(jìn)入Handler宏中,首先保存LR、SPSR以及相關(guān)寄存器的值于中斷模式下的堆棧中,以便于斷點(diǎn)恢復(fù)。然后使記錄系統(tǒng)中斷次數(shù)的全局變量OSIntNeSTing加1并關(guān)中斷切換到系統(tǒng)模式,調(diào)用C語言中斷處理程序。在執(zhí)行完中斷處理程序后,調(diào)用出中斷函數(shù),以獲取最高優(yōu)先級就緒任務(wù)的任務(wù)控制塊指針和任務(wù)優(yōu)先級。返回中斷模式后,通過比較當(dāng)前任務(wù)與待切換任務(wù)的優(yōu)先級,判斷是否進(jìn)行任務(wù)切換,最后返回斷點(diǎn)。


圖1 中斷服務(wù)程序流程

  IRQ異常處理代碼的匯編部分--Handler宏:

  MACRO

  $IRQ_Label HANDLER $IRQ_ExcepTION_Function

  EXPORT $IRQ_Label;輸出的標(biāo)號

  IMPORT $IRQ_Exception_Function;引用的外部標(biāo)號

  $IRQ_Label

  SUB LR, LR, #4;計(jì)算返回地址

  STMFD SP!, {R0?R3, R12, LR};保存任務(wù)環(huán)境

  MRS R3, SPSR;保存狀態(tài)

  STMFD SP, {R3,SP,LR}^;保存用戶狀態(tài)的R3、SP、LR

  ;OSIntNesting++

  LDR R2,=OSIntNesting

  LDRB R1, [R2]

  ADD R1, R1, #1

  STRB R1, [R2]

  SUB SP, SP, #4*3

  MSR CPSR_c, #(NoInt | SYS32Mode)

  ;切換到系統(tǒng)模式以便對相關(guān)寄存器進(jìn)行操作

  CMP R1, #1

  LDREQ SP, =StackUsr

  ;在第1次中斷時就重新開辟一個專門存儲中斷中用到

  ;的變量以避免存儲空間的沖突

  BL $IRQ_Exception_Function ;調(diào)用C語言的中斷處理程序

  MSR CPSR_c, #(NoInt | SYS32Mode);切換到系統(tǒng)模式

  LDR R2, =OsEnterSum

  ;OsEnterSum,使OSIntExit退出時中斷關(guān)閉

  MOV R1, #1

  STR R1, [R2]

  BL OSIntExit

  ;獲取最高優(yōu)先級就緒任務(wù)的任務(wù)控制塊指針和優(yōu)先級

  LDR R2, =OsEnterSum

  ;中斷服務(wù)程序要退出,所以O(shè)sEnterSum=0

  MOV R1, #0

  STR R1, [R2]

  MSR CPSR_c, #(NoInt | IRQ32Mode) ;切換回中斷模式

  LDMFD SP, {R3, SP, LR}^ ;恢復(fù)用戶狀態(tài)的R3、SP、LR

  LDR R0, =OSTCBHighRdy

  LDR R0, [R0]

  LDR R1, =OSTCBCur

  LDR R1, [R1]

  CMP R0, R1

  ADD SP, SP, #4*3

  MSR SPSR_cxsf, R3

  LDMEQFD SP!, {R0R3, R12, PC}^ ;不進(jìn)行任務(wù)切換

  LDR PC, =OSIntCtxSw;進(jìn)行任務(wù)切換

  MEND

  END

  通過對Handler宏的分析可知,用戶的C語言中斷處理程序是在特權(quán)模式--系統(tǒng)模式下運(yùn)行的,并且CPU在執(zhí)行中斷服務(wù)程序時中斷都是關(guān)閉的,所以本系統(tǒng)采用的是最為簡單的非嵌套中斷方式。這種方式的優(yōu)點(diǎn)是,上下文數(shù)據(jù)不會被任何順序的中斷所破壞;缺點(diǎn)是,在中斷服務(wù)程序執(zhí)行時不能根據(jù)中斷優(yōu)先級進(jìn)行中斷嵌套,延時時間長,只有當(dāng)一個ISR完全結(jié)束并退出中斷后才重新接受中斷,降低了系統(tǒng)的實(shí)時特性。為提高系統(tǒng)的實(shí)時性,需要對其中斷進(jìn)行優(yōu)化。

  3 中斷的優(yōu)化

  改寫μC/OSII 內(nèi)核中 HANDLER 宏可以實(shí)現(xiàn)ARM的中斷嵌套,這樣做雖然提高了系統(tǒng)的實(shí)時性,但損害了系統(tǒng)運(yùn)行的穩(wěn)定性和可移植性。通過對中斷過程的分析,下面給出一種編寫中斷服務(wù)程序的模板,充分利用ISR執(zhí)行在特權(quán)模式--系統(tǒng)模式這一特點(diǎn)來實(shí)現(xiàn)中斷嵌套的條件。中斷服務(wù)程序模板如下:

  void ISR(void){

  OS_ENTER_CRITICAL();//在中斷服務(wù)程序中關(guān)中斷清中斷標(biāo)志;//防止沒有清中斷標(biāo)志使得中斷多次進(jìn)入關(guān)閉低優(yōu)先級;//禁止低優(yōu)先級中斷

  S_EXIT_CRITICAL();//在中斷服務(wù)程序中開中斷用戶的C語言代碼;//進(jìn)行用戶在中斷中要做的工作

  VICVectAddr=0;//將中斷服務(wù)程序的入口地址置0

  }

  由于Handler宏中已將LR、SPSR、返回地址和發(fā)生中斷前的堆棧指針等寄存器入棧保存,所以接下來要做的就只剩下開關(guān)中斷的工作。由于在進(jìn)入C中斷處理程序之前進(jìn)入的是關(guān)中斷系統(tǒng)模式,所以必須在C語言中重新打開中斷,而C語言是不能進(jìn)行寄存器操作的,因此必須調(diào)用軟中斷OS_EXIT_CRITICAL()重新打開中斷。在開中斷之前,要判斷將全局變量OsEnterSum減1后是否為0,所以必須在調(diào)用開中斷之前調(diào)用軟中斷OS_ENTER_CRITICAL()將OsEnterSum變成1。在臨界區(qū)中可以進(jìn)行一些處理,如清中斷標(biāo)志、關(guān)低優(yōu)先級中斷等。進(jìn)行C語言中斷服務(wù)程序之后要將VICVectAddr置位為0,這是ARM7處理器核的要求必須進(jìn)行這樣的編寫,否則會導(dǎo)致一些錯誤(如不能第2次進(jìn)入中斷等)。

  結(jié)語

  “μC/OSII+ ARM7”是當(dāng)前嵌入式系統(tǒng)中廣泛應(yīng)用的一款平臺,適合于復(fù)雜度不是很高的中小型嵌入式系統(tǒng)。本文在深入分析”μC/OSII+ ARM7”中斷機(jī)制的基礎(chǔ)上,對IRQ中斷響應(yīng)機(jī)制進(jìn)行了改進(jìn),提出了優(yōu)化方案。實(shí)驗(yàn)證明,此方法可以實(shí)現(xiàn)中斷的嵌套并且提高系統(tǒng)實(shí)時性,具有一定的應(yīng)用價值。

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

2025年8月14日,致力于亞太地區(qū)市場的國際領(lǐng)先半導(dǎo)體元器件分銷商---大聯(lián)大控股宣布,其旗下詮鼎推出基于新突思(Synaptics)SL1680嵌入式處理器的AI疲勞駕駛檢測方案。

關(guān)鍵字: AI 嵌入式處理器 Type-C

對海洋鋪管船鋪管裝備支撐結(jié)構(gòu)的特點(diǎn)及類型進(jìn)行了簡單分析 ,對帶有法蘭眼板(180 mm的鋼鍛件)的支撐鉸座的焊接質(zhì)量控制要點(diǎn)進(jìn)行了詳細(xì)闡述 , 最終獲得滿足工藝要求的產(chǎn)品 ,可為高端海工項(xiàng)目的監(jiān)造提供參考。

關(guān)鍵字: 鋼鍛件 焊接檢驗(yàn) 質(zhì)量控制 海工裝備 方法

嵌入式處理器是嵌入式系統(tǒng)的核心,是控制、輔助系統(tǒng)運(yùn)行的硬件單元。范圍極其廣闊,從最初的4位處理器,目前仍在大規(guī)模應(yīng)用的8位單片機(jī),到最新的受到廣泛青睞的32位,64位嵌入式CPU。

關(guān)鍵字: 嵌入式處理器 ARM

米爾發(fā)布基于STM32MP257設(shè)計(jì)的嵌入式處理器模塊MYC-LD25X核心板及開發(fā)板。核心板基于STM32MP2系列是意法半導(dǎo)體推出最新一代工業(yè)級64位微處理器,采用LGA 252 PIN設(shè)計(jì),存儲配置1GB/2GB...

關(guān)鍵字: 核心板 開發(fā)板 嵌入式處理器

隨著全球?qū)沙掷m(xù)發(fā)展的日益關(guān)注,新能源技術(shù)作為替代傳統(tǒng)能源的重要選擇,正迅速發(fā)展并深入各個領(lǐng)域。在這一技術(shù)革新的浪潮中,嵌入式技術(shù)作為關(guān)鍵的智能化解決方案,正在為新能源行業(yè)的發(fā)展注入新的動力和創(chuàng)新。

關(guān)鍵字: 核心板 嵌入式處理器

嵌入式處理器是一種特殊的計(jì)算機(jī)處理器,它被設(shè)計(jì)用于嵌入到各種設(shè)備和系統(tǒng)中,以實(shí)現(xiàn)特定的功能。由于其低功耗、高性能和可靠性等特點(diǎn),嵌入式處理器在許多領(lǐng)域都有廣泛的應(yīng)用,如汽車電子、工業(yè)控制、醫(yī)療設(shè)備等。本文將對嵌入式處理器...

關(guān)鍵字: 嵌入式處理器 嵌入式系統(tǒng)

2023年10月10日, [恩智浦創(chuàng)新技術(shù)論壇] 在深圳灣萬麗酒店舉行,眾多工業(yè)、物聯(lián)網(wǎng)、新能源和醫(yī)療等行業(yè)的企業(yè)出席論壇,深入交流市場趨勢與行業(yè)洞察,一同討論如何協(xié)同面對市場的機(jī)遇與挑戰(zhàn),共同促進(jìn)未來市場的發(fā)展。米爾電...

關(guān)鍵字: NXP 嵌入式處理器

據(jù)業(yè)內(nèi)信息報道,昨天 AMD 在 Embedded World 上宣布了其第四代 EPYC 嵌入式處理器,該處理器采用其 Zen 4 架構(gòu),旨在云和企業(yè)計(jì)算以及工廠車間工業(yè)邊緣服務(wù)器中的嵌入式網(wǎng)絡(luò)、安全、防火墻和存儲。

關(guān)鍵字: Zen 4 AMD EPYC 嵌入式處理器

摘要:近年來隨著國家經(jīng)濟(jì)快速發(fā)展,我國高壓電力線路的覆蓋面積也逐年增大。其中,林地高壓電力線路是我國目前重點(diǎn)發(fā)展的電力工程項(xiàng)目之一,受到社會各界的廣泛關(guān)注?;诖?現(xiàn)主要對林地高壓電力線路綠色施工管理與環(huán)境保護(hù)現(xiàn)狀進(jìn)行了...

關(guān)鍵字: 綠色施工管理 環(huán)境保護(hù) 方法
關(guān)閉