當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]S3C4480X平臺上μC/OS-Ⅱ的中斷系統(tǒng)設計

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


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

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

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

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


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

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

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

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

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


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

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

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

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

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

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

關鍵字: 汽車 人工智能 智能驅動 BSP

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

關鍵字: 亞馬遜 解密 控制平面 BSP

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

關鍵字: 騰訊 編碼器 CPU

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

關鍵字: 華為 12nm EDA 半導體

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

關鍵字: 華為 12nm 手機 衛(wèi)星通信

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

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

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

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

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

關鍵字: BSP 信息技術
關閉
關閉