RT-Thread系统简介
前言
RT-Thread是一款國產(chǎn)的實(shí)時操作系統(tǒng),我們首先從實(shí)時操作系統(tǒng)開始進(jìn)行介紹,再展開RT-Thread操作系統(tǒng)。
實(shí)時操作系統(tǒng)介紹
實(shí)時操作系統(tǒng)誕生背景
為了解決兩個問題:
- 一個是早期的CPU任務(wù)切換的開銷太大,實(shí)時調(diào)度器可以避免任務(wù)頻繁切換導(dǎo)致CPU時間的浪費(fèi);
- 另一個是在一些特殊的應(yīng)用場景中,必須要保證重要的任務(wù)優(yōu)先被執(zhí)行。
定義
實(shí)時操作系統(tǒng)(RTOS)又稱,即時操作系統(tǒng),它會按照排序運(yùn)行、管理系統(tǒng)資源,并為開發(fā)應(yīng)用程序提供一致的基礎(chǔ)。
實(shí)時操作系統(tǒng)與一般的操作系統(tǒng)相比,最大的特色就是**“實(shí)時性”**,如果有一個任務(wù)需要執(zhí)行,實(shí)時操作系統(tǒng)會在較短時間內(nèi)執(zhí)行該任務(wù),不會有較長的延時,以此保證了各個任務(wù)的及時執(zhí)行。
實(shí)時操作系統(tǒng)中都要包含一個實(shí)時任務(wù)調(diào)度器,這個任務(wù)調(diào)度器與其他操作系統(tǒng)的最大不同是強(qiáng)調(diào):嚴(yán)格按照優(yōu)先級來分配CPU時間,并且時間片輪轉(zhuǎn)不是實(shí)時調(diào)度器的一個必選項(xiàng)。
設(shè)計(jì)思路
- 實(shí)時的消息、事件處理機(jī)制。常見操作系統(tǒng)中,消息隊(duì)列都是按照FIFO的方式進(jìn)行調(diào)度,但實(shí)時操作系統(tǒng)會提供基于優(yōu)先級的處理方式:依據(jù)優(yōu)先級來決定優(yōu)先接收信息。
- 提供內(nèi)核級的優(yōu)先級反轉(zhuǎn)處理方式。對于類似信號量一類的API,都能提供抑止優(yōu)先級翻轉(zhuǎn)的機(jī)制,防止操作系統(tǒng)死鎖。
- 減少粗粒度的鎖和長期關(guān)中斷的使用。“鎖”主要是指自旋鎖一類會影響中斷的鎖,也包括任何關(guān)中斷的操作。RTOS通常不允許長期關(guān)中斷。
- 系統(tǒng)級的服務(wù)也要保證實(shí)時性。實(shí)時操作系統(tǒng)中允許高優(yōu)先級的任務(wù)優(yōu)先寫入數(shù)據(jù),在文件系統(tǒng)提供服務(wù)的整個過程中,高優(yōu)先級的請求被優(yōu)先處理,這種高優(yōu)先級策略直到操作完成。
- 避免提供實(shí)時性不確定的API。多數(shù)實(shí)時操作系統(tǒng)都不支持虛擬內(nèi)存(page file/swap area),因?yàn)槿表撝袛?#xff08;page fault)會導(dǎo)致任務(wù)調(diào)度的不確定性增加。實(shí)時操作系統(tǒng)很多都支持分頁,但很少會使用虛擬內(nèi)存,因?yàn)橐淮稳表撝袛嗟拈_銷十分巨大(通常都是毫秒級),波及的代碼很多,導(dǎo)致用戶程序執(zhí)行的不確定性增加。
- 提供針對實(shí)時系統(tǒng)調(diào)度的專用API。
- 降低系統(tǒng)抖動。因?yàn)殛P(guān)中斷等原因,操作系統(tǒng)的調(diào)度器不會太精確的產(chǎn)生周期性的調(diào)度。但優(yōu)秀的實(shí)時操作系統(tǒng)能把調(diào)度器的抖動降低到微妙甚至百納秒一級。
- 針對實(shí)時性設(shè)計(jì)的SMP和虛擬化技術(shù)。實(shí)時操作系統(tǒng)的虛擬化能從hypervisor層面上提供虛擬機(jī)級別的實(shí)時調(diào)度,虛擬機(jī)上可以是另外一個實(shí)時系統(tǒng),也可以是一個非實(shí)時系統(tǒng)。
RT-Thread系統(tǒng)
概述
它是一個嵌入式實(shí)時多線程操作系統(tǒng),基本屬性之一是支持多任務(wù)。事實(shí)上一個處理器核心在某時刻只能運(yùn)行一個任務(wù),由于每次對一個任務(wù)的執(zhí)行時間很短、任務(wù)與任務(wù)之間通過任務(wù)調(diào)度器進(jìn)行快速的切換,給人造成多個任務(wù)在同一時刻同時運(yùn)行的錯覺。
RT-Threa系統(tǒng)中,任務(wù)通過線程實(shí)現(xiàn)的,RT-Thread中的線程調(diào)度器也就是以上提到的任務(wù)調(diào)度器。
架構(gòu)
物聯(lián)網(wǎng)操作系統(tǒng)是指以操作系統(tǒng)內(nèi)核(RTOS\Linux等)為基礎(chǔ),包括如文件系統(tǒng)、圖形庫等較為完整的中間件組件,具備低功耗、安全、通信協(xié)議支持和云端連接能力的軟件平臺。
RT-Thread與其他很多RTOS主要區(qū)別之一是:它不僅僅是一個實(shí)時內(nèi)核,還具備豐富的中間層組件,如下圖所示。
- 內(nèi)核層:RT-Thread內(nèi)核,是RT-Thread的核心部分,包括了內(nèi)核系統(tǒng)中對象的實(shí)現(xiàn),例如多線程及其調(diào)度、信號量、郵箱、消息隊(duì)列、內(nèi)存管理、定時器等;libcpu/BSP(芯片移植相關(guān)文件/板級支持包)與硬件密切相關(guān),由外設(shè)驅(qū)動和CPU移植構(gòu)成。
- 組件與服務(wù)層:組件是基于RT-Thread內(nèi)核之上的上層軟件,例如虛擬文件系統(tǒng)、FinSH命令行界面、網(wǎng)絡(luò)框架、設(shè)備框架等。采用模塊化設(shè)計(jì),做到組件內(nèi)部高內(nèi)聚,組件之間低耦合。
- RT-Thread軟件包:運(yùn)行于RT-Thread物聯(lián)網(wǎng)操作系統(tǒng)平臺上,面向不同應(yīng)用領(lǐng)域的通用軟件組件,由描述信息、源代碼或庫文件組成。
- 物聯(lián)網(wǎng)相關(guān)的軟件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。
- 腳本語言相關(guān)的軟件包:目前支持 JerryScript、MicroPython。
- 多媒體相關(guān)的軟件包:Openmv、mupdf。
- 工具類軟件包:CmBacktrace、EasyFlash、EasyLogger、SystemView。
- 系統(tǒng)相關(guān)的軟件包:RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。
- 外設(shè)庫與驅(qū)動類軟件包:RealTek RTL8710BN SDK。
總結(jié)
以上是生活随笔為你收集整理的RT-Thread系统简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css中两行图片整齐排布,css 标题一
- 下一篇: Wu342587524