資料介紹
引 言
在實時操作系統中,由于是多任務的并發運行,所以在進入一些臨界區時為了保證多任務的正常運行要關中斷。而最大關中斷時間是衡量一個實時操作系統性能的重要指標,因為外部的輸入一般都是通過中斷方式來通知系統的,系統如果關中斷時間長,必然不能及時接收中斷,對中斷的及時處理就更談不上。
更重要的是,有些應用場合對關中斷的時間有非常嚴格的要求。例如,在電力系統微機繼電保護裝置中,對電流A/D采樣時,為了保障對采樣值的正確處理,定時中斷的每一個周期時間都必須及時采樣。試想,如果定時器設置的周期時間到,定時器中斷產生,但恰恰這時系統處于關中斷時間,系統就不能及時進行采樣;而當關中斷時間過長,超過一定的值時,系統再來進行采樣,依據此采樣值的計算結果就會出錯。所以,在這樣的場合中,一種實時操作系統的最大關中斷時間就成為該種實時操作系統能否成功運用的最關鍵的因素。
筆者將以μC/OS-II實時內核為例,通過對μC/OS-II的改進,向讀者描述一種縮短實時操作系統中斷關閉時間的方法。之所以選擇μC/OS-II,一是因為讀者容易獲得相關代碼,國內很多讀者也對μC/OS-II有一定程度的了解;二是因為其自身結構簡單,適合運用于低檔嵌入式處理器,關中斷時間的問題更加突出。低檔嵌入式處理器的處理速度慢,在關中斷時間里處理相同的軟件代碼,花費的時間更長,相對地延長了關中斷時間,這時盡量從軟件著手解決關中斷時間的問題。
1 系統狀態標志法概述
μC/OS-II中在進入臨界區之前為什么要關閉中斷?通過相關資料[1]的介紹和對μC/OS-II源代碼的理解,我們知道在μC/OS-II中一旦不關中斷就進入臨界區。當某一任務進入臨界區時,若恰好發生中斷,那么這時有可能引起兩種對臨界區操作的沖突:①在中斷服務程序中要操作同一臨界區;②因為中斷的產生而引起任務的轉換,在新的任務中要操作同一臨界區。所以μC/OS-II中在進入臨界區前要關閉中斷。
針對μC/OS-II關中斷機制的分析,考慮用一種系統狀態標志法來解決這樣的臨界沖突。在μC/OS-II增加一個全局布爾變量來表示系統的狀態,稱為“系統狀態標志”。
對于μC/OS-II中所有可以在中斷中出現又要對臨界區操作的函數,可以在進入臨界區之前先查詢系統狀態標志。如果目前系統沒有進入臨界操作狀態,則首先將該標志置位,表示系統進入臨界操作狀態,然后該函數就可以操作臨界區;而如果發現系統已進入臨界操作狀態,則將該函數對臨界區操作的部分單獨形成一個函數,放到一個系統循環函數數組里,等待系統任務調度時執行。
對于μC/OS-II中所有不可能在中斷程序中出現而又要對臨界區操作的函數,因為函數不在中斷中出現,所以函數開始時系統狀態標志肯定不會在臨界操作狀態,因此可在函數操作臨界區時直接將系統狀態標志置位,表示系統進入臨界操作狀態,然后即可進行臨界區的操作。
系統狀態標志的復位在任務調度函數中執行。當然對系統狀態標志的設置是要在關中斷的條件下執行的,這應該算是系統新的一個臨界區。
2 該方法的具體實現
下面以對μC/OS-II v2.61代碼的改進為例,具體講解該方法的具體實現。
2.1 任務調度函數OS_Sched的修改
修改后的任務調度函數OS_Sched的偽代碼如下:
? ? ? ? ? ??
因為在任務調度函數OS_Sched中要執行循環函數數組里的函數,同時還要對系統狀態標志復位,退出系統臨界操作狀態,所以修改過的函數在遇到以下3種情況--該函數是在中斷里調用時、在任務調度鎖定時、當前任務就是最高優先級任務時,都將執行系統循環函數數組里的函數,并將系統狀態標志復位,而原任務調度函數在遇到以上3種情況時是直接返回的。
在實時操作系統中,由于是多任務的并發運行,所以在進入一些臨界區時為了保證多任務的正常運行要關中斷。而最大關中斷時間是衡量一個實時操作系統性能的重要指標,因為外部的輸入一般都是通過中斷方式來通知系統的,系統如果關中斷時間長,必然不能及時接收中斷,對中斷的及時處理就更談不上。
更重要的是,有些應用場合對關中斷的時間有非常嚴格的要求。例如,在電力系統微機繼電保護裝置中,對電流A/D采樣時,為了保障對采樣值的正確處理,定時中斷的每一個周期時間都必須及時采樣。試想,如果定時器設置的周期時間到,定時器中斷產生,但恰恰這時系統處于關中斷時間,系統就不能及時進行采樣;而當關中斷時間過長,超過一定的值時,系統再來進行采樣,依據此采樣值的計算結果就會出錯。所以,在這樣的場合中,一種實時操作系統的最大關中斷時間就成為該種實時操作系統能否成功運用的最關鍵的因素。
筆者將以μC/OS-II實時內核為例,通過對μC/OS-II的改進,向讀者描述一種縮短實時操作系統中斷關閉時間的方法。之所以選擇μC/OS-II,一是因為讀者容易獲得相關代碼,國內很多讀者也對μC/OS-II有一定程度的了解;二是因為其自身結構簡單,適合運用于低檔嵌入式處理器,關中斷時間的問題更加突出。低檔嵌入式處理器的處理速度慢,在關中斷時間里處理相同的軟件代碼,花費的時間更長,相對地延長了關中斷時間,這時盡量從軟件著手解決關中斷時間的問題。
1 系統狀態標志法概述
μC/OS-II中在進入臨界區之前為什么要關閉中斷?通過相關資料[1]的介紹和對μC/OS-II源代碼的理解,我們知道在μC/OS-II中一旦不關中斷就進入臨界區。當某一任務進入臨界區時,若恰好發生中斷,那么這時有可能引起兩種對臨界區操作的沖突:①在中斷服務程序中要操作同一臨界區;②因為中斷的產生而引起任務的轉換,在新的任務中要操作同一臨界區。所以μC/OS-II中在進入臨界區前要關閉中斷。
針對μC/OS-II關中斷機制的分析,考慮用一種系統狀態標志法來解決這樣的臨界沖突。在μC/OS-II增加一個全局布爾變量來表示系統的狀態,稱為“系統狀態標志”。
對于μC/OS-II中所有可以在中斷中出現又要對臨界區操作的函數,可以在進入臨界區之前先查詢系統狀態標志。如果目前系統沒有進入臨界操作狀態,則首先將該標志置位,表示系統進入臨界操作狀態,然后該函數就可以操作臨界區;而如果發現系統已進入臨界操作狀態,則將該函數對臨界區操作的部分單獨形成一個函數,放到一個系統循環函數數組里,等待系統任務調度時執行。
對于μC/OS-II中所有不可能在中斷程序中出現而又要對臨界區操作的函數,因為函數不在中斷中出現,所以函數開始時系統狀態標志肯定不會在臨界操作狀態,因此可在函數操作臨界區時直接將系統狀態標志置位,表示系統進入臨界操作狀態,然后即可進行臨界區的操作。
系統狀態標志的復位在任務調度函數中執行。當然對系統狀態標志的設置是要在關中斷的條件下執行的,這應該算是系統新的一個臨界區。
2 該方法的具體實現
下面以對μC/OS-II v2.61代碼的改進為例,具體講解該方法的具體實現。
2.1 任務調度函數OS_Sched的修改
修改后的任務調度函數OS_Sched的偽代碼如下:
? ? ? ? ? ??
因為在任務調度函數OS_Sched中要執行循環函數數組里的函數,同時還要對系統狀態標志復位,退出系統臨界操作狀態,所以修改過的函數在遇到以下3種情況--該函數是在中斷里調用時、在任務調度鎖定時、當前任務就是最高優先級任務時,都將執行系統循環函數數組里的函數,并將系統狀態標志復位,而原任務調度函數在遇到以上3種情況時是直接返回的。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 嵌入式實時操作系統μC、OS-II在ARM上的移植.
- 提高uc/os-ii操作系統安全與穩定性的方法 0次下載
- 關于μC/OS-II實時操作系統內存管理的改進方法分析 0次下載
- 嵌入式實時操作系統uC/OS-II內核_英版 0次下載
- μC/OS-II 在Nios上的移植
- 實時操作系統OS-II在ARM7上的移植
- 基于ARM的嵌入式操作系統μC/OS-II的移植
- 輕型PPP協議在μC/OS-II操作系統中的實現
- 實時操作系統μC/OS-II調度算法的研究
- 實時操作系統μC/OS-II 在LPC2210 上的移植研究
- 嵌入式實時操作系統μC OS-II與eCos的比較
- μC OS-II 在Nios 上的移植1
- 實時操作系統μC OS - II下TCP IP 協議棧的實現
- μC/OS-II 任務調度機制的改進
- 嵌入式實時操作系統μC/OS-II與eCos的比較
- FreeRTOS:一個迷你的實時操作系統內核 1015次閱讀
- 基于μC/OS-II和TMS320LF2407A實現集散式數據采集系統的設計 2344次閱讀
- 基于實時嵌入式操作系統mC/OS-II實現GPRS終端系統的設計 2408次閱讀
- 基于MC9S12DP256芯片和μC/OS-II實現CCP軟件的設計 2882次閱讀
- 基于嵌入式工控模塊和μC/OS-II實現車載狀態監控系統的設計 2064次閱讀
- 基于μC/OS-II操作系統實現在P89V51RD2微控制器上運行 810次閱讀
- 基于μC/OS-II操作系統在SPCE061A上的移植優化研研究 850次閱讀
- 51單片機對μC/OS-II實時操作系統的移植 2507次閱讀
- 淺論uC/OS-II 在電動車電池管理系統中的應用研究 1437次閱讀
- 淺析STM32的五種嵌入式操作系統的特點及不足 4191次閱讀
- 五種基于STM平臺的且滿足實時控制要求操作的嵌入式操作系統的介紹 5292次閱讀
- 車輛調度系統的整體設計 UC/OS-II的內核調度機理 1207次閱讀
- 基于LPC2365和嵌入式μC/OS-II下的多串口通信編程方法教程 2191次閱讀
- 利用μC/OS-II的嵌入式激光測距系統 2082次閱讀
- 用AndesCore N1033A-S處理器實現μC/OS-II的移植 4140次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多