呂海濤,朱巖
(南京理工大學(xué) 自動(dòng)化學(xué)院,南京 210094)
?
呂海濤,朱巖
(南京理工大學(xué) 自動(dòng)化學(xué)院,南京 210094)
摘要:在特定的平臺(tái)下,測(cè)量了μC/OS-III的中斷響應(yīng)時(shí)間,分析了臨界區(qū)對(duì)μC/OS-III中斷響應(yīng)時(shí)間的影響,并提出了改善μC/OS-III實(shí)時(shí)性的方法。實(shí)驗(yàn)結(jié)果證明,在系統(tǒng)設(shè)計(jì)不太復(fù)雜的情況下,μC/OS-III的中斷響應(yīng)時(shí)間可以控制在4 μs以內(nèi)。
關(guān)鍵詞:嵌入式操作系統(tǒng);LPC1768;中斷響應(yīng)時(shí)間;臨界區(qū);μC/OS-III
引言
嵌入式實(shí)時(shí)操作系統(tǒng)(Embedded Real-time Operating System,RTOS),是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時(shí),能夠接收并以足夠快的速度予以處理,處理的結(jié)果又能在規(guī)定的時(shí)間之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)做出快速響應(yīng),并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致運(yùn)行的嵌入式操作系統(tǒng)。通常的操作系統(tǒng)需要完成進(jìn)程(線程)管理、存儲(chǔ)管理、設(shè)備管理、作業(yè)管理、安全管理等。受到嵌入式系統(tǒng)資源限制以及特定功能的定位,它們通常被設(shè)計(jì)得非常緊湊有效。嵌入式實(shí)時(shí)操作系統(tǒng)的主要功能是線程管理。
大多數(shù)的RTOS采用了基于優(yōu)先級(jí)的搶占式內(nèi)核調(diào)度算法,并且有以下特點(diǎn):①每個(gè)線程有自己的優(yōu)先級(jí)并且通常不會(huì)改變;②活動(dòng)的線程有運(yùn)行態(tài)、就緒態(tài)、等待態(tài)等狀態(tài);③系統(tǒng)的內(nèi)核總是運(yùn)行優(yōu)先級(jí)最高的就緒態(tài)線程;④當(dāng)一個(gè)低優(yōu)先級(jí)線程在運(yùn)行時(shí),一個(gè)高優(yōu)先級(jí)線程進(jìn)入就緒態(tài)會(huì)發(fā)生搶占,高優(yōu)先級(jí)線程會(huì)剝奪低優(yōu)先級(jí)線程的CPU控制權(quán),低優(yōu)先級(jí)線程會(huì)進(jìn)入就緒態(tài)。
μC/OS系列實(shí)時(shí)內(nèi)核于1992年推出,開放源代碼,可以自由下載用于教育目的和非商業(yè)目的,如用于商業(yè)應(yīng)用及產(chǎn)品,則需要購買其使用許可證。μC/OS-II自1998年推出以來,因其方便移植、代碼量小、實(shí)時(shí)性強(qiáng)、可靠性高、內(nèi)核可剪裁等,成為我國計(jì)算機(jī)嵌入式應(yīng)用領(lǐng)域最受歡迎的實(shí)時(shí)操作系統(tǒng)之一。經(jīng)過多年不斷發(fā)展,已經(jīng)發(fā)展到第三代。μC/OS-III是一個(gè)全新的RTOS內(nèi)核,定位于高端32位CPU,它的功能比μC/OS-II更加強(qiáng)大,比如:支持相同優(yōu)先級(jí)和時(shí)間片輪轉(zhuǎn)調(diào)度算法;將中斷級(jí)任務(wù)調(diào)度交給系統(tǒng)任務(wù)處理,大大縮短了中斷執(zhí)行時(shí)間;采用哈希散列表機(jī)制處理時(shí)鐘節(jié)拍,真正做到了硬實(shí)時(shí);直接向任務(wù)發(fā)信號(hào)量,簡化了程序,提高了實(shí)時(shí)性;增強(qiáng)了諸多調(diào)試功能、內(nèi)置式性能測(cè)試等等。當(dāng)然,這些功能也必然占用更多的內(nèi)存資源。
1μC/OS-III的中斷響應(yīng)時(shí)間
評(píng)估實(shí)時(shí)操作系統(tǒng)的最重要指標(biāo)是響應(yīng)時(shí)間,主要包括中斷響應(yīng)時(shí)間、上下文切換時(shí)間、線程返回時(shí)間等。
中斷響應(yīng)時(shí)間是指從檢測(cè)到中斷請(qǐng)求到執(zhí)行中斷服務(wù)程序的第一條指令所需要的時(shí)間,是衡量嵌入式實(shí)時(shí)操作系統(tǒng)實(shí)時(shí)性能的最主要、最具有代表性的性能指標(biāo)。μC/OS-III從中斷消息或信號(hào)有直接發(fā)布和延遲發(fā)布兩種方式。μC/OS-II采用的就是直接發(fā)布模式,μC/OS-III在保留了直接發(fā)布模式的基礎(chǔ)上又新增了延遲發(fā)布模式。本文只研究μC/OS-III的直接發(fā)布模式。
當(dāng)中斷發(fā)生時(shí),系統(tǒng)運(yùn)行狀態(tài)是不確定的,在μC/OS-III中,中斷發(fā)生時(shí)主要有以下情況:
(1) 線程模式
① 系統(tǒng)運(yùn)行在正常的任務(wù)(非臨界區(qū))中,此時(shí),中斷會(huì)剝奪任務(wù)的CPU控制權(quán)。
② 系統(tǒng)運(yùn)行在任務(wù)的臨界區(qū)中,此時(shí)中斷是關(guān)閉的,被掛起,待離開臨界區(qū)打開后會(huì)立即響應(yīng)中斷。
(2) 處理模式
① 異常處理中并且處于非臨界區(qū)。當(dāng)優(yōu)先級(jí)比正在運(yùn)行的中斷服務(wù)程序高時(shí),高優(yōu)先級(jí)中斷會(huì)優(yōu)先響應(yīng),即中斷嵌套。當(dāng)比它低或與它相同時(shí),發(fā)生的中斷會(huì)被掛起,待正在運(yùn)行中斷服務(wù)程序結(jié)束后,立即響應(yīng)低優(yōu)先級(jí)中斷。
② 異常處理中并且處于臨界區(qū)。發(fā)生的中斷會(huì)被掛起,待中斷重新打開后,會(huì)根據(jù)優(yōu)先級(jí)決定立即響應(yīng)中斷或等待當(dāng)前異常處理結(jié)束后響應(yīng)。
從以上的分析可以看出,中斷相對(duì)于CPU是一個(gè)異步事件。當(dāng)發(fā)生中斷時(shí),有優(yōu)先級(jí)更高或相同的中斷在處理時(shí),相同或高優(yōu)先級(jí)中斷服務(wù)程序時(shí)間難以確定。所以本文研究的是最高優(yōu)先級(jí)中斷的中斷響應(yīng)時(shí)間,也就是中斷發(fā)生時(shí),沒有比它優(yōu)先級(jí)更高或相同的中斷或異常在處理。定義中斷響應(yīng)時(shí)間為:
中斷響應(yīng)時(shí)間=中斷延遲時(shí)間+保存CPU狀態(tài)的時(shí)間+該內(nèi)核ISR進(jìn)入函數(shù)的時(shí)間[2]
其中,中斷延遲時(shí)間指最大中斷關(guān)閉時(shí)間。
當(dāng)中斷采用直接發(fā)布時(shí),會(huì)采用關(guān)中斷的方法來保護(hù)臨界區(qū)。臨界區(qū)的大小取決于不同的環(huán)境,比如多個(gè)任務(wù)具有相同的優(yōu)先級(jí),多個(gè)任務(wù)等待多個(gè)事件,同時(shí)等待多個(gè)內(nèi)核對(duì)象,以廣播方式發(fā)送消息或信號(hào)量都會(huì)導(dǎo)致臨界段代碼變長。
當(dāng)有以上因素導(dǎo)致系統(tǒng)的臨界段代碼比較長時(shí),可以使用延遲發(fā)布模式。在延遲發(fā)布模式下,發(fā)布信號(hào)或消息時(shí),不會(huì)直接發(fā)布,而是將這個(gè)發(fā)布函數(shù)調(diào)用和相應(yīng)的參數(shù)寫到專用隊(duì)列中(中斷隊(duì)列),然后使中斷隊(duì)列處理任務(wù)進(jìn)入就緒態(tài)。這個(gè)任務(wù)是μC/OS-III中的內(nèi)部任務(wù),具有最高的任務(wù)優(yōu)先級(jí),所以可以鎖定任務(wù)調(diào)度器,禁止任務(wù)調(diào)度,這樣就保護(hù)了臨界區(qū)。
保存CPU狀態(tài)時(shí)間和該內(nèi)核ISR進(jìn)入函數(shù)的時(shí)間取決于具體的硬件,比如本文所使用的是基于Cortex-M3處理器,這個(gè)時(shí)間相對(duì)是固定的,可以通過測(cè)量得出。
2測(cè)量原理和方法
在μC/OS-III中,進(jìn)入和離開臨界區(qū)分別調(diào)用OS_CRITICAL_ENTER()和OS_CRITICAL_EXIT()。在OS_CRITICAL_ENTER()后記錄時(shí)間戳T1,在OS_CRITICAL_EXIT()前記錄時(shí)間戳T2,那么T2-T1為此臨界區(qū)的中斷關(guān)閉時(shí)間。臨界區(qū)長度的測(cè)量如圖1所示。
圖1 臨界區(qū)長度的測(cè)量
在具體的實(shí)現(xiàn)方式方面,μC/OS-III提供了測(cè)量中斷關(guān)閉時(shí)間的功能。它用CPU_IntDisMeasStart( )和CPU_IntDisMeasStop( )兩個(gè)函數(shù)來分別記錄T1和T2。要注意,在臨界區(qū)中加入了測(cè)量中斷關(guān)閉時(shí)間函數(shù),必然會(huì)增加額外的開銷,導(dǎo)致臨界區(qū)變長。通過調(diào)用CPU_IntDisMeasInit ( )初始化中斷關(guān)閉時(shí)間測(cè)量功能,連續(xù)調(diào)用以上兩個(gè)函數(shù),記錄的時(shí)間戳差TOH為測(cè)量中斷關(guān)閉時(shí)間的開銷,最后實(shí)際的中斷關(guān)閉時(shí)間T=T2-T1-TOH。打開測(cè)量中斷關(guān)閉時(shí)間功能后,每次進(jìn)入臨界區(qū),系統(tǒng)自動(dòng)測(cè)量中斷關(guān)閉時(shí)間,并保存最大中斷關(guān)閉時(shí)間。
中斷響應(yīng)時(shí)間主要通過系統(tǒng)的定時(shí)器來測(cè)量。給定時(shí)器一個(gè)匹配值TM,當(dāng)定時(shí)器的計(jì)數(shù)值達(dá)到匹配值時(shí),產(chǎn)生中斷,在中斷程序的第一條讀取計(jì)數(shù)器的值TC,則中斷響應(yīng)時(shí)間為T=TC-TM。由前述所知,中斷響應(yīng)時(shí)間由于中斷關(guān)閉時(shí)間不同是不確定的,因此可以通過大量重復(fù)中斷來得出一系列中斷響應(yīng)時(shí)間,進(jìn)而可以得出中斷響應(yīng)時(shí)間的最小值、最大值、平均值等。
本文測(cè)量使用的硬件平臺(tái)是蘇州鼎尚信息科技的鼎尚LPC1768嵌入式開發(fā)板,LPC1768是恩智浦公司生產(chǎn)的基于Cortex-M3的微控制器,主頻高達(dá)100 MHz,μC/OS-III已移植到開發(fā)板中。LPC1768內(nèi)部有4個(gè)定時(shí)器/計(jì)數(shù)器,定時(shí)器可以對(duì)外設(shè)時(shí)鐘(PCLK)進(jìn)行計(jì)數(shù)。系統(tǒng)默認(rèn)的PCLK為主頻的四分頻,將定時(shí)器外設(shè)設(shè)置成主頻的一分頻,即跟主頻一致為100 MHz,也就是計(jì)數(shù)器一個(gè)計(jì)數(shù)代表一個(gè)機(jī)器周期。
本文用到了兩個(gè)計(jì)數(shù)器,計(jì)數(shù)器0用來測(cè)量最大關(guān)中斷時(shí)間,計(jì)數(shù)器1用來測(cè)量中斷響應(yīng)時(shí)間。編寫3個(gè)任務(wù):一個(gè)單次任務(wù)初始化系統(tǒng)外設(shè)功能(定時(shí)器、串口、中斷等);創(chuàng)建兩個(gè)應(yīng)用任務(wù),完成后刪除自己,兩個(gè)應(yīng)用任務(wù)是循環(huán)任務(wù),分別向?qū)Ψ桨l(fā)送信號(hào)量和消息。μC/OS-III中建立的任務(wù)如圖2所示。
圖2 μC/OS-III中建立的任務(wù)
第一步,測(cè)量最大關(guān)中斷時(shí)間,使能關(guān)中斷的時(shí)間測(cè)量功能。配置一個(gè)外部中斷,程序運(yùn)行一段時(shí)間后,按鍵按下產(chǎn)生中斷,中斷服務(wù)程序會(huì)將當(dāng)前實(shí)際關(guān)中斷的最大值通過串口發(fā)送到計(jì)算機(jī)上。中斷延遲時(shí)間測(cè)試程序流程圖如圖3所示。
圖3 中斷延遲時(shí)間測(cè)試程序流程圖
第二步,測(cè)量中斷響應(yīng)時(shí)間,將關(guān)中斷時(shí)間的測(cè)量功能關(guān)閉,設(shè)置匹配值為500 000,當(dāng)計(jì)數(shù)器值與匹配值相同時(shí)產(chǎn)生中斷。中斷服務(wù)程序的第一條讀取計(jì)數(shù)器值,將讀到的值減去匹配值得差值,通過串口發(fā)送到計(jì)算機(jī),清零計(jì)數(shù)器,重復(fù)中斷1000次。中斷響應(yīng)時(shí)間測(cè)試流程圖如圖4所示。
圖4 中斷響應(yīng)時(shí)間測(cè)試流程圖
3實(shí)驗(yàn)結(jié)果與分析
在第一步實(shí)驗(yàn)中,測(cè)量最大關(guān)中斷時(shí)間,得到的結(jié)果是325個(gè)機(jī)器周期,也就是3.25 μs。這是系統(tǒng)穩(wěn)定運(yùn)行了一段時(shí)間后,測(cè)得的最大中斷延遲時(shí)間。
在第二步實(shí)驗(yàn)中,TASK1和TASK2內(nèi)部第一次無延時(shí),第二次有延時(shí),得到的中斷響應(yīng)時(shí)間分布如圖5和圖6所示。
圖5 無延時(shí)中斷響應(yīng)時(shí)間分布
圖6 有延時(shí)中斷響應(yīng)時(shí)間分布
從圖中可以看出,無延時(shí)時(shí),有較多的點(diǎn)分布在中間部分,有延時(shí)時(shí),在32處點(diǎn)分布十分密集。最底端的點(diǎn)意味著中斷發(fā)生時(shí),程序沒有運(yùn)行在臨界區(qū),響應(yīng)時(shí)間較快。
表1是本次實(shí)驗(yàn)數(shù)據(jù)的一些統(tǒng)計(jì)指標(biāo)。最小值相同,是指當(dāng)運(yùn)行在非臨界區(qū)發(fā)生中斷時(shí)的響應(yīng)時(shí)間,這個(gè)時(shí)間是最好情況下的時(shí)間。在第一步實(shí)驗(yàn)中測(cè)得的中斷關(guān)閉時(shí)間是325個(gè)機(jī)器周期,所以,可以認(rèn)為系統(tǒng)在最壞情況下的中斷響應(yīng)時(shí)間是325+32=357個(gè)機(jī)器周期(3.57 μs)。實(shí)驗(yàn)測(cè)得的數(shù)據(jù)均在32~357之間,符合最大中斷響應(yīng)時(shí)間。因此,任務(wù)中有延時(shí)時(shí),系統(tǒng)的中斷響應(yīng)時(shí)間會(huì)變快,這是因?yàn)檠舆t會(huì)減少發(fā)送信號(hào)量、消息的頻率,因而降低了任務(wù)調(diào)度和任務(wù)切換的頻率,進(jìn)入臨界區(qū)的時(shí)間變少,系統(tǒng)平均中斷響應(yīng)時(shí)間會(huì)變短。
表1 中斷響應(yīng)時(shí)間統(tǒng)計(jì)指標(biāo)(單位:機(jī)器周期)
結(jié)語
參考文獻(xiàn)
[1] 趙立業(yè),張激,游夏.實(shí)時(shí)操作系統(tǒng)的性能分析和評(píng)估[J].計(jì)算機(jī)工程,2008(8).
[2] Labrosse J J.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-III[M].邵貝貝,譯.北京:北京航空航天大學(xué)出版社,2012.
[3] 尹旭峰,苑士華,胡紀(jì)濱.ARM微處理器中斷響應(yīng)時(shí)間的實(shí)驗(yàn)研究[J].計(jì)算機(jī)工程,2011(4).
[4] 戴亮,戴勝華.μC/OS-II實(shí)時(shí)性能測(cè)試與研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2007(7).
呂海濤(碩士研究生),研究方向?yàn)榍度胧杰浻布O(shè)計(jì)。
Interrupt Response Time Analysis and Improvement of μC/OS-III
Lü Haitao,Zhu Yan
(College of Automation,Nanjing University of Science and Technology,Nanjing 210094,China)
Abstract:In a specific platform,the interrupt response time of μC/OS -III is measured and the critical region effect on interrupt response time is analyzed.Finally,the method of improving the real-time property of μC/OS -III is proposed.The experiment results show that the interrupt response time of μC/OS -III can be controlled under 4 μs.
Key words:embedded operating system;LPC1788;interrupt response time;critical region;μC/OS-III
收稿日期:(責(zé)任編輯:薛士然2015-05-14)
中圖分類號(hào):TP316
文獻(xiàn)標(biāo)識(shí)碼:A
單片機(jī)與嵌入式系統(tǒng)應(yīng)用2015年10期