




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、溫州大學(xué)物理與電子信息工程學(xué)院 楊衛(wèi)波嵌入式系統(tǒng)原理與應(yīng)用第10章 RTX操作系統(tǒng)介紹10.1 RTX操作系統(tǒng)介紹根據(jù)維基百科的定義,OS是一組管理硬件和為應(yīng)用軟件提供服務(wù)的軟件。硬件的抽象硬件的抽象:OS的首要任務(wù)正是把繁雜的底層硬件的執(zhí)行細(xì)節(jié)隱藏,提供給程序和用戶一個(gè)相對(duì)抽象的概念。資源的管理資源的管理:如何優(yōu)化資源的分配,減少有害的競(jìng)爭(zhēng),提高某些資源的共享效率,都是操作系統(tǒng)關(guān)心的核心話題。一個(gè)不成文的小經(jīng)驗(yàn):如果源程序大于1MB,那就有必要用RTOS了!10.2 RTX本課程以Keil公司開(kāi)發(fā)的RTX實(shí)時(shí)操作系統(tǒng)作為學(xué)習(xí)對(duì)象,主要原因:RTX五臟俱全,是個(gè)完整且優(yōu)秀的實(shí)時(shí)操作系統(tǒng);RTX
2、對(duì)ARM設(shè)備Cortex-M系列的芯片有比較好的支持(自家產(chǎn)品);更重要的是RTX不僅免費(fèi),而且其代碼是開(kāi)放的,可以自由查閱。RTX 系統(tǒng)的特色帶有源碼源碼的免版稅。支持時(shí)間片時(shí)間片、搶占式搶占式和合作式合作式調(diào)度。以低的中斷延遲執(zhí)行高速實(shí)時(shí)操作(對(duì)于M3/M4內(nèi)核可以實(shí)現(xiàn)零中斷延遲,零中斷延遲零中斷延遲是指ISR的中斷相應(yīng)時(shí)間和沒(méi)有使用RTX系統(tǒng)是一樣的,也就是說(shuō)RTX內(nèi)核庫(kù)中沒(méi)有關(guān)閉中斷的操作)。小的空間占用,適用于資源受限的系統(tǒng)。不限制數(shù)量的任務(wù),每個(gè)任務(wù)都具有 254 的優(yōu)先級(jí)。不限制數(shù)量的信號(hào)量、互斥信號(hào)量、消息郵箱和軟定時(shí)器。支持多線程和線程安全操作。使用 MDK 基于對(duì)話框的配置
3、向?qū)?,可以很方便的完?MDK 的配置。市場(chǎng)領(lǐng)先的RTOS,您可以信心十足地在應(yīng)用程序中使用 RTX。RTX 提供完全確定性確定性的行為,可以在預(yù)定義時(shí)間內(nèi)(期限)處理事件和中斷,這個(gè)主要得益于RTX的零中斷延遲特性。18:39嵌入式系統(tǒng)原理與應(yīng)用5描述描述RX Kernel支持的進(jìn)程數(shù)支持的進(jìn)程數(shù)最多256支持的信箱數(shù)支持的信箱數(shù)無(wú)限制支持的信號(hào)量數(shù)支持的信號(hào)量數(shù)無(wú)限制支持的互斥量數(shù)支持的互斥量數(shù)無(wú)限制支持的事件數(shù)支持的事件數(shù)每個(gè)進(jìn)程16個(gè)支持的用戶定時(shí)器數(shù)支持的用戶定時(shí)器數(shù)無(wú)限制RAM 要求要求最少500字節(jié)代碼要求代碼要求小于5 K字節(jié)硬件要求硬件要求一個(gè)或多個(gè)片上時(shí)鐘可用用戶進(jìn)程優(yōu)先級(jí)
4、用戶進(jìn)程優(yōu)先級(jí)1 - 255進(jìn)程切換的時(shí)間進(jìn)程切換的時(shí)間小于5sec 60MHz, 0 ws.中斷停止時(shí)間中斷停止時(shí)間小于1.8 sec 60MHz, 0 wsRTX的技術(shù)規(guī)范10.2 RTX 操作系統(tǒng)庫(kù)方式移植移植前準(zhǔn)備工作說(shuō)明: RTX系統(tǒng)軟件開(kāi)發(fā)平臺(tái)僅支持MDK,建議使用MDK4.74。找一個(gè)簡(jiǎn)單的工程,越簡(jiǎn)單越好,在這個(gè)簡(jiǎn)單的工程上面移植即可。簡(jiǎn)單工程里面不能有SysTick,PendSV 和 SVC這三個(gè)系統(tǒng)中斷的使用,因?yàn)镽TX系統(tǒng)要使用這三個(gè)中斷。RTX 操作系統(tǒng)庫(kù)方式移植第1步:使能 RTX;第2步:添加RTX系統(tǒng)的配置文件RTX_Conf_CM.cRTX_Conf_CM.c;
5、 10.2.3 RTX 操作系統(tǒng)配置說(shuō)明在文件“RTX_Config.c”中進(jìn)行配置Number of concurrent running tasks 參數(shù)范圍 0 250,表示同時(shí)運(yùn)行的最大任務(wù)數(shù),空閑任務(wù)不包含在這個(gè)里面。Number of tasks with user-provided stack 參數(shù)范圍 0 250,表示自定義任務(wù)堆棧的任務(wù)數(shù),如果這個(gè)參數(shù)定義為 0 的話,表示所有的任務(wù)都是使用的配置向?qū)Ю锩娴谌齻€(gè)參數(shù)大小。Task statck size,表示系統(tǒng)分配的任務(wù)堆棧大小,單位字節(jié)。Check for the stack overflow,選擇是否使能任務(wù)堆棧監(jiān)測(cè),選
6、上單選框表示使能,取消單選框表示禁能。Run in privileged mode選擇是否使能特權(quán)級(jí)模式,選上單選框表示使能任務(wù)工作在特權(quán)級(jí)模式,取消單選框表示任務(wù)工作在非特權(quán)級(jí)模式。RTX 操作系統(tǒng)配置說(shuō)明Hardware timer,Core SysTick 表示選擇系統(tǒng)滴答定時(shí)器,一般情況下都是選用滴答定時(shí)器作為系統(tǒng)時(shí)鐘節(jié)拍。Peripheral Timer 表示使用外設(shè)定時(shí)器。Timer clock value,表示定時(shí)器主頻,單位 Hz。Timer tick value,表示系統(tǒng)時(shí)鐘節(jié)拍周期,單位 us。Round-Robin Task switching,選擇是否使能時(shí)間片調(diào)度。
7、Round-Robin Timeout ticks 范圍 1 1000。表示時(shí)間片的大小,單位是系統(tǒng)時(shí)鐘節(jié)拍個(gè)數(shù)。Number of user timers 范圍 1 250。表示用戶定時(shí)器個(gè)數(shù),即軟定時(shí)器個(gè)數(shù)。 ISR FIFO Queue size,表示 ISR FIFO 隊(duì)列大小。中斷服務(wù)程序中調(diào)用以 isr_ 開(kāi)頭的函數(shù)時(shí),會(huì)將請(qǐng)求類(lèi)型存到此緩沖中。10.2.4 RTX 操作系統(tǒng)應(yīng)用實(shí)例n 任務(wù)運(yùn)行在特權(quán)級(jí)模式。n 滴答定時(shí)器主頻72MHz,這個(gè)也是STM32F103的主頻。n 系統(tǒng)時(shí)鐘節(jié)拍周期 1ms。RTX 操作系統(tǒng)應(yīng)用實(shí)例OS_TID HandleTaskLED = NULL;O
8、S_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)先級(jí) */&AppTaskStartStk, &AppTaskStartStk, / /* * 任務(wù)棧 */sizeofsizeof(AppTaskStartStk); (AppTaskSta
9、rtStk); / /* * 任務(wù)棧大小*/ whilewhile (1); (1); #include#include bsp.hbsp.h / /* * 底層硬件驅(qū)動(dòng)底層硬件驅(qū)動(dòng) * */ / #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; / /* * 任務(wù)棧任務(wù)棧 * */ /staticstatic uint64_t AppTaskStartStk512 / 8; uint64_t AppTaskStartStk512 / 8; / /* * 任務(wù)棧任務(wù)棧 * */ /RTX 操作系統(tǒng)應(yīng)用實(shí)例_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, , / /* * 任務(wù)函數(shù)任務(wù)函數(shù) */ 1, 1, / /* * 任務(wù)優(yōu)先級(jí)任務(wù)優(yōu)先級(jí) */ &
12、; &AppTaskLEDStkAppTaskLEDStk, , / /* * 任務(wù)棧任務(wù)棧 */ sizeofsizeof( (AppTaskLEDStkAppTaskLEDStk); ); / /* * 任務(wù)棧大小,單位字節(jié)數(shù)任務(wù)棧大小,單位字節(jié)數(shù) */ _task 意思是無(wú)返回值型函數(shù)聲明和定義,編譯器預(yù)編處理時(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)原理與應(yīng)用13RTX流程圖10.2.4 RTX 的調(diào)試方法 System and Viewer:Timer Number:0 表示使用芯片的滴答定時(shí)器,1 表外設(shè)定時(shí)器。Tick Timer:時(shí)鐘節(jié)拍周期。Roud Robin Timeout:時(shí)間片調(diào)度時(shí)任務(wù)分配的時(shí)間片大小。Stack Size:任務(wù)棧大小,單位字節(jié)。Stack Overflow Check:設(shè)置是否支持棧溢出檢測(cè)。Tack Usage:任務(wù)創(chuàng)建情況。User Timers:軟件定時(shí)器個(gè)數(shù)。ID:任務(wù)的 ID 標(biāo)示。Name:任務(wù)的函數(shù)名。Priority:任務(wù)優(yōu)先級(jí)。State:任務(wù)狀態(tài)。Delay:任務(wù)延遲時(shí)間。Event Value:任務(wù)當(dāng)前的事件標(biāo)志數(shù)值Event Mask:任務(wù)等待的事件標(biāo)志數(shù)值Stack Load:任務(wù)堆棧利用率。只要os_idle_demon處于Running狀態(tài),那么很可能就是進(jìn)入了死鎖的狀態(tài)。RTX 的調(diào)試方法Event Viewer:記錄具體某一時(shí)刻,哪個(gè)進(jìn)程在運(yùn)行,和進(jìn)程運(yùn)行之間的切換10.3 源碼方式移植RTX系統(tǒng)第1步:在工程模板創(chuàng)建 RTX文件夾;第2步:添加源碼文件到相應(yīng)文件夾;第3
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 銀屑病物理治療
- 防水灌漿培訓(xùn)課件
- 花西子七夕活動(dòng)方案策劃
- 智能電力:實(shí)現(xiàn)能源供應(yīng)的可持續(xù)性
- 2025年《小小郵遞員》大班標(biāo)準(zhǔn)教案
- 初一工作總結(jié)計(jì)劃
- 金融投資平臺(tái)投資風(fēng)險(xiǎn)提示及免責(zé)聲明書(shū)
- 專(zhuān)業(yè)教育機(jī)構(gòu)遠(yuǎn)程教學(xué)平臺(tái)合作
- 市場(chǎng)趨勢(shì)的深度分析與解讀
- 電氣化鐵路架空導(dǎo)線相關(guān)行業(yè)投資規(guī)劃報(bào)告
- 燃?xì)獍踩珯z討書(shū)700字(7篇)
- 一寸光陰一寸金課件
- 閥控密封式鉛酸蓄電池使用說(shuō)明書(shū).
- 外貿(mào)公司采購(gòu)意向書(shū)
- 1聚焦義務(wù)教育語(yǔ)文第三學(xué)段課標(biāo)、教材與教學(xué)
- 義務(wù)教育《勞動(dòng)》課程標(biāo)準(zhǔn)(2022年版)
- 達(dá)格列凈的療效與安全PPT課件
- 高標(biāo)準(zhǔn)基本農(nóng)田土地整治項(xiàng)目工程施工費(fèi)預(yù)算表
- 河南省普通高校招生考生體格檢查表
- 新三板知識(shí)測(cè)評(píng)考題答案
- 試坑單環(huán)注水試驗(yàn)記錄表
評(píng)論
0/150
提交評(píng)論