物聯網作業系統架構之RTOS

2022-01-29 從零開始學架構

物聯網作業系統主要是指運行在物聯網設備上的嵌入式作業系統,包括RTOS(Real-time Operating System),也可以包括Android,Linux。本文主要講RTOS相關的系統架構。

越來越多的設備具備接入網絡的能力,使得物聯網的發展在迅速加快。阻礙物聯網發展的幾個因素還包括成本,設備軟硬體差異大和協議不統一。隨著設備/服務提供商和消費者都越來越認可智能化提供的價值,產業規模在迅速擴大,推動了技術發展,規模效應也進一步降低了成本。硬體上晶片廠商通過SoC的方式集成更多周邊器件,軟體上通過平臺對設備差異進行屏蔽,結成標準聯盟等都促進了設備的互聯互通。

另外,算力在邊緣端設備的增強,讓過去廣泛使用單片機的產品開始使用微處理器,微處理器上運行作業系統,讓設備可以集成複雜的功能,網絡協議和算法。阿里巴巴,騰訊都相繼推出了自己的物聯網作業系統,作業系統是智能化改造的平臺和基礎。

衡量物聯網嵌入式作業系統的重要指標包括:

輕量級:編譯出來的固件(Firmware)小,小的固件意味著存儲所需Flash空間小,做OTA升級時需要傳輸的數據少(更快的升級速度,良好的用戶體驗和無線環境下的更低失敗率)。通常這些作業系統的內核會比較簡單,且通過配置和編譯選項(makefile等)擁有可裁剪的內核/子系統,

資源消耗少:包括CPU,Flash,內存等資源,通常物聯網設備的CPU資源因為功耗和成本考慮,在選型時不會預留很大的buffer。Flash和內存大小一般在幾Mbytes。很多系統當內核和平臺必需的模塊運行起來後,可供應用使用的內存不到幾百KBytes。

低功耗:對於無外接供電使用電池的設備來說低功耗尤其關鍵。一些物聯網設備一塊電池使用時間長達數年。CPU往往是功耗的最大用戶,通常通過處理器睡眠或在不同應用場景調節CPU的頻率來降低功耗。

新接入設備的速度:易於移植和接入系統是構建生態的重要基礎,提供SDK將平臺的差異化部分剝離出來,提供通用的組件,標準的接口和協議,減少重複開發。

良好的設備抽象:屏蔽底層設備的差異,將設備的能力抽象成服務開放。

安全:提供加密算法庫等組件。

常用的RTOS包括FreeRTOS,AliOS things,TencentOS Tiny,LiteOS,ucOS等。一個RTOS作業系統一般包含內核,BSP,驅動,協議,應用組件,文件系統等。以TencentOS Tiny物聯網作業系統為例:


CPU 庫 :TencentOS tiny 支持的 CPU IP 核架構,當前主要支持 ARM Cortex M0/3/4/7。

驅動管理層 :包括板級支持包(BSP,主要由 MCU 晶片廠家開發與維護)、硬體抽象(HAL,主要由 TencentOS tiny 提供,方便不同晶片的適配與移植)、設備驅動(Drivers,例如 Wi-Fi、GPRS、LORA 等模塊的驅動程序)。

內核 :TencentOS tiny 實時內核包括任務管理、實時調度、時間管理、中斷管理、內存管理、異常處理、軟體定時器、鍊表、消息隊列、信號量、互斥鎖、事件標誌等模塊。

IoT 協議棧:TencentOS tiny 提供 lwip、AT Adapter、SAL 層,支持不同的網絡硬體,例如乙太網、串口 Wi-Fi、GPRS、NB-IoT、4G等通信模塊。TCP/IP 網絡協議棧上提供常用的物聯網協議棧,例如 COAP、MQTT,支撐終端業務快速接入騰訊雲。

安全框架:TencentOS tiny 為了確保物聯網終端數據傳輸安全以及設備認證安全,提供了完整的安全解決方案。安全框架提供的 DTLS 和 TLS 安全協議,加固了 COAP 及 MQTT 的傳輸層,可確保物聯網終端在對接騰訊雲時實現安全認證和數據加密;另外針對低資源的終端硬體,安全框架還提供與騰訊雲 IoT Hub 配套的密鑰認證方案,確保資源受限設備也能在一定程度上實現設備安全認證。

組件框架:TencentOS tiny 提供文件系統、KV 存儲、自組網、JS 引擎、低功耗框架、設備框架、OTA、調試工具鏈等一系列組件,供用戶根據業務場景選用。

開放 API(規劃開發中):TencentOS tiny 將在協議中間件和框架層上提供開放 API 函數,方便用戶調用中間件功能,使用戶無需過多關心中間件具體實現,快速對接騰訊雲,實現終端業務上雲的需求,期望最大程度減少終端物聯網產品開發周期,節省開發成本。

示例應用 :TencentOS tiny 提供的示例代碼,模塊測試代碼等,方便用戶參考使用。

再來看下FreeRTOS的架構,這裡引用了一個Amazon FreeRTOS:


最後,以AliOS Things為例:

AliOS Things是阿里巴巴推出的面向IT領域的輕量級物聯網嵌入式作業系統,適用於多種設備類型,如物聯網設備、手機、平板電腦、電視、車載系統等。主要特點如下:

應用與內核隔離:分別運行在不同的權限模式,應用不能直接訪問內核空間和其他應用空間,單個應用崩潰不會導致系統崩潰,提升了穩定性;應用通過系統調用獲取內核服務,通過IPC與其他應用通信;內核可獨立編譯、連結和更新;可同時加載運行多個應用,並動態加載與卸載。

組件可配置和可裁剪:模塊被組織成組件,每個組件有自己的.mk文件,用於描述它和其它組件間的依賴關係,方便應用開發者按需選用,方便裁剪。

Rhino內核:AliOS Things的實時作業系統內核叫做Rhino,它的核心模塊包括緩衝隊列,環形緩衝區、定時器、信號量、互斥量、先入先出隊列、事件等。這一塊的實現和其它作業系統差別不大。

支持多種協議:LwIP(IPv4&IPv6),藍牙BLE,LoRaWAN,HTTP,HTTPS,CoAP,LwM2M,MQTT等。協議的支持對設備接入網絡至關重要。

調度策略:基於優先級的搶佔式調度和round-robin循環調度策略,通過tick中斷觸發檢查任務隊列中的優先級,選擇下一個運行的任務。

網絡安全:支持包括TLS,TFS, TEE在內的安全組件。

低功耗模式:支持CPU的tickless idle 模式。

OTA升級:支持差分升級,斷點續傳,HTTPS下載固件。

文件存儲:支持KV健值對存儲,RAMFS,VFS。

Log機制:Log可以輸出到文件,UDP,或者雲端。

以下是AliOS Things的系統架構圖:

AliOS Things 系統架構

其設計原則遵循了以下幾個要求:

模塊自包含(Self-Contained):減少模塊對外部模塊的依賴,實現模塊間的解耦

運行時插件化(Pluggable):根據參數定義動態檢查接口依賴和調用

軟體層次設計(Layered Design):系統整體被劃分成四個層次,自頂而下分別為應用/算法層(AIL)、應用開發層(ADL)、硬體管理層(HML)、硬體適配層(VSL),禁止下層模塊反向依賴上層模塊,確保軟體系統能按層次演進

從底部到頂部包括:

板級支持包(BSP):主要由SoC供應商開發和維護

硬體抽象層(HAL):比如WiFi和UART

內核:包括Rhino實時作業系統內核、Yloop, VFS, KV 存儲

協議棧:包括TCP/IP協議棧(LwIP),uMesh網絡協議棧

安全:安全傳輸層協議(TLS),可信服務框架(TFS)、可信運行環境(TEE)

AOS API:提供可供應用軟體和中間件使用的API

中間件:包括常見的物聯網組件和阿里巴巴增值服務中間件

示例應用:阿里自主開發的示例代碼,以及通過了完備測試的應用程式(比如Alinkapp)

目錄結構:

目錄
描述
board
評估板(如STM32L496G-Discovery)build編譯框架,模塊可以根據需要編譯進最後的產品代碼,起到了系統可定製化的目的device連接MCU/SoC的外設,比如支持使用AT命令的WiFi系列模組app代碼示例,通過了完備測試的應用程式(比如Alink)frameworkIoT 通用組件include系統頭文件kernel包括Rhino和協議棧platform晶片架構支持的相關文件security包括TLS,TFS, TEE在內的安全組件tools命令行界面(CLI)和用於建立遠程設備中心的testbed工具utilityIoT通用軟體庫,比如 cJSONtestUT測試用例


接下來介紹AliOS幾個重要特性的實現:

低功耗Tickless Idle模式:對於物聯網設備來說,硬體功率至關重要,因為電量是有限的。如果系統消耗電量過快,它將很快沒電。系統的主要供電是CPU,當CPU睡眠的時候,系統通常是處於低功耗狀態的,Rhino提供了CPU的tickless idle 模式來幫助系統節約電能和延長使用時間。

通常情況下,當CPU沒有執行操作時,它將執行一個處理器指令(對於ARM來說的WFI,對於IA32位處理器來說的HLT),進入低功耗狀態。此時,CPU寄存器的信息被保存,系統的tick clock interrupts會在每個tick時刻喚醒CPU。

為了比正常模式節省更多的電量,Rhino為CPU提供了tickless idle模式。當作業系統檢測到有一個固定時間(多個ticks或更長時間)的空閒後,它將進入tickless idle模式。系統做好中斷配置,並把CPU置於C1模式,那時system tick clock中斷不再被觸發,system tick的計數也將停止。CPU會保持低耗電狀態直到tickless idle時間結束。然後,當system tick timer interrupt再次被觸發時,喚醒CPU從C1模式回到C0模式,為ticks計算好補償時間並繼續計數。

任務調度:Rhino提供了兩個調度策略,基於優先級的搶佔式調度和round-robin循環調度策略。對於兩個調度策略而言,具有最高優先級的任務都是被優先處理的。這也是絕大部分RTOS系統採用的調度策略。

基於優先級的搶佔式調度器會在遇到比當前運行的任務具有更高優先級任務時搶佔CPU。這意味著,如果出現一個任務比當前任務具有更高優先級,內核將立即保存當前任務的context,並切換到高優先級的任務的context。因此,內核保證CPU總是優先處理優先級最高的任務。

round-robin調度器通過時間片來為各任務分配CPU資源。在一組具有相同優先級的任務中,每個任務都會被安排運行一個固定的時間長度,或者說時間片,之後CPU將處理下一個任務。所以,在一個任務阻塞之前,其他任務不能搶奪到處理器資源。當時間片失效時,系統將運行該優先級就緒隊列中的最後一個任務。

調試:Rhino 可以支持stack溢出、內存洩漏、內存損壞的檢測,作業系統還提供了對stack的backtrace功能。

鍵值對存儲(KV):KV組件是AliOS Things中一個以Key-Value方式進行持久化存儲的輕量級組件,主要為基於Nor Flash的小型MCU設備提供通用的Key-Value持久化存儲接口。它的優勢和特徵包括:

更少的擦寫次數來延長flash的使用壽命

電源安全,沒有中間狀態將存在

方便使用,關鍵碼值支持二進位格式數據

最低支持Flash的大小是8KB

Log 機制:各模塊通過調用ulog()函數將log發送到queue中,log task從queue中接收log,並決定是列印到文件中,udp還是傳到雲端。通過使用mutex來鎖log的生成,避免多任務的競爭,因此要避免在中斷中使用該接口。 

空中固件升級(FOTA):FOTA(Fireware Over-The-Air) 可以對設備進行遠程升級。特別提下,嵌入式系統升級時往往有3種方式,一種是出廠的固件放在Flash A區,程序固定從B區啟動,每次下載的固件都存放到B區,當B區的固件損壞無法啟動的時候,系統使用A區的固件啟動。第二種是A區和B區交替使用(桌球升級),如果固件下載到B區,後續程序從B區啟動,下次升級固件存儲到A區,程序從A區啟動,這個好處是可以保證總有可用的固件,避免升級失敗變磚,且可以回滾到之前的固件版本。第三種是固定從A區啟動,下載的固件覆蓋原A區的固件,這種升級存在失敗系統變磚的風險。使用第一和第二種方式都可以,我不推薦第三種方式。AliOS Things支持第二種和第三種方式。

特徵:

AliOS Things Flash分區

雲端連接協議:支持通過Alink連接阿里雲平臺,用於智慧生活。支持標準的MQTT協議。支持CoAP(基於UDP的輕量級協議),和CoAP FOTA結合為NB-IoT設備建立一個只有UDP的系統。    

AT 解析器:AT解析器提供了處理AT命令連接通信模塊的框架。AT解析器可處理串行流解析;回調OOB可以處理模塊的特殊AT命令。與SAL一起使用,應用程式甚至可以在AT模塊中使用BSD socket。

每周日早上10點15分到11點,架構設計分享課。可添加微信licheng_domi加入架構師學習群,進入騰訊會議。

相關焦點

  • 你玩過物聯網作業系統嗎?
    一些項目注重物聯網安全,許多非Linux操作項目專注於實時確定性(real-time determinism),這有時是工業物聯網的一個要求。我通常遠離這類Linux發行版:被列入「輕量級」這一類,但是仍然主要針對桌面使用或可攜式U盤實施, 而不是針對無外設設備。不過,像LXLE或Linux Lite這些輕量級Linux發行版可能是適合物聯網的選擇。
  • 物聯網作業系統的江湖惡戰
    於是,在下一個時代,物聯網時代,物聯網作業系統就成為巨頭廠商分外關注、積極部署的一步棋。2015年5月20日,在2015華為網絡大會上,華為發布輕量級物聯網作業系統LiteOS。對於華為來說,研發作業系統已經不是什麼秘密,據雷鋒網了解,早在2012年,華為就開始做終端設備OS,也是現在LiteOS的雛形。
  • 多如牛毛的物聯網作業系統
    ARM、谷歌、微軟、華為、阿里、海爾等國內外著名的 IT 企業紛紛推出物聯網作業系統,整個產業呈現出群雄逐鹿的壯觀景象。傳統的嵌入式系統公司也不甘示弱,紛紛通過開源和併購策略推出面向物聯網軟體平臺,比如 Intel、風河、芯科和 Micrium。在一輪新的產業浪潮中,國內創業公司也走在風口浪尖上,他們紛紛推出自己的物聯網作業系統,比如慶科、Ruff 和 RT-thread。
  • 《NB-IoT物聯網系統架構》
    為了促使大家重新認識物聯網,在理解NB-IoT優勢的基礎之上,從全局的角度掌握複雜的物聯網系統架構,體會「雲、管、邊、端」「的相互支撐和融合,特編寫《NB-IoT物聯網系統架構》書籍。《NB-IoT物聯網系統架構》書籍目錄第1章    物聯網系統架構    1.1    物聯網概述    1.2    物聯網系統架構    1.3    物聯網產業鏈    1.4    物聯網接入技術種類    1.5    廣域網通信技術    1.6    短距離無線通信技術
  • 主要物聯網作業系統簡介
    隨著物聯網浪潮的到來,物聯網作業系統呈現出百花齊放的局面。然而,無論是物聯網作業系統還是其他作業系統,一個作業系統的普及需要很長時間的市場引導。企業要想將物聯網作業系統普及開來,首先要確定好物聯網作業系統的邊界,其次還要堅持。創造生態需要明確的方向、以及長時間的努力和堅持。對於物聯網應用開發者而言,選擇合適的物聯網作業系統也是一個艱難的選擇。
  • 物聯網作業系統有什麼特點?
    物聯網作業系統與傳統的個人計算機作業系統和智慧型手機類作業系統有所不同。
  • 物聯網作業系統的新進展
    引言  物聯網作業系統(以下簡稱物聯網OS)最近很熱鬧,2015年5月20日華為發布開拓物聯網領域的「敏捷網絡3.0」戰略,包括物聯網
  • MiCO物聯網作業系統漫談
    近些年來物聯網發展非常迅速,上海慶科在物聯網領域積累了多年的經驗,從無線模塊到作業系統、從開發平臺到院校合作,到創客項目,在不斷地發展中,逐步形成了自有的生態系統。物聯網改變了人物交互的方式,也改變了一些相關的商業模式,我們可以從中想到或做點什麼呢?
  • 魏永明:五談作業系統:為物聯網設計
    》一文評論的回覆在《四談作業系統之國產七宗罪》一文中,我批判了國產桌面作業系統圈子的一些問題。智能物聯網設備(smart IoT device),指具有多重連接能力,可在 WLAN 環境以及網際網路環境下和人、其他設備或者計算機系統(如雲端)交互的物聯網設備。有時,我們也將這類設備稱為「物聯網網關」設備。固件(firmware)。特指運行於設備端的軟體,包括單機作業系統以及應用或服務在內。客戶端(client)。
  • Zephyr - 物聯網作業系統
    物聯網作業系統景觀如今,嵌入式系統並不缺乏可供選擇的作業系統;維基百科上大約有100個。Eclipse調查仍然顯示Linux領先,Windows、FreeRTOS和Mbed OS也被廣泛使用。對於擁有必要資源的設備,成熟的作業系統,如Linux(Android)或Windows,在該領域佔據主導地位,但對於受限制的設備,使用的系統範圍很廣。《Eclipse物聯網開發者調查2019》顯示,物聯網設備固件更多地使用了實際作業系統,而不是裸機編程或構建在最小內核之上。
  • 物聯網作業系統:形式驗證與安全認證
    主要討論(1)物聯網作業系統(OS)為何要做形式驗證和安全認證,(2)國外關鍵領域物聯網OS形式驗證和安全認證的現狀,(3)物聯網OS形式驗證的技術挑戰和我們的總體技術框架,(4)我們取得的系列成果及國內外影響。希望為我國自主可控、安全可靠的物聯網作業系統發展提供一種思路。 目 錄1.
  • 物聯網架構的四個階段
    物聯網還有很多其他用途。但總的來說,它是一種有效的資源,可以提高生產力,最大限度地減少人力,並以最大的回報降低生產成本。物聯網架構的4個階段如果您想在企業或項目中利用它,則您的基礎設施必須能夠支持物聯網系統。為此,您應該投資於一個四階段的物聯網架構。第一階段:傳感器和執行器第一層由傳感器和執行器組成。
  • 物聯網作業系統,一條九死一生的「不歸路」?【物女心經】
    作者:物女王(彭昭)物聯網智庫 整理髮布轉載請註明來源和出處導  讀
  • AliOS Things物聯網作業系統與AliOS Studio軟體開發環境
    縱觀五花八門的物聯網作業系統,我們可以看到它們可以分為三大主要流派。第一流派是由傳統的嵌入式實時作業系統發展而來,如FreeRTOS、RT-Thread、Huawei LiteOS等,它們在物聯網終端上已經獲得廣泛支持,硬體推廣成本低,但是其軟體開發專業度極高,軟硬體開發難以隔離。
  • 物聯網作業系統,一條九死一生的「不歸路」?
    將物聯網作為核心賽道的企業往往會布局「雲、邊、端」多款IoT作業系統。比如華為的LiteOS、鴻蒙OS和華為雲,阿里的AliOS Things、Link Edge和阿里雲,谷歌的Android Things、Fuchsia和谷歌雲。即便是同一種大類的物聯網設備,往往也對應著多種應用場景。
  • 騰訊物聯網作業系統 TencentOS tiny 架構解析與實踐
    本期沙龍特邀請騰訊雲技術專家對騰訊雲全棧物聯網產品進行了深度揭秘,針對騰訊雲IoT全棧產品中的IoT平臺、邊緣計算、物聯網安全、物聯網作業系統、AIoT這五個產品進行全面的技術剖析和滿滿乾貨分享。下面是汪禮超老師關於騰訊物聯網作業系統TencentOS tiny的相關技術及應用的分享。
  • 2021年,物聯網作業系統將在哪些領域發力?
    物聯網作業系統展望何小慶嵌入式系統聯誼會秘書長物聯網作業系統(IoT OS),起源於傳感網OS-TinyOS和Contiki項目,它們對今天的IoT OS產生了深遠的影響。最早的IoT OS始於2014年,標誌性產品是ARM Mbed OS。
  • 物聯網架構和技術協議
    這些未來應用將需要能夠在後臺進行大量數據傳輸和處理的物聯網架構平臺。 這種物聯網平臺/架構由幾個內部連接層組成(參見圖 1-1)。我們來詳細了解一下物聯網平臺各連接層中的各個組件: 傳感器和執行器:物聯網傳感器和執行器用於測量溫度、聲音、溼度和振動等。在典型的物聯網智能家居中,恆溫器等智能設備都具有嵌入式通信單元,可連接至家庭網絡。
  • 關於實時作業系統(RTOS) 的選擇
    如RTEMS這種作業系統就不太好學,資料少,本身的複雜度也高;如 FreeRTOS,小巧,研究的人也多,本身代碼也不複雜,學習曲線不陡峭,很容易爬上去。可靠性是靠時間沉澱的。市場上不乏一些後起之秀,如rt-thread,相比 rtems 這種鼻祖類的 rtos,還稍顯稚嫩。這並不意味這我們什麼都選擇 rtems, 那 rt-thread 怎麼發展?
  • 力挺華為物聯網作業系統LiteOS
    想必大家都了解了中美之戰對中國以及華為的影響