第10章 RTX操作系統(tǒng)介紹_第1頁
第10章 RTX操作系統(tǒng)介紹_第2頁
第10章 RTX操作系統(tǒng)介紹_第3頁
第10章 RTX操作系統(tǒng)介紹_第4頁
第10章 RTX操作系統(tǒng)介紹_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、溫州大學物理與電子信息工程學院 楊衛(wèi)波嵌入式系統(tǒng)原理與應用第10章 RTX操作系統(tǒng)介紹10.1 RTX操作系統(tǒng)介紹根據(jù)維基百科的定義,OS是一組管理硬件和為應用軟件提供服務的軟件。硬件的抽象硬件的抽象:OS的首要任務正是把繁雜的底層硬件的執(zhí)行細節(jié)隱藏,提供給程序和用戶一個相對抽象的概念。資源的管理資源的管理:如何優(yōu)化資源的分配,減少有害的競爭,提高某些資源的共享效率,都是操作系統(tǒng)關心的核心話題。一個不成文的小經驗:如果源程序大于1MB,那就有必要用RTOS了!10.2 RTX本課程以Keil公司開發(fā)的RTX實時操作系統(tǒng)作為學習對象,主要原因:RTX五臟俱全,是個完整且優(yōu)秀的實時操作系統(tǒng);RTX

2、對ARM設備Cortex-M系列的芯片有比較好的支持(自家產品);更重要的是RTX不僅免費,而且其代碼是開放的,可以自由查閱。RTX 系統(tǒng)的特色帶有源碼源碼的免版稅。支持時間片時間片、搶占式搶占式和合作式合作式調度。以低的中斷延遲執(zhí)行高速實時操作(對于M3/M4內核可以實現(xiàn)零中斷延遲,零中斷延遲零中斷延遲是指ISR的中斷相應時間和沒有使用RTX系統(tǒng)是一樣的,也就是說RTX內核庫中沒有關閉中斷的操作)。小的空間占用,適用于資源受限的系統(tǒng)。不限制數(shù)量的任務,每個任務都具有 254 的優(yōu)先級。不限制數(shù)量的信號量、互斥信號量、消息郵箱和軟定時器。支持多線程和線程安全操作。使用 MDK 基于對話框的配置

3、向導,可以很方便的完成 MDK 的配置。市場領先的RTOS,您可以信心十足地在應用程序中使用 RTX。RTX 提供完全確定性確定性的行為,可以在預定義時間內(期限)處理事件和中斷,這個主要得益于RTX的零中斷延遲特性。18:39嵌入式系統(tǒng)原理與應用5描述描述RX Kernel支持的進程數(shù)支持的進程數(shù)最多256支持的信箱數(shù)支持的信箱數(shù)無限制支持的信號量數(shù)支持的信號量數(shù)無限制支持的互斥量數(shù)支持的互斥量數(shù)無限制支持的事件數(shù)支持的事件數(shù)每個進程16個支持的用戶定時器數(shù)支持的用戶定時器數(shù)無限制RAM 要求要求最少500字節(jié)代碼要求代碼要求小于5 K字節(jié)硬件要求硬件要求一個或多個片上時鐘可用用戶進程優(yōu)先級

4、用戶進程優(yōu)先級1 - 255進程切換的時間進程切換的時間小于5sec 60MHz, 0 ws.中斷停止時間中斷停止時間小于1.8 sec 60MHz, 0 wsRTX的技術規(guī)范10.2 RTX 操作系統(tǒng)庫方式移植移植前準備工作說明: RTX系統(tǒng)軟件開發(fā)平臺僅支持MDK,建議使用MDK4.74。找一個簡單的工程,越簡單越好,在這個簡單的工程上面移植即可。簡單工程里面不能有SysTick,PendSV 和 SVC這三個系統(tǒng)中斷的使用,因為RTX系統(tǒng)要使用這三個中斷。RTX 操作系統(tǒng)庫方式移植第1步:使能 RTX;第2步:添加RTX系統(tǒng)的配置文件RTX_Conf_CM.cRTX_Conf_CM.c;

5、 10.2.3 RTX 操作系統(tǒng)配置說明在文件“RTX_Config.c”中進行配置Number of concurrent running tasks 參數(shù)范圍 0 250,表示同時運行的最大任務數(shù),空閑任務不包含在這個里面。Number of tasks with user-provided stack 參數(shù)范圍 0 250,表示自定義任務堆棧的任務數(shù),如果這個參數(shù)定義為 0 的話,表示所有的任務都是使用的配置向導里面第三個參數(shù)大小。Task statck size,表示系統(tǒng)分配的任務堆棧大小,單位字節(jié)。Check for the stack overflow,選擇是否使能任務堆棧監(jiān)測,選

6、上單選框表示使能,取消單選框表示禁能。Run in privileged mode選擇是否使能特權級模式,選上單選框表示使能任務工作在特權級模式,取消單選框表示任務工作在非特權級模式。RTX 操作系統(tǒng)配置說明Hardware timer,Core SysTick 表示選擇系統(tǒng)滴答定時器,一般情況下都是選用滴答定時器作為系統(tǒng)時鐘節(jié)拍。Peripheral Timer 表示使用外設定時器。Timer clock value,表示定時器主頻,單位 Hz。Timer tick value,表示系統(tǒng)時鐘節(jié)拍周期,單位 us。Round-Robin Task switching,選擇是否使能時間片調度。

7、Round-Robin Timeout ticks 范圍 1 1000。表示時間片的大小,單位是系統(tǒng)時鐘節(jié)拍個數(shù)。Number of user timers 范圍 1 250。表示用戶定時器個數(shù),即軟定時器個數(shù)。 ISR FIFO Queue size,表示 ISR FIFO 隊列大小。中斷服務程序中調用以 isr_ 開頭的函數(shù)時,會將請求類型存到此緩沖中。10.2.4 RTX 操作系統(tǒng)應用實例n 任務運行在特權級模式。n 滴答定時器主頻72MHz,這個也是STM32F103的主頻。n 系統(tǒng)時鐘節(jié)拍周期 1ms。RTX 操作系統(tǒng)應用實例OS_TID HandleTaskLED = NULL;O

8、S_TID HandleTaskLED = NULL; / /* * 任務句柄 * */ /intint main( main(voidvoid) ) bsp_Init(); bsp_Init(); /* 初始化外設 */ os_sys_init_user(AppTaskStart, os_sys_init_user(AppTaskStart, /* 任務函數(shù) */2, 2, /* 任務優(yōu)先級 */&AppTaskStartStk, &AppTaskStartStk, / /* * 任務棧 */sizeofsizeof(AppTaskStartStk); (AppTaskSta

9、rtStk); / /* * 任務棧大小*/ whilewhile (1); (1); #include#include bsp.hbsp.h / /* * 底層硬件驅動底層硬件驅動 * */ / #include#include RTL.hRTL.h staticstatic voidvoid AppTaskCreate( AppTaskCreate(voidvoid); ); _task _task voidvoid AppTaskLED( AppTaskLED(voidvoid););_task _task voidvoid AppTaskStart( AppTaskStart(void

10、void););staticstatic uint64_t AppTaskLEDStk256 / 8; uint64_t AppTaskLEDStk256 / 8; / /* * 任務棧任務棧 * */ /staticstatic uint64_t AppTaskStartStk512 / 8; uint64_t AppTaskStartStk512 / 8; / /* * 任務棧任務棧 * */ /RTX 操作系統(tǒng)應用實例_task _task voidvoid AppTaskLEDAppTaskLED( (voidvoid) ) whilewhile (1) (1)bsp_LedToggl

11、ebsp_LedToggle(2); (2); bsp_LedTogglebsp_LedToggle(3);(3);os_dly_waitos_dly_wait(200);(200); staticstatic voidvoid AppTaskCreateAppTaskCreate( (voidvoid) ) HandleTaskLEDHandleTaskLED = = os_tsk_create_useros_tsk_create_user( (AppTaskLEDAppTaskLED, , / /* * 任務函數(shù)任務函數(shù) */ 1, 1, / /* * 任務優(yōu)先級任務優(yōu)先級 */ &

12、; &AppTaskLEDStkAppTaskLEDStk, , / /* * 任務棧任務棧 */ sizeofsizeof( (AppTaskLEDStkAppTaskLEDStk); ); / /* * 任務棧大小,單位字節(jié)數(shù)任務棧大小,單位字節(jié)數(shù) */ _task 意思是無返回值型函數(shù)聲明和定義,編譯器預編處理時用。_task _task voidvoid AppTaskStartAppTaskStart( (voidvoid) ) AppTaskCreateAppTaskCreate();(); whilewhile (1) (1) bsp_LedTogglebsp_LedTo

13、ggle(1); (1); bsp_LedTogglebsp_LedToggle(4);(4);os_dly_waitos_dly_wait(500);(500); 18:39嵌入式系統(tǒng)原理與應用13RTX流程圖10.2.4 RTX 的調試方法 System and Viewer:Timer Number:0 表示使用芯片的滴答定時器,1 表外設定時器。Tick Timer:時鐘節(jié)拍周期。Roud Robin Timeout:時間片調度時任務分配的時間片大小。Stack Size:任務棧大小,單位字節(jié)。Stack Overflow Check:設置是否支持棧溢出檢測。Tack Usage:任務創(chuàng)建情況。User Timers:軟件定時器個數(shù)。ID:任務的 ID 標示。Name:任務的函數(shù)名。Priority:任務優(yōu)先級。State:任務狀態(tài)。Delay:任務延遲時間。Event Value:任務當前的事件標志數(shù)值Event Mask:任務等待的事件標志數(shù)值Stack Load:任務堆棧利用率。只要os_idle_demon處于Running狀態(tài),那么很可能就是進入了死鎖的狀態(tài)。RTX 的調試方法Event Viewer:記錄具體某一時刻,哪個進程在運行,和進程運行之間的切換10.3 源碼方式移植RTX系統(tǒng)第1步:在工程模板創(chuàng)建 RTX文件夾;第2步:添加源碼文件到相應文件夾;第3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論