一種新的開源嵌入式操作系統(tǒng)
目前對 嵌入式操作系統(tǒng) 有巨大的需求,你建立的操作系統(tǒng)最好是開源的。RT-Thread 項目的研發(fā)團(tuán)隊花了兩年時間,研發(fā)出了該項目的最新成果:RT-Thread Smart。這是一款微內(nèi)核的操作系統(tǒng),主要針對中高端的處理器,如具有內(nèi)存管理單元(MMU)的 RISC-V 或 Arm Cortex-A,為嵌入式領(lǐng)域的所有行業(yè)提供了一個具有競爭力的、基于 POSIX 的軟件平臺。
誰需要 RT-Thread Smart?
RT-Thread Smart 是一款專業(yè)的、高性能的微內(nèi)核操作系統(tǒng),用于實時應(yīng)用。它為所有市場的嵌入式設(shè)備提供了開源基礎(chǔ),如安全(IP 攝像頭)、工業(yè)控制、車載設(shè)備、消費電子及其他嵌入式科技應(yīng)用,可謂一切場景。它的意義在于:不像傳統(tǒng)的物聯(lián)網(wǎng)操作系統(tǒng),一個微內(nèi)核的操作系統(tǒng)可以填補(bǔ)傳統(tǒng)實時操作系統(tǒng) RTOS 和相對大型的操作系統(tǒng)如 Linux 之間的空白,實現(xiàn)實時性能、成本、安全、啟動速度等等各方面之間的最佳平衡。
RT-Thread Smart 的架構(gòu)
RT-Thread Smart 通過 MMU 和系統(tǒng)調(diào)用將系統(tǒng)分割為內(nèi)核模式和用戶模式,并為每種模式區(qū)分了地址空間(一個 32 位系統(tǒng)可以提供 4G 地址空間)。
RT-Thread Smart 架構(gòu)
(RT-Thread, ??CC BY-SA 4.0??)
RT-Thread Smart 內(nèi)核包括平臺的基礎(chǔ)功能,并支持定制化。RT-Thread Smart 的用戶應(yīng)用環(huán)境使用 ??musl libc??? 來提供 ??POSIX??? 接口調(diào)用和 C 語言的運行時支持。它也繼承了原始的 RT-Thread 生態(tài)系統(tǒng),使用 ??SCons??? 或者其他編譯工具如 ??Autotools???、Makefile、??CMake?? 等等來支持開發(fā),以及 RT-Thread 開箱即用的在線軟件包(撰寫本文時超過 342 個)。你甚至可以將 Linux 應(yīng)用程序(如 wget/cURL、BusyBox、OpenSSL 和 Simple DirectMedia Layer)移植到你的平臺。
壓縮的 RT-Thread Smart 內(nèi)核僅 217 KB,搭配一個 127 KB 的根文件系統(tǒng)。大約 2 MB的存儲占用。包括了對文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧、多媒體的完整支持。RT-Thread 只需要 3 到 5 秒完成啟動,而在不運行其他功能組件時,RT-Thread Smart 需要的啟動及準(zhǔn)備時間不到 500ms。
通過其集成的 Persimmon 用戶界面(UI)組件,RT-Thread Smart 從上電到運行 UI 需要大約 1 秒。換句話說,這是一個非常輕巧快速的系統(tǒng)。當(dāng)然,“實時”不是指啟動,而是指系統(tǒng)隨著時間推進(jìn)而表現(xiàn)出的一致性。對于 RT-Thread ,實時性能需要優(yōu)先考慮,中斷時延小于 1μs,滿足大部分實時性要求嚴(yán)格的場景需求。
RT-Thread Smart 和 RT-Thread
你可能想知道 RT-Thread Smart 和 RT-Thread 之間的不同。簡單來說, RT-Thread Smart 是一個基于 RT-Thread RTOS 的操作系統(tǒng),但它整合了用戶態(tài)的處理過程。RT-Smart 的內(nèi)核部分本質(zhì)上是 RT-Thread RTOS,它在虛擬地址上運行,增加了進(jìn)程管理,使用進(jìn)程間通信機(jī)制(IPC)、虛擬內(nèi)存/地址空間管理、ELF 加載器等等,以上特性全部在 RT-Thread RTOS 內(nèi)實現(xiàn),當(dāng)這些組件被禁用時,RT-Smart 會回歸 RT-Thread RTOS。
以下是對比:
< 如顯示不全,請左右滑動 >
RT-Thread | RT-Thread Smart | |
支持芯片 | Cortex-M/R、RISC-V RV32IMAC(以及類似)、Cortex-A MPU | Cortex-A 等具有 MMU 的 MPU |
編譯 | 內(nèi)核和應(yīng)用都編譯到一個鏡像 | 內(nèi)核和應(yīng)用可以被分開編譯和運行 |
存儲 | 使用線性地址空間(即使有 MMU),使用物理地址的虛擬尋址 | 運行在內(nèi)核占用超過 1GB 的 32 位操作系統(tǒng),擁有完整 4G 地址空間的用戶態(tài)進(jìn)程彼此隔離,外設(shè)驅(qū)動程序必須通過虛擬地址訪問外設(shè) |
運行錯誤 | 當(dāng)一個應(yīng)用程序失敗時,整個系統(tǒng)就會崩潰 | 當(dāng)應(yīng)用程序失敗時,它不會影響內(nèi)核和其他進(jìn)程的執(zhí)行 |
運行模式 | 多線程模型 | 多進(jìn)程模型(進(jìn)程內(nèi)支持多線程,內(nèi)核線程由內(nèi)核支持) |
用戶模型 | 單用戶模型 | 單用戶模型 |
API | RT-Thread API、POSIX PSE52 | RT-Thread API(內(nèi)核態(tài)和用戶態(tài)),以及完整的 POSIX API |
實時性 | 搶占式硬實時系統(tǒng) | 搶占式硬實時系統(tǒng) |
資源使用 | 非常小 | 相對小 |
調(diào)試 | 通常需要模擬器調(diào)試 | 支持 GDB 調(diào)試,不需要模擬器 |
RT-Thread RTOS 非常緊湊,它的所有應(yīng)用和子系統(tǒng)都編譯到鏡像中,多線程應(yīng)用運行并分享相同的地址空間。
RT-Thread Smart 是獨立的。系統(tǒng)和應(yīng)用是分別編譯和運行的。應(yīng)用擁有完整且互相隔離的地址空間。它也繼承了 RT-Thread 優(yōu)秀的實時性,同時也具有 POSIX 環(huán)境的特性。
類似地,它們都與 RT-Thread API 兼容。RT-Thread RTOS 的應(yīng)用可以被平滑移植到 RT-Thread Smart。
嵌入式開源
RT-Thread Smart 是一個開源項目,項目地址:??GitHub??。你可以下載代碼和文檔,嘗試一下,并提交評論和反饋,將該項目傳播給更多開源倡導(dǎo)者。嵌入式系統(tǒng)屬于它們的用戶,有太多的嵌入式開發(fā)人員沒有找到太多可用的嵌入式系統(tǒng)。
如果你是開發(fā)人員,請幫助改進(jìn) RT-Thread Smart。隨著 RT-Thread 項目的不斷推進(jìn),我們希望創(chuàng)建物聯(lián)網(wǎng)和邊緣計算的令人激動的開源世界。