第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ù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

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

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

3、 支持多線程和線程安全操作。 使用 MDK 基于對話框的配置向?qū)?,可以很方便的完?MDK 的配置。 市場領(lǐng)先的RTOS,您可以信心十足地在應(yīng)用程序中使用 RTX。 RTX 提供完全確定性確定性的行為,可以在預(yù)定義時間內(nèi)(期限)處理事件和中 斷,這個主要得益于RTX的零中斷延遲特性。 * 嵌入式系統(tǒng)原理與應(yīng)用 5 描述描述RX Kernel 支持的進程數(shù)支持的進程數(shù)最多256 支持的信箱數(shù)支持的信箱數(shù)無限制 支持的信號量數(shù)支持的信號量數(shù)無限制 支持的互斥量數(shù)支持的互斥量數(shù)無限制 支持的事件數(shù)支持的事件數(shù)每個進程16個 支持的用戶定時器數(shù)支持的用戶定時器數(shù)無限制 RAM 要求要求最少500字節(jié)

4、代碼要求代碼要求小于5 K字節(jié) 硬件要求硬件要求一個或多個片上時鐘可用 用戶進程優(yōu)先級用戶進程優(yōu)先級1 - 255 進程切換的時間進程切換的時間小于5sec 60MHz, 0 ws. 中斷停止時間中斷停止時間小于1.8 sec 60MHz, 0 ws RTX的技術(shù)規(guī)范 10.2 RTX 操作系統(tǒng)庫方式移植 移植前準備工作說明: RTX系統(tǒng)軟件開發(fā)平臺僅支持MDK,建議使用MDK4.74。 找一個簡單的工程,越簡單越好,在這個簡單的工程上面 移植即可。 簡單工程里面不能有SysTick,PendSV 和 SVC這三個系統(tǒng) 中斷的使用,因為RTX系統(tǒng)要使用這三個中斷。 RTX 操作系統(tǒng)庫方式移植

5、第1步:使能 RTX; 第2步:添加RTX系統(tǒng)的配置文件RTX_Conf_CM.cRTX_Conf_CM.c; 10.2.3 RTX 操作系統(tǒng)配置說明 在文件“RTX_Config.c”中進行配置 Number of concurrent running tasks 參 數(shù)范圍 0 250,表示同時運行的最大任 務(wù)數(shù),空閑任務(wù)不包含在這個里面。 Number of tasks with user-provided stack 參數(shù)范圍 0 250,表示自定義任務(wù) 堆棧的任務(wù)數(shù),如果這個參數(shù)定義為 0 的 話,表示所有的任務(wù)都是使用的配置向?qū)?里面第三個參數(shù)大小。 Task statck siz

6、e,表示系統(tǒng)分配的任務(wù) 堆棧大小,單位字節(jié)。 Check for the stack overflow,選擇是否 使能任務(wù)堆棧監(jiān)測,選上單選框表示使能 ,取消單選框表示禁能。 Run in privileged mode選擇是否使能特 權(quán)級模式,選上單選框表示使能任務(wù)工作 在特權(quán)級模式,取消單選框表示任務(wù)工作 在非特權(quán)級模式。 RTX 操作系統(tǒng)配置說明 Hardware timer,Core SysTick 表示選擇 系統(tǒng)滴答定時器,一般情況下都是選用滴答 定時器作為系統(tǒng)時鐘節(jié)拍。Peripheral Timer 表示使用外設(shè)定時器。 Timer clock value,表示定時器主頻,單 位

7、 Hz。 Timer tick value,表示系統(tǒng)時鐘節(jié)拍周期 ,單位 us。 Round-Robin Task switching,選擇是否 使能時間片調(diào)度。 Round-Robin Timeout ticks 范圍 1 1000。表示時間片的大小,單位是系統(tǒng)時 鐘節(jié)拍個數(shù)。 Number of user timers 范圍 1 250。表 示用戶定時器個數(shù),即軟定時器個數(shù)。 ISR FIFO Queue size,表示 ISR FIFO 隊列大小。中斷服務(wù)程序中調(diào)用以 isr_ 開頭 的函數(shù)時,會將請求類型存到此緩沖中。 10.2.4 RTX 操作系統(tǒng)應(yīng)用實例 n 任務(wù)運行在特權(quán)級模式。

8、 n 滴答定時器主頻72MHz,這個也是STM32F103的主頻。 n 系統(tǒng)時鐘節(jié)拍周期 1ms。 RTX 操作系統(tǒng)應(yīng)用實例 OS_TID HandleTaskLED = NULL;OS_TID HandleTaskLED = NULL; / /* * 任務(wù)句柄 * */ / intint main( main(voidvoid) ) bsp_Init(); bsp_Init(); /* 初始化外設(shè) */ os_sys_init_user(AppTaskStart, os_sys_init_user(AppTaskStart, /* 任務(wù)函數(shù) */ 2, 2, /* 任務(wù)優(yōu)先級 */ (App

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

10、art(voidvoid);); staticstatic uint64_t AppTaskLEDStk256 / 8; uint64_t AppTaskLEDStk256 / 8; / /* * 任務(wù)棧任務(wù)棧 * */ / staticstatic uint64_t AppTaskStartStk512 / 8; uint64_t AppTaskStartStk512 / 8; / /* * 任務(wù)棧任務(wù)棧 * */ / RTX 操作系統(tǒng)應(yīng)用實例 _task _task voidvoid AppTaskLED( AppTaskLED(voidvoid) ) whilewhile (1) (1)

11、 bsp_LedToggle(2); bsp_LedToggle(2); bsp_LedToggle(3); bsp_LedToggle(3); os_dly_wait(200);os_dly_wait(200); staticstatic voidvoid AppTaskCreate( AppTaskCreate(voidvoid) ) HandleTaskLED = os_tsk_create_user(AppTaskLED, HandleTaskLED = os_tsk_create_user(AppTaskLED, / /* * 任務(wù)函數(shù)任務(wù)函數(shù) */ 1, 1, / /* * 任務(wù)優(yōu)

12、先級任務(wù)優(yōu)先級 */ (AppTaskLEDStk); / /* * 任務(wù)棧大小,單位字節(jié)數(shù)任務(wù)棧大小,單位字節(jié)數(shù) */ _task 意 思是無返回 值型函數(shù)聲 明和定義, 編譯器預(yù)編 處理時用。 _task _task voidvoid AppTaskStart( AppTaskStart(voidvoid) ) AppTaskCreate(); AppTaskCreate(); whilewhile (1) (1) bsp_LedToggle(1); bsp_LedToggle(1); bsp_LedToggle(4); bsp_LedToggle(4); os_dly_wait(500)

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

溫馨提示

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

評論

0/150

提交評論