RT-Thread移植入門學習


一、簡介

RT-Thread 是一款主要由中國開源社區主導開發的開源實時操作系統(許可證GPLv2)。實時線程操作系統不僅僅是一個單一的實時操作系統內核,它也是一個完整的應用系統,包含了實時、嵌入式系統相關的各個組件:TCP/IP協議棧,文件系統,libc接口,圖形用戶界面等。
官網地址:https://www.rt-thread.org/document/site/#/

二、版本介紹

RT-Thread,全稱是 Real Time-Thread,顧名思義,它是一個嵌入式實時多線程操作系統,基本屬性之一是支持多任務,允許多個任務同時運行並不意味着處理器在同一時刻真地執行了多個任務。事實上,一個處理器核心在某一時刻只能運行一個任務,由於每次對一個任務的執行時間很短、任務與任務之間通過任務調度器進行非常快速地切換(調度器根據優先級決定此刻該執行的任務),給人造成多個任務在一個時刻同時運行的錯覺。在 RT-Thread 系統中,任務通過線程實現的,RT-Thread 中的線程調度器也就是以上提到的任務調度器。

RT-Thread 主要采用 C 語言編寫,淺顯易懂,方便移植。它把面向對象的設計方法應用到實時系統設計中,使得代碼風格優雅、架構清晰、系統模塊化並且可裁剪性非常好。針對資源受限的微控制器(MCU)系統,可通過方便易用的工具,裁剪出僅需要 3KB Flash、1.2KB RAM 內存資源的 NANO 版本(NANO 是 RT-Thread 官方於 2017 年 7 月份發布的一個極簡版內核);而對於資源豐富的物聯網設備,RT-Thread 又能使用在線的軟件包管理工具,配合系統配置工具實現直觀快速的模塊化裁剪,無縫地導入豐富的軟件功能包,實現類似 Android 的圖形界面及觸摸滑動效果、智能語音交互效果等復雜功能。

相較於 Linux 操作系統,RT-Thread 體積小,成本低,功耗低、啟動快速,除此以外 RT-Thread 還具有實時性高、占用資源小等特點,非常適用於各種資源受限(如成本、功耗限制等)的場合。雖然 32 位 MCU 是它的主要運行平台,實際上很多帶有 MMU、基於 ARM9、ARM11 甚至 Cortex-A 系列級別 CPU 的應用處理器在特定應用場合也適合使用 RT-Thread。

從官網就可以看出RT-Thread有三個版本,分別是標准版、Nano版、Smart版

  1. 標准版
    物聯網操作系統是指以操作系統內核(可以是 RTOS、Linux 等)為基礎,包括如文件系統、圖形庫等較為完整的中間件組件,具備低功耗、安全、通信協議支持和雲端連接能力的軟件平台,RT-Thread 就是一個 IoT OS。

    它具體包括以下部分:
  • 內核層:RT-Thread 內核,是 RT-Thread 的核心部分,包括了內核系統中對象的實現,例如多線程及其調度、信號量、郵箱、消息隊列、內存管理、定時器等;libcpu/BSP(芯片移植相關文件 / 板級支持包)與硬件密切相關,由外設驅動和 CPU 移植構成。

  • 組件與服務層:組件是基於 RT-Thread 內核之上的上層軟件,例如虛擬文件系統、FinSH 命令行界面、網絡框架、設備框架等。采用模塊化設計,做到組件內部高內聚,組件之間低耦合。

  • RT-Thread 軟件包:運行於 RT-Thread 物聯網操作系統平台上,面向不同應用領域的通用軟件組件,由描述信息、源代碼或庫文件組成。RT-Thread 提供了開放的軟件包平台,這里存放了官方提供或開發者提供的軟件包,該平台為開發者提供了眾多可重用軟件包的選擇,這也是 RT-Thread 生態的重要組成部分。軟件包生態對於一個操作系統的選擇至關重要,因為這些軟件包具有很強的可重用性,模塊化程度很高,極大的方便應用開發者在最短時間內,打造出自己想要的系統。RT-Thread 已經支持的軟件包數量已經達到 60+,如下舉例:

  • 物聯網相關的軟件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。

  • 腳本語言相關的軟件包: 目前支持 JerryScript、MicroPython。

  • 多媒體相關的軟件包:Openmv、mupdf。

  • 工具類軟件包: CmBacktrace、EasyFlash、EasyLogger、SystemView。

  • 系統相關的軟件包: RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。

  • 外設庫與驅動類軟件包: RealTek RTL8710BN SDK。

  1. Nano版
    RT-Thread Nano 是一個極簡版的硬實時內核,它是由 C 語言開發,采用面向對象的編程思維,具有良好的代碼風格,是一款可裁剪的、搶占式實時多任務的 RTOS。其內存資源占用極小,功能包括任務處理、軟件定時器、信號量、郵箱和實時調度等相對完整的實時操作系統特性。適用於家電、消費電子、醫療設備、工控等領域大量使用的 32 位 ARM 入門級 MCU 的場合。
    下圖是 RT-Thread Nano 的軟件框圖,包含支持的 CPU 架構與內核源碼,還有可拆卸的 FinSH 組件:

    支持架構:ARM:Cortex M0/ M3/ M4/ M7 等、RISC-V 及其他。
    功能:線程管理、線程間同步與通信、時鍾管理、中斷管理、內存管理。

  2. Smart版
    RT-Thread Smart 是基於 RT-Thread 操作系統上的混合操作系統,簡稱為 rt-smart,它把應用從內核中獨立出來,形成獨立的用戶態應用程序,並具備獨立的地址空間(32 位系統上是 4G 的獨立地址空間)。
    以下是 rt-smart 的整體結構框圖,在硬件平台的基礎上通過 MMU、系統調用的方式把整個系統分成了內核態及用戶態。

三、學習方式

進入文檔幫助中心,可以看到官網的資料已經很詳細了,只需要看一下,基本都找到相應的學習資料。如下圖所示:

了解各個版本之間的差異后便可以選擇相應的版本進行學習,這里我選擇的是標准版,有想了解其他版本的小伙伴,看看官網的資料然后在找找相應的博客基本就明白了,Nano版和Smart版相對比較簡單一些。

四、標准版下載

  1. 版本選擇
    進入標准版文檔中心,找到版本選擇,如下圖所示:

    發布版本 3.1.x:
  • 做產品 / 項目:適合公司做產品或者項目
    • 若產品已經使用的是較早的發布版本,那么在維護產品時,建議仍然在舊的版本上進行維護
    • 如果是新的產品,那么建議使用 3.1.x 最新發布版本
  • 學習 / 研究:適合新手入門學習
    發布版本 4.0.x:
  • 做產品 / 項目:適合公司做產品或者項目
    • 4.0.x 支持 SMP,適合有多核需求的產品或項目
  • 學習 / 研究:適合新手入門學習、適合有入門經驗的 RT-Thread 開發者
    我選擇的版本是GitHub lts-v3.1.x 分支,小伙伴本可以根據自己的需求進行選擇,如下圖所示:
  1. 下載源碼
    下載有三種方式,這里我以壓縮包的形式進行下載,如下圖所示:

五、文件目錄分析

Name 描述
BSP 基於各種開發板移植的板支持包
components 組件,如FinshShell、文件系統、協議棧等。
documentation 相關文檔,如編碼樣式、doxygen等。
examples 相關示例代碼
include RT線程內核的頭文件
libcpu CPU移植代碼,如ARM/MIPS/RISC-V等。
src RT線程內核的源文件。
tools The script files for the RT-Thread command build tool.

到這里基本的介紹就算完成了,接下來便可以進行RT-Thread的移植了,有需求了解的小伙伴可以看我下一篇筆記。

參看文獻

RT-Thread文檔中心:https://www.rt-thread.org/document/site/#/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM