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

當(dāng)前位置:首頁(yè) > 電源 > 數(shù)字電源
[導(dǎo)讀]引言目前,在嵌入式處理器芯片中,以ARM7為核心的處理器是應(yīng)用較多的一種。它具有多種工作模式,并且支持兩種不同的指令集(標(biāo)準(zhǔn)32位ARM指令集和16位Thumb指令集)。μC/OSII是專為嵌入式應(yīng)用設(shè)計(jì)的搶占式、多任務(wù)

引言

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

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

1  ARM7的中斷處理

ARM7處理器的中斷主要有兩種,本文主要討論IRQ中斷異常的響應(yīng)機(jī)制。當(dāng)中斷請(qǐng)求IRQ到來(lái)使CPU進(jìn)入中斷響應(yīng)時(shí),CPU將會(huì)自動(dòng)完成下列工作:首先,將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í)行這條指令但還沒(méi)有跳轉(zhuǎn)時(shí),PC的值為0x00000020(因?yàn)?strong>ARM7TDMI內(nèi)核是三級(jí)流水結(jié)構(gòu)),0x00000020減去0x00000FF0為0xFFFFF030,這是VIC的特殊寄存器VICVectAddr的地址單元。這個(gè)寄存器保存當(dāng)前將要服務(wù)的IRQ的中斷服務(wù)程序的入口,故讀取VICVectAddr寄存器的值,然后放入PC程序指針,即跳轉(zhuǎn)到相應(yīng)中斷服務(wù)程序,從而使CPU開(kāi)始執(zhí)行中斷服務(wù)程序。

2  Handler宏分析

“μC/OSII+ARM7”系統(tǒng)中,只使用了ARM7的IRQ中斷。由于不同的ARM芯片的中斷系統(tǒng)并不完全一樣,因此不可能編寫(xiě)出對(duì)所有使用ARM核的處理器通用的中斷及時(shí)鐘節(jié)拍移植代碼。但是,為了使用戶用C語(yǔ)言編寫(xiě)中斷服務(wù)程序時(shí)不必為處理器的硬件區(qū)別而困擾,這里根據(jù)μC/OSII對(duì)中斷服務(wù)程序的要求以及ARM7體系結(jié)構(gòu)和ADS編譯器的特點(diǎn),編寫(xiě)了一個(gè)適用于所有基于ARM7核處理器的匯編宏--Handler。這個(gè)宏實(shí)現(xiàn)了“μC/OSII+ ARM7”中斷服務(wù)程序的匯編語(yǔ)言代碼與C語(yǔ)言函數(shù)代碼之間的通用接口。其作用是對(duì)用戶的C語(yǔ)言中斷處理程序進(jìn)行包裝,只有通過(guò)這個(gè)包裝之后,系統(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語(yǔ)言中斷處理程序。在執(zhí)行完中斷處理程序后,調(diào)用出中斷函數(shù),以獲取最高優(yōu)先級(jí)就緒任務(wù)的任務(wù)控制塊指針和任務(wù)優(yōu)先級(jí)。返回中斷模式后,通過(guò)比較當(dāng)前任務(wù)與待切換任務(wù)的優(yōu)先級(jí),判斷是否進(jìn)行任務(wù)切換,最后返回?cái)帱c(diǎn)。


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

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

MACRO

$IRQ_Label HANDLER $IRQ_ExcepTION_Function

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

IMPORT $IRQ_Exception_Function;引用的外部標(biāo)號(hà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)模式以便對(duì)相關(guān)寄存器進(jìn)行操作

CMP R1, #1

LDREQ SP, =StackUsr

;在第1次中斷時(shí)就重新開(kāi)辟一個(gè)專門(mén)存儲(chǔ)中斷中用到的變量以避免存儲(chǔ)空間的沖突

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

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

LDR R2, =OsEnterSum

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

MOV R1, #1

STR R1, [R2]

BL OSIntExit

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

[!--empirenews.page--]

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

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

3  中斷的優(yōu)化

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

void ISR(void){

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

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

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

}

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

結(jié)語(yǔ)

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

本站聲明: 本文章由作者或相關(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)系本站刪除。
換一批
延伸閱讀

香港2025年9月11日 /美通社/ -- 華欽科技集團(tuán)(納斯達(dá)克代碼:CLPS,以下簡(jiǎn)稱"華欽科技"或"集團(tuán)")近日宣布成功利用人工智能(AI),包括微軟Copilot等客戶指定AI模型,完成對(duì)一家香港大型銀行30年歷...

關(guān)鍵字: 人工智能 PS REACT 測(cè)試

中國(guó)鄭州2025年9月5日 /美通社/ --?全球領(lǐng)先的電動(dòng)客車制造商宇通客車("宇通",上交所代碼:600066)全新升級(jí)的車聯(lián)網(wǎng)系統(tǒng)Link+采用先進(jìn)技術(shù)實(shí)現(xiàn)車隊(duì)車輛與管理平臺(tái)的智能互聯(lián)。作為Vehicle+升級(jí)版,...

關(guān)鍵字: LINK 車聯(lián)網(wǎng) AI PS

超高功率密度AI電源模塊MPC24380破解算力升級(jí)的能源與散熱難題 上海2025年8月27日 /美通社/ -- 8月26日,elexcon2025-第22屆深圳國(guó)際電子展正式拉開(kāi)帷幕。為了表彰在"AI與雙碳"雙線技術(shù)...

關(guān)鍵字: 電子 AI芯片 PS BSP

北京2025年8月20日 /美通社/ -- 全球領(lǐng)先的市場(chǎng)研究公司之一益普索Ipsos,宣布與斯坦福大學(xué)政治與社會(huì)變革實(shí)驗(yàn)室(PASCL)達(dá)成開(kāi)創(chuàng)性合作,共同探索人工智能(AI)與合成數(shù)據(jù)在市場(chǎng)與消費(fèi)者研究中的創(chuàng)新應(yīng)用。...

關(guān)鍵字: 斯坦福 人工智能 PS OS

-DXC助力Northeast Grocery實(shí)現(xiàn)數(shù)字化轉(zhuǎn)型,為其節(jié)省4000萬(wàn)美元 DXC為Northeast Grocery簡(jiǎn)化了復(fù)雜流程,并加速了其創(chuàng)新路線圖 弗吉尼亞州阿什本2025年8月12日 /美通社/...

關(guān)鍵字: 數(shù)字化 EAST PS TOP

8月14日消息,據(jù)媒體報(bào)道,索尼首席財(cái)務(wù)官Hiroki Totoki在2025財(cái)年第一季度財(cái)報(bào)電話會(huì)議上宣布,為應(yīng)對(duì)美國(guó)關(guān)稅影響,公司已對(duì)PlayStation 5(PS5)供應(yīng)鏈進(jìn)行了戰(zhàn)略調(diào)整。

關(guān)鍵字: 索尼 PS

汽車12V系統(tǒng)到汽車48V系統(tǒng)全適用 上海2025年8月11日 /美通社/ --?MPS芯源系統(tǒng)(NASDAQ代碼:MPWR)近日發(fā)布的新產(chǎn)品MPQ6539-AEC1,是一款專為三相無(wú)刷直流(BLDC)電機(jī)驅(qū)動(dòng)器而設(shè)計(jì)...

關(guān)鍵字: 柵極驅(qū)動(dòng)器 驅(qū)動(dòng)器IC PS QFN

—這款廣受歡迎的低語(yǔ)聲護(hù)士型安卓機(jī)器人的聲庫(kù)將于7月16日起,在VOCALOID官方商店發(fā)售 日本濱松市 2025年7月16日 /美通社/ --?雅馬哈公司宣布,該公司將于7月16日正式發(fā)布面向VOCALOID(...

關(guān)鍵字: AI BSP PS 機(jī)器人

上海 2025年7月14日 /美通社/ -- MPS芯源系統(tǒng)(NASDAQ代碼:MPWR)近日發(fā)布的MP2764是新一代高集成度、高效率、帶NVDC路徑管理的升降壓充電管理芯片,專為筆記本電腦、平板電腦、游戲掌機(jī)等應(yīng)用...

關(guān)鍵字: 充電IC 筆記本電腦 PS 電感

上海 2025年6月10日 /美通社/ -- MPS芯源系統(tǒng)(NASDAQ代碼:MPWR)近期發(fā)布了兩款新產(chǎn)品:NovoOne開(kāi)關(guān)MPXG2100系列和PFC穩(wěn)壓器MPG44100系列,旨在為快速發(fā)展的快速充電市場(chǎng)、工...

關(guān)鍵字: ACDC 高集成 PS 電壓
關(guān)閉