日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

嵌入式OS入门笔记-以RTX为案例:二.快速移植到RTX

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式OS入门笔记-以RTX为案例:二.快速移植到RTX 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
嵌入式OS入門筆記-以RTX為案例:二.快速移植到RTX

本篇筆記將簡單介紹RTX,包括基本架構,如何在Keil中配置。需要安裝ARM-MDK和一塊硬件板,筆記以STM32F4Discovery為例子。


1.為什么要用RTOS?
盡管把所有程序放在一個大的循環里順序執行,總是可能的(甚至很多時候是足夠的勝任任務的),但是這樣做有好幾個明顯的缺點:
? 過分依賴中斷 ISR(Interrupt Service Routine, 中斷服務例程)
? 同步不同的ISR不容易
? 可預測性和延展性很差(大量的ISR,甚至是中斷嵌套)
? 對局部的修改會對整個系統有水花效應(沒有模塊化,牽一發而動全身)
RTOS主要是把要執行的運算包裝在小的task里面,這樣好的好處是:
? 更好的程序流(program flow)和反應
? 多任務(盡管這是假象)
? 簡單的ISR,強的決定性
? 更好的進程間通信
? 更好的資源管理
? 最關鍵的是,開發成本低!

一個不成文的小經驗:如果源程序大于1MB,那就有必要用RTOS了!


2.為什么不要用RTOS?
當然,也有很多情況下我們不希望用RTOS的:
? 項目簡單
? 不想學RTOS
? RTOS盡管性能方便出色,但不是最優的!(好比用匯編還是用C,有經驗的程序員可以寫出比編譯器效率更高的代碼,可是編譯器大大簡化開發過程。)如果需要極致的性能優化,那可能RTOS不是你的第一選擇,畢竟RTOS是有內存和運行overhead的。
? 開發RTOS很耗時間
? 不是所有RTOS都是免費的

3.為什么RTX?
為什么選RTX不選別的RTOS,例如FreeRTOS?
? 免費(royalty-free,買斷式的授權)
? 好上手
? 對硬件要求低
? 和ARM軟硬件兼容性好(ARM-MDK自帶)
? 可以查看源代碼
其實主要還是看應用,RTX在行業里聲譽還是很好的,穩定性強,開發成本低,而且基本功能齊全。

4.RTX的結構

RTX其實是Keil Real-Time Library (RTL)的核心,這個RTL有很多部分的,都是在RTX kernel基礎上庫。 RTX Kernel本身的話,結構大概如下圖:


主要的組件有:mutex互斥鎖,memory pool內存池,mailbox郵箱,time(timer)定時器, event事件, semaphore旗語或信號燈,task management進程管理等等和最核心的Scheduler排程器(進程調度器)。

5.移植到RTX上很簡單!

移植一個現有的ARM-MDK工程到RTX上非常簡單:
1.在工程配置中選擇RTX Kernel作為你的操作系統,如下圖:
?

2.在你的main.c里添加頭文件RTL.H:
#include <RTL.h> 3.復制RTX_Conf_CM.文件到你的工程里。這個文件可以在<<YourKeil Directory>>\ARM\RL\RTX\Config 路徑下找到。
4.將你原有的函數改造成task,就是在函數返回類型前添加標記 __task (雙下劃線) 例如:
__task void task(void){ for(;;){ //... } }
5.初始化RTX并創建第一個task,例如:
os_sys_init(task);基本就這樣,具體的關于Task的API,后面的筆記會繼續介紹。


6.幾個相關的文件
完成上述幾步后,你會發現你的工程里主要多了這三個文件:
? RTL.h
? RTL_Conf_CM.c
? RTX_lib.c
第一個是整個RTL的API函數簽名。第二個是RTX的配置文件,你可以通過configuration wizard提供的GUI去配置你的OS。最后一個是內核的配置文件,有一些可以實時調用的配置函數。


7.RTX的配置
這里多說說第二個文件,你可以使用text editor去修改代碼,也可以使用configuration wizard,如下圖:
?
這里先逐項簡單介紹這里的選項:
? 并行的task數
? 用戶設定堆棧的task數
? 預設堆棧大小
? 檢查是否堆棧溢出
? 是否在kernel mode下運行?這個意思是一般的task是否也在kernel mode下運行,一般不勾選。
? 硬件時鐘,CM系列的Core SysTick就是專門為OS所設置的,所以如果你原來就有用到這個timer的話,你的移植可能會出現問題。
? 硬件時鐘頻率
? 一個tick的時間,預設是10ms,這個和delay函數和排程器有關
? 是否輪轉式排程?
? 輪轉式排程的時間片,如果是5,那就是5*10ms=50ms(和tick值有關)
? 用戶時鐘數
? ISR隊列的大小
一般主要調的就時鐘頻率和排程的設置。


8.題外話-CMSIS-RTOS 和 RTX
uVision5提供的RTOS是CMSIS-RTOS,有點讓人覺得摸不著頭腦。其實CMSIS-RTOS是在RTX上的另一層封裝。這樣做的意義在于,建立在不同RTOS(例如RTX和FreeRTOS)的項目可以用同一套API。對于大部分ARM的核來說,其實其底層就是RTX。
?
所以其實本質上是一個東西,只是API名稱不同。使用CMSIS-RTOS 的好處就是稍微強的移植性。但是考慮到ARM的市場占有和他們RTX本身的兼容性,不用CMSIS-RTOS好像更好。而且兩層封裝,很容易把人弄暈。


當然,如果有需要,可以參考官方文檔:移植RTX到CMSIS-RTOS。


文章轉載自:http://blog.csdn.net/raym0ndkwan/article/details/32859989


總結

以上是生活随笔為你收集整理的嵌入式OS入门笔记-以RTX为案例:二.快速移植到RTX的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天干视频 | 在线播放波多野结衣 | 无码播放一区二区三区 | 手机在线免费看av | 可以免费看黄的网站 | 激情小说综合 | 97人人看| 久成人 | 日韩美女一区二区三区 | 在线看片日韩 | 国产精品黄色在线观看 | 久久久久久久久蜜桃 | 国产精品suv一区二区88 | 在线精品小视频 | 黄色片a级 | 老头把女人躁得呻吟 | 在线视频观看一区二区 | 欧美人与动性xxxxx杂性 | 男人天堂五月天 | 亚洲欧美一区二区三区 | 人人艹人人爱 | 国产精品v亚洲精品v日韩精品 | 超碰av在线播放 | 国产精品丝袜一区二区 | 91天天射| 高清一级片 | 欧美成人片在线观看 | 成人三级晚上看 | 久久久久免费 | r级无码视频在线观看 | 91人人视频 | 欧美日本一道本 | 91成人在线观看喷潮动漫 | 亚洲喷潮| 国产精品高清网站 | 欧美性做爰大片免费 | 狠狠操网址 | 影音先锋啪啪 | 裸体一区二区三区 | 日韩中文字幕二区 | 欧美日韩精品中文字幕 | 日本黄色不卡视频 | 91精品国产手机 | 欧美你懂的 | 欧美日韩另类一区 | 级毛片内射视频 | 一区二区三区欧美在线 | av午夜天堂| 日日操夜夜摸 | 日本黄色录像 | 鬼灭之刃柱训练篇在线观看 | 黄色成人在线观看 | 特大黑人巨交吊性xx | 精品国产乱子伦一区二区 | 在线观看国产一区二区三区 | 天天干夜夜爽 | 欧美黄视频在线观看 | 国产日产欧美一区二区 | 亚洲综合第一 | 最近免费中文字幕大全免费版视频 | 日韩视频一区二区三区四区 | 美女精品在线观看 | 国产免费a| 小柔的淫辱日记(1~7) | 欧美精品www | 久久伊人中文字幕 | 中国特级黄色大片 | xxxxxhd亚洲人hd| 激情五月网站 | 福利电影在线播放 | 国产极品美女高潮无套嗷嗷叫酒店 | 欧美成人精品激情在线观看 | 欧美午夜精品久久久久免费视 | 国产精品中文在线 | 99久久久无码国产精品 | 女同性恋毛片 | 天堂成人在线视频 | 国产精品国产三级国产传播 | 中文字幕在线观看国产 | 男女瑟瑟网站 | 天天尻| 我和岳m愉情xxxⅹ视频 | 亚洲一区二区精品在线观看 | 久久机热这里只有精品 | 天天夜夜久久 | 亚洲午夜色 | 福利网站在线观看 | 国产野外作爱视频播放 | 99re6在线 | 日韩黄色在线视频 | 日韩欧美国产片 | 综合色综合| 深爱五月激情五月 | 夫妻性生活自拍 | 亚洲高清毛片 | www.白浆| 国产精品国产 | 天堂网免费视频 | 在线看免费毛片 |