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