當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
引 言
   
嵌入式實(shí)時(shí)系統(tǒng)要求系統(tǒng)有很好的實(shí)時(shí)性,能夠及時(shí)處理各種異常事件,因此中斷系統(tǒng)是嵌入式實(shí)時(shí)系統(tǒng)的重要組成部分,其時(shí)間和空間性能對嵌入式實(shí)時(shí)系統(tǒng)性能的影響至關(guān)重要。要想縮短嵌入式實(shí)時(shí)系統(tǒng)的中斷響應(yīng)時(shí)間并提高系統(tǒng)中斷處理效率,合理地設(shè)計(jì)中斷系統(tǒng)非常關(guān)鍵。S3C44BOX是三星公司基于ARM7TDMI內(nèi)核的微處理器,支持IRQ和FIQ中斷請求,同時(shí)還支持向量中斷,以縮短中斷響應(yīng)時(shí)間。嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II提供了簡單的中斷管理機(jī)制對系統(tǒng)中斷進(jìn)行統(tǒng)一管理,但是對于不同的微處理器沒有給出具體的中斷處理方法。本文在深入分析S3C448OX中斷控制系統(tǒng)和μC/OS-II中斷管理機(jī)制的基礎(chǔ)上,進(jìn)行中斷系統(tǒng)設(shè)計(jì),使之能更好地滿足實(shí)際應(yīng)用的需求。


1 S3C4480X中斷系統(tǒng)
   
圖1所示為S3C44BOX的中斷系統(tǒng)結(jié)構(gòu)框圖。中斷控制器的任務(wù)是在片內(nèi)外圍和片外中斷源組成的多重中斷發(fā)生時(shí),經(jīng)過優(yōu)先級判斷、選擇其中一個(gè)中斷;通過IRQ或FIQ向ARM7內(nèi)核發(fā)出IRQ或FIQ中斷請求,ARM7內(nèi)核從中斷控制器中獲取中斷信息,然后對中斷進(jìn)行處理,控制中斷設(shè)備的操作過程。

    當(dāng)ARM7內(nèi)核接收到中斷控制器的中斷請求時(shí)會(huì)自動(dòng)執(zhí)行以下幾步操作,以實(shí)現(xiàn)中斷環(huán)境保護(hù)和程序跳轉(zhuǎn):
    ①將程序狀態(tài)寄存器CPSR的內(nèi)容保存到將要執(zhí)行的中斷模式的程序狀態(tài)保存寄存器SPSR中,以實(shí)現(xiàn)對處理器當(dāng)前狀態(tài)、中斷屏蔽位和各條件標(biāo)志位的保存。
    ②設(shè)置當(dāng)前CPSR中的相應(yīng)位,屏蔽相應(yīng)中斷并切換處理器模式。
    ③將引起中斷指令的下一條指令的地址(斷點(diǎn)地址)保存到中斷模式的子程序鏈接寄存器LR中,使中斷服務(wù)程序執(zhí)行完后能正確返回原程序。
    ④給程序計(jì)數(shù)器PC強(qiáng)制賦值,使程序從相應(yīng)的向量地址開始執(zhí)行中斷服務(wù)程序。
    當(dāng)中斷服務(wù)程序執(zhí)行完后,需要執(zhí)行以下幾步操作從中斷服務(wù)程序中返回:
    ①從中斷模式堆棧中恢復(fù)所有修改過的通用寄存器(RO~R12)。
    ②將中斷模式SPSR寄存器的內(nèi)容復(fù)制到CPSR中,恢復(fù)被中斷模式程序的工作狀態(tài)。
    ③將LR的內(nèi)容賦給PC,使PC返回到相應(yīng)的指令處。
    ④清除CPSR中的中斷禁止標(biāo)志位。
    在中斷返回的過程中,②和③需要同時(shí)完成。

2 μC/OS-II中斷處理過程
   
μC/OS-II提供了函數(shù)OSIntEnter()和OSIntExit(),用于中斷處理。函數(shù)OSIntEnter()通知操作系統(tǒng)進(jìn)入中斷服務(wù)程序,函數(shù)OSIntExit()在中斷服務(wù)程序返回時(shí)進(jìn)行相應(yīng)的處理。μC/OS-II的中斷響應(yīng)過程如圖2所示。進(jìn)入中斷服務(wù)程序時(shí),首先將全部CPU寄存器存入當(dāng)前任務(wù)棧,然后調(diào)用函數(shù)OSIntEnter(),或者將中斷嵌套層數(shù)計(jì)數(shù)器,即全局變量OSIntNesting直接加1,通知μC/OS-II進(jìn)入中斷服務(wù)程序,執(zhí)行用戶代碼進(jìn)行中斷服務(wù)。中斷服務(wù)完成后調(diào)用函數(shù)OSIntExit(),將變量
OSIntNesting減1。當(dāng)OSIntNesting減到O時(shí),所有中斷執(zhí)行完畢,此時(shí)μC/OS-II要判斷是否有優(yōu)先級較高的任務(wù)被中斷服務(wù)程序喚醒。如果有優(yōu)先級高的任務(wù)進(jìn)入就緒態(tài),μC/OS-II就返回到優(yōu)先級高的任務(wù)執(zhí)行;否則,返回到當(dāng)前任務(wù)繼續(xù)執(zhí)行。

    通過對μC/OS-II中斷處理過程的分析可知,μC/OS-II只是提供了簡單的中斷管理機(jī)制,對于中斷進(jìn)入時(shí)的中斷環(huán)境保護(hù)、中斷退出時(shí)的中斷環(huán)境恢復(fù)、中斷嵌套處理和堆棧分配等問題沒有給出具體的處理方法。另外,對于不同的處理器,其中斷處理的方法也不一樣,所以在不同的處理器上移植μC/OS-II后,要根據(jù)處理器的具體特點(diǎn),進(jìn)行中斷系統(tǒng)的設(shè)計(jì)。


3 中斷系統(tǒng)設(shè)計(jì)
   
在中斷系統(tǒng)設(shè)計(jì)過程中,所有的IRQ中斷納入操作系統(tǒng)的管理范圍,由操作系統(tǒng)統(tǒng)一管理;FIQ中斷獨(dú)立于操作系統(tǒng)之外,不受操作系統(tǒng)管理。因此,中斷系統(tǒng)的設(shè)計(jì)包括兩部分:IRQ中斷和FIQ中斷。
3.1 中斷系統(tǒng)結(jié)構(gòu)
   
S3C44BOX提供了IRQ和FIQ兩種中斷方式。ARM中設(shè)計(jì)FIQ中斷是為了在快速處理的場合使用,但是進(jìn)入操作系統(tǒng)進(jìn)行管理的任何中斷都需做一些同樣的前期準(zhǔn)備工作和后期結(jié)束工作,包括為被中斷的任務(wù)保存環(huán)境等。如果把FIQ中斷納入操作系統(tǒng)進(jìn)行管理,則FIQ中斷的優(yōu)勢并不明顯,因此,在中斷系統(tǒng)的設(shè)計(jì)過程中沒有將FIQ中斷納入操作系統(tǒng)的管理范圍,而是由用戶單獨(dú)進(jìn)行FIQ中斷服務(wù)程序的設(shè)計(jì)。
    S3C4480X針對IRQ中斷方式,提供了向量中斷方式,這樣在中斷發(fā)生時(shí)可以減少中斷程序的跳轉(zhuǎn)次數(shù),進(jìn)而縮短中斷響應(yīng)時(shí)間;但是μC/OS-II移植到S3C44B0X處理器上之后,所有的IRQ中斷都要由操作系統(tǒng)進(jìn)行統(tǒng)一的管理,即在中斷發(fā)生時(shí)程序都要跳轉(zhuǎn)到統(tǒng)一的入口處進(jìn)行中斷環(huán)境保護(hù),然后執(zhí)行中斷服務(wù)程序。如果采用向量中斷,不但不能縮短中斷的響應(yīng)時(shí)間,反而在中斷發(fā)生時(shí)由于程序要跳轉(zhuǎn)到統(tǒng)一的入口處而延長中斷的響應(yīng)時(shí)間。
    由上面的分析可知,中斷系統(tǒng)的設(shè)計(jì)中沒有將FIQ中斷納入操作系統(tǒng)的管理范圍,而是由用戶自己根據(jù)實(shí)際情況進(jìn)行設(shè)計(jì)。一方面可以提供快速的中斷反應(yīng),另一方面增強(qiáng)了系統(tǒng)的靈活性;同時(shí),由于向量中斷用于操作系統(tǒng)不能加快中斷的反應(yīng)速度,所以在中斷系統(tǒng)的設(shè)計(jì)中也沒有使用向量中斷方式。中斷系統(tǒng)的結(jié)構(gòu)如圖3所示。當(dāng)發(fā)生IRQ中斷時(shí),處理器會(huì)從地址Ox18處取指令,執(zhí)行0x18處的跳轉(zhuǎn)指令,跳轉(zhuǎn)到統(tǒng)一的中斷人口,進(jìn)行中斷分發(fā)和環(huán)境保護(hù)后執(zhí)行具體的中斷服務(wù)程序。IRQ中斷處理的過程由操作系統(tǒng)統(tǒng)一管理。與IRQ中斷相比,F(xiàn)IQ中斷處理過程比較簡單,當(dāng)發(fā)生FIQ中斷時(shí),處理器會(huì)執(zhí)行地址0x20處的跳轉(zhuǎn)指令直接轉(zhuǎn)到具體的中斷服務(wù)程序。

3.2 ARM處理器運(yùn)行模式
   
ARM處理器有7種運(yùn)行模式:用戶模式(USR)、系統(tǒng)模式(SYS)、管理模式(SVC)、中止模式(ABT)、未定義模式(UND)、普通中斷模式(IRQ)和快速中斷模式(FIQ)。處理器在不同的情況下處于不同的模式中。在中斷系統(tǒng)的設(shè)計(jì)中,主要涉及SVC、UND、IRQ和FIQ四種模式。
    在ARM處理器中,SVC模式通常是操作系統(tǒng)內(nèi)核代碼的運(yùn)行模式,μC/OS-II內(nèi)核中主要代碼在SVC模式下運(yùn)行,系統(tǒng)任務(wù)代碼運(yùn)行在SVC模式下。
    IRQ/FIQ模式是在發(fā)生IRQ/FIQ中斷后處理器強(qiáng)制進(jìn)入的模式,用于中斷處理。ARM處理器在發(fā)生IRQ/FIQ中斷時(shí)自動(dòng)改寫IRQ/FIQ模式中的LR寄存器,LR保存被中斷模式的返回地址(進(jìn)入中斷前的PC值),以便中斷退出時(shí)能夠正確返回到被中斷模式;同時(shí),LR也是每個(gè)模式下函數(shù)調(diào)用的返回地址寄存器。也就是說,LR寄存器具有保存函數(shù)返回地址和中斷返回地址兩種功能,LR的雙重功能在中斷嵌套程序設(shè)計(jì)中會(huì)發(fā)生沖突。
    如果用IRQ/FIQ模式嵌套中斷自身,則本模式的LR被改寫后,本模式下原有的函數(shù)返回地址就無法還原。因此,應(yīng)該在關(guān)閉中斷的條件下,在IRQ/FIQ模式中進(jìn)行基本的環(huán)境保護(hù)后,將中斷服務(wù)程序切換到SYS模式下運(yùn)行。這種處理方式能夠保證產(chǎn)生中斷嵌套時(shí),被中斷的模式是SYS模式而不是IRQ/FIQ模式自身,IRQ/FIQ模式中的LR保存著回到SYS模式的返回地址,SYS模式中的LR未被破壞,保存著函數(shù)返回地址。在移植中使用UND模式替代SYS模式作為中斷服務(wù)的運(yùn)行模式,這樣可以實(shí)現(xiàn)中斷嵌套的功能。
3.3 中斷嵌套方式
   
嵌套應(yīng)該采用半嵌套方式,并不需要完全嵌套方式。“半嵌套”是指不同設(shè)備中斷之間可以嵌套,但是同一設(shè)備中斷不能嵌套。這樣設(shè)計(jì)既照顧了系統(tǒng)實(shí)時(shí)性的要求,又能讓系統(tǒng)具有更明確和穩(wěn)定的行為;否則,如果開發(fā)完全嵌套,中斷服務(wù)的堆??臻g就存在不確定性,甚至中斷響應(yīng)時(shí)間上限也存在不確定性,這些顯然不能滿足嵌入式實(shí)時(shí)系統(tǒng)的需求。
    通過設(shè)置CPSR寄存器的中斷屏蔽位F/I來屏蔽系統(tǒng)的中斷,這樣的保護(hù)稱為“硬保護(hù)”;通過設(shè)置中斷屏蔽寄存器中的相應(yīng)位以屏蔽某一具體的中斷,這樣的保護(hù)稱為“設(shè)備保護(hù)”。要實(shí)現(xiàn)半嵌套方式,需要在中斷進(jìn)入和退出時(shí),在適當(dāng)?shù)臅r(shí)候進(jìn)行兩種保護(hù)方式的切換:
    ①在進(jìn)入設(shè)備保護(hù)后還沒有讀取數(shù)據(jù)時(shí)退出硬保護(hù)。
    ②在即將退出ISR,使能設(shè)備中斷位之前,再次恢復(fù)系統(tǒng)的硬保護(hù)。
    具體的實(shí)現(xiàn)過程如圖4所示。

3.4 IRQ中斷設(shè)計(jì)
   
IRQ中斷處理過程中涉及中斷環(huán)境保護(hù)、處理器運(yùn)行模式切換和中斷環(huán)境恢復(fù)等過程。中斷處理過程如下:
    中斷入口條件:IRQ中斷屏蔽,LR是被中斷模式的PC值,SPSR是被中斷模式的當(dāng)前處理器狀態(tài)值,SP是IRQ模式的當(dāng)前堆棧指針值。
    ①在IRQ模式下保存環(huán)境。
    ②判斷是否為第一層中斷,如果不是程序跳轉(zhuǎn)到④。
    ③設(shè)置中斷嵌套層數(shù)變量OSIntNesting值為1,切換到SVC模式以便將IRQ模式堆棧中保存的中斷環(huán)境保存到任務(wù)堆棧中,當(dāng)前任務(wù)SP指針保存到任務(wù)控制塊中;然后切換到UND模式準(zhǔn)備執(zhí)行中斷服務(wù)程序ISR,程序跳轉(zhuǎn)到⑤。
    ④中斷嵌套層數(shù)變量OSIntNesting加1,切換到UND模式,將保存在IRQ模式下的任務(wù)環(huán)境拷貝到ISR的堆棧中,即UND模式堆棧中。
    ⑤調(diào)用IRQ中斷處理函數(shù),執(zhí)行中斷服務(wù)程序。
    ⑥中斷結(jié)束處理。屏蔽中斷,遞減中斷嵌套計(jì)數(shù),判斷是否為最后一層。如果不是,繼續(xù)執(zhí)行中斷服務(wù);否則,執(zhí)行任務(wù)調(diào)度,使優(yōu)先級最高的任務(wù)運(yùn)行。
    ⑦恢復(fù)上一層中斷服務(wù)程序ISR的環(huán)境,執(zhí)行上一層的中斷服務(wù)程序。
    具體的中斷服務(wù)程序執(zhí)行流程如圖5所示。

3.5 FIQ中斷設(shè)計(jì)
   
μC/OS-II移植到S3C4480X之后,μC/OS-II沒有對FIQ中斷進(jìn)行管理,這樣可以為系統(tǒng)保留一個(gè)快速響應(yīng)的中斷源。如果在系統(tǒng)的設(shè)計(jì)過程中多個(gè)中斷源都配置為FIQ中斷,就要在中斷入口處進(jìn)行中斷的分發(fā),然后進(jìn)入相應(yīng)的中斷服務(wù)程序中。這樣會(huì)增加中斷的響應(yīng)時(shí)間,因此在系統(tǒng)設(shè)計(jì)中應(yīng)該為FIQ中斷設(shè)置單獨(dú)的中斷源。由于μC/OS-II沒有對FIQ進(jìn)行管理,所以FIQ中斷程序需由用戶單獨(dú)設(shè)計(jì)。FIQ中斷服務(wù)程序的執(zhí)行流程如圖6所示,發(fā)生FIQ中斷后系統(tǒng)進(jìn)入FIQ模式進(jìn)行簡單的環(huán)境保護(hù),然后執(zhí)行中斷服務(wù)程序,最后恢復(fù)中斷環(huán)境返回。所有這些工作都是在FIQ模式下完成的。

4 系統(tǒng)測試
   
系統(tǒng)測試環(huán)境為北京恒豐銳科公司開發(fā)的hf44b0A三星ARM7開發(fā)板和μC/OS-II v2.61版本。系統(tǒng)測試包括3個(gè)部分:定時(shí)器中斷測試、IRQ中斷測試和FIQ中斷測試。首先對每一部分單獨(dú)進(jìn)行測試,然后進(jìn)行系統(tǒng)的總體測試。
    (1)定時(shí)器中斷測試
   
μC/OS-II要求提供一個(gè)時(shí)鐘節(jié)拍(周期性定時(shí)中斷),來實(shí)現(xiàn)時(shí)間的延遲和超時(shí)功能。時(shí)鐘節(jié)拍每秒發(fā)生10~100次。本設(shè)計(jì)選用S3C44BOX的Timer0定時(shí)器產(chǎn)生系統(tǒng)的時(shí)鐘節(jié)拍,時(shí)鐘頻率為50 Hz。建立Task_main、Task_test和Task_led三個(gè)任務(wù)在每個(gè)任務(wù)中調(diào)用μC/OS-II系統(tǒng)延時(shí)函數(shù)OSTimeDly()實(shí)現(xiàn)不同時(shí)間長度的延時(shí),通過串口輸出信號可以觀察到任務(wù)能夠按照預(yù)定的設(shè)置進(jìn)行延時(shí)和調(diào)度。
    (2)IRQ中斷測試
   
在定時(shí)器中斷測試過程中,Timer0中斷設(shè)置為IRQ中斷。在此基礎(chǔ)上再添加一個(gè)IRQ中斷,將S3C44B0X的外部中斷EINT4/5/6/7設(shè)置為按鍵中斷添加到系統(tǒng)中,當(dāng)按鍵按下時(shí)點(diǎn)亮對應(yīng)的LED燈,同時(shí)通過串口輸出按鍵信息。程序運(yùn)行時(shí),Timer0定時(shí)器按照固定的時(shí)間間隔發(fā)生中斷,在程序運(yùn)行的過程中隨機(jī)按下任意按鍵,按鍵中斷能夠及時(shí)得到響應(yīng)和準(zhǔn)確返回。
    (3)FIQ中斷測試
   
由于FIQ中斷不受操作系統(tǒng)管理,中斷響應(yīng)速度快,因此將S3C44B0X的Timer2作為FIQ中斷。另外Tim-er2的中斷頻率較快(測試中設(shè)置為Timer0的10倍),通過串口輸出中斷信息,F(xiàn)IQ中斷能夠正常響應(yīng)和返回。
    在系統(tǒng)中同時(shí)設(shè)置上面的3種中斷,系統(tǒng)能夠穩(wěn)定地運(yùn)行。


5 結(jié) 論
   
在嵌入式領(lǐng)域有各種類型的微處理器和操作系統(tǒng),將不同的微處理器和操作系統(tǒng)進(jìn)行組合構(gòu)成嵌入式系統(tǒng)后,就要根據(jù)兩者的特點(diǎn)進(jìn)行中斷系統(tǒng)設(shè)計(jì)。針對S3C4480X和μC/OS-II進(jìn)行中斷系統(tǒng)的設(shè)計(jì),使μC/OS-II移植到S3C4480X系統(tǒng)后可以對中斷進(jìn)行有效的管理,提高系統(tǒng)的執(zhí)行效率,其設(shè)計(jì)思想也可以應(yīng)用到其他嵌入式中斷系統(tǒng)的設(shè)計(jì)中。但是,由于μC/OS-II本身的結(jié)構(gòu)問題,所以在實(shí)際的應(yīng)用中還需要進(jìn)行具體的分析。

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉