IoT 物聯網 RTOS 機器學習 聯網協定 OEM

嵌入式RTOS華麗變身 作業系統翻轉物聯網裝置開發

隨著物聯網崛起,場域中的裝置管理需求,比傳統的嵌入式軟體堆疊複雜許多,軟體環境勢必出現大幅改變;也因此,軟體複雜性的提升和物聯網對軟體影響性是本文的主題。接下來將會聚焦Mbed如何變化,從一個相對直接的微控制器開發平台,演進為功能多樣的物聯網作業系統,並圍繞在簡化物聯網裝置的開發與部署。

 

在物聯網誕生前,傳統嵌入式開發作業的主要方式,是以硬體開發的特製裸機韌體(例如C語言、Assembly);又或者使用Free RTOS/RTX即時作業系統(RTOS)的內核,以便取用一些作業系統服務,例如執行緒、互斥鎖。而開發軟體是為了增加功能性,不管是開放原始碼或是Keil MDK-Middleware等已有商業支援的現成軟體元件,將其改編後,微調到足以符合需要的特定專案需求,始得能符合成本效益 (圖1) 。

圖1 第五波運算

Mbed專案一開始只專注在單一焦點,為運行32位元控制器的物聯網應用,簡化軟體的開發作業。但在當時,32位元提供的額外算力,不被認為是絕對必要的;可是隨著嵌入式領域的演進,目前32位元架構已經主宰市場,也造就Mbed對傳統嵌入式開發作業採取不同的方式。而驅動Mbed持續進化來自一種信念,開發人員生態系需要一個導入簡化方式的平台作業系統。

過去十年來,這個方式已經通過物聯網開發人員與出貨過許多產品的OEM代工廠商的驗證。在Mbed網站註冊帳號的開發人員數量持續成長,目前用戶已超過50萬人。除此之外,許多來自Arduino的夥伴也以Mbed作業系統為基礎,用簡化的嵌入式開發作業方式,促成了32位元的運算 (圖2) 。

圖2 ML與IoT驅動了裝置複雜度的破壞式躍升

從RTOS演進到物聯網作業系統

首先要釐清,傳統的RTOS應用與專為物聯網需求打造的作業系統,兩者有何不同。畢竟在基本層級上,RTOS提供的基本作業系統服務如排程器、執行緒、記憶體管理等,物聯網作業系統也提供類似可用的服務。比方說,Mbed作業系統利用RTOS核心RTX來提供多數嵌入式軟體需要的作業系統服務。

針對物聯網,有必要在RTOS之上打造新的功能性,以便因應特定的需求。這些需求可分為五個主要領域:

.聯網—裝置連接雲端服務需要聯網。

.安全性—保護裝置的完整性,以及保護儲存在裝置內與在裝置進行轉換的資料。

.儲存—在需要通訊前把資料保持在裝置中,並儲存新的韌體映像檔。

.裝置管理—管理裝置與雲端互動所需的服務。

.機器學習—傳送到雲端之前執行裝置內處理,或對刺激快速做出回應。

過去幾年,Mbed團隊把開發心力專注在為平台增添這些基本功能,讓它成為真正的物聯網作業系統。


物聯網所提供聯網好處

物聯網包含多元的使用場景,各有不同的頻寬、功耗與可存取性的需求。這些多樣性促成各種聯網協定的開發、調適與採納,以供物聯網使用。其中許多是新的協定,且設計上一開始就要支援物聯網的需求,同時具備優化的特定功能以顧及低功耗需求,但常須在頻寬與延遲方面讓步。以下是物聯網裝置常用的聯網協定:低功耗藍牙、蜂巢式(2G、3G、窄頻物聯網、CAT-M1或5G網路)、乙太網路、LoRa WAN、近場無線通訊(NFC)、Thread、Wi-Fi、Wi-SUN、Zigbee。

聯網與相關的優化,基本上可以改變作業系統運行的方式。以窄頻物聯網的使用為例,Mbed團隊在調適作業系統如何從深度睡眠狀態甦醒時,選擇讓數據機喚醒它,而非自動定期醒來檢查數據機的狀態,因此可節省不少功耗。此外,也可使用RTOS達成類似的實例。

不過,物聯網作業系統在聯網方面,會比傳統的RTOS擁有更多好處,原因是物聯網作業系統提供的抽象化,讓應用項目移植到不同的協定,將更為直接。不過從聯網的觀點來看,目前沒有任何技術障礙可以阻止物聯網的應用中使用RTOS。

IoT面臨安全挑戰

一旦開始把物聯網裝置連上公用網路後,接下來保全這些裝置會變得相當必要,因為要確保裝置不會被惡意人士破解。關於這點實例的種類很多,舉例來說,Mirai惡意軟體的僵屍網路攻擊,或者政府支持者鎖定敵對國的關鍵基礎設施進行攻擊。

為此,開發團隊對於Mbed作業系統的安全性功能,已經投入相當多的資源。它一開始是增加熵的來源以支援真實亂數產生器(TRNG),為裝置內加密提供紮實的基礎。此外,Mbed提供一個TLS函式庫,確保在裝置與雲端間轉換的資料。最後,它加入對具備Arm TrustZone功能的最新一代Arm v8-M架構的支援性,並且促成物聯網產品遵循PSA Certified認證。PSA Certified認證提供一個標準框架,以存取並認證物聯網產品的安全性,也是Arm與關鍵合作夥伴共同支持、對整個產業的提案。

平台作業系統可以讓這些安全性功能中多數的複雜性抽象化,讓開發人員使用上更加簡易。安全性是一個常常需要專門開發技巧的領域,這讓物聯網所需的安全性服務具有相當的挑戰性,許多Mbed客戶歷來都缺乏這類內部的能力。使用RTOS達成安全的系統是可能的,但實作上或是把有關的功能逐一整合起來卻相當耗費心力,而隨著新漏洞與攻擊逐一被發現,維持安全性架構將產生額外的挑戰。

記憶體儲存為不可或缺元件

物聯網不可或缺的基本元件之一是儲存子系統,它可以讓裝置搭載必備的軟體,以便管理韌體更新所需的二進制影像檔的接收與儲存。這種儲存裝置可以是微處理器的內部記憶體,也可以是透過串列周邊介面(SPI)連結的外部快閃記憶體。

這套子系統必須提供相當層級的安全性,以確保韌體影像還在裝置內時不能被替換或修改,這通常是透過為影像本身加密來達成。儲存區域必須擁有隨時儲存兩張影像的容量:將被替換掉的原有軟體影像,以及全新的替換影像。倘若安裝失敗,則需要一個轉返機制,以便使用原始影像重新啟動裝置,進而確保作業持續進行。

在Mbed作業系統中,會提供多層可堆疊的儲存裝置,以提供用戶最符合他們需求的儲存裝置配置能力。以下是從低階到高階的支援介面列表:

.BlockDevice

存取原始區塊型儲存裝置,例如(Q)SPI快閃記憶體與SD卡、EEPROM或內部快閃記憶體。

.FileSystem

POSIX式樣的檔案系統。

.FileHandle

POSIX式樣的檔案。

.KVStore

鍵值資料庫。

再次重申,Mbed的物聯網作業系統不會施展軟體魔術,讓開發人員實作時,只能使用Mbed而不能使用RTOS。只是Mbed包含物聯網所需求的強健性,且經實證的實作,讓採用Mbed的開發人員進行應用程式開發時,能加快許多。

如何進行裝置管理

另一個物聯網所擁有的功能,是透過雲端服務進行裝置管理。這是部署裝置、遠端啟用、利用安全憑證進行配置,以及在整個部署期間管理裝置的功能。

物聯網可依據需求,更新軟體裝置,以及在裝置的生命週期結束後加以除役。而這也是常常被忽視的關鍵功能,原因是傳統嵌入式裝置並不需要這些功能,這是傳統RTOS與物聯網作業系統差別最為明顯的地方。

由雲端服務進行管理,同時也為嵌入式領域導入新需求,如LwM2M與MQTT等協定以及安全性憑證的管理,最關鍵的是,它基本上改變了嵌入式軟體開發的生命週期。

而在過去,嵌入式裝置的部署相對單純,團隊會編寫裝置需要的軟體,透過測試與驗證確保它能像預期般地運作,然後在硬體上安裝軟體並進行部署。一旦軟體在生產線上完成安裝,軟體團隊的責任就此結束,因為裝置部署後會一直使用到除役,除非是因為別的原因終止。不過,物聯網為軟體團隊帶來新的責任,原因是無論裝置現役部署的期間有多長,他們必須為裝置開發、測試、驗證與部署軟體更新,最起碼也必須確保能夠及時修補安全性漏洞。這種生命週期可能遠遠超過十年,現在也看到客戶在需求規格中明訂長期的支援性。

在傳統RTOS方式中,開發人員會從多個來源引進軟體元件與函式庫,針對特定使用場景進行整合與優化,然後部署軟體,以這種方式進行長期支援需求變得非常有挑戰性。舉例來說,開發人員使用具備開源BLE堆疊的RTOS核心來遞送透過閘道器連接到雲端的裝置,這種情況五年下來,管理軟體複刻的維護成本會相當可觀,甚至可能影響新產品的開發。

但倘若解決方案涉及多種產品,它很快會形成一種情況,讓維護團隊不是消耗掉所有可用的軟體資源,就是用掉多數的軟體資源。在行動裝置領域中,常見手機廠商疲於奔命,為現有的裝置更新到新版的安卓作業系統上。

除此之外,整合嵌入式軟體與雲端服務會結合兩個軟體開發的領域,嵌入式開發人員以及雲端開發人員,在此之前,這兩種學科幾乎沒有什麼交集。這個全新的互動關係需要改變開發流程,並對成功開發與部署物聯網軟體所需的工具,具有重要的意涵。

對於Mbed而言,2020年是重要的一年, 因為Arm為開發人員增加了可連接到任何雲端的更多功能,並提供更多的選擇與彈性,把Mbed作業系統轉型成一個雲端中立的作業系統。Mbed特別為多個公有雲端服務擴增支援性,包括提供給亞馬遜雲端運算服務(AWS)、Google Cloud IoT與Microsoft Azure IoT的整合服務。

Mbed Studio的整合式軟體環境採線上進行,並且從頭開始架構以迎合物聯網開發人員的需求。它橫跨嵌入式軟體開發人員的各種需要,例如函式庫管理、拖放式程式設計及除錯介面。它同時也服務網路/雲端開發人員的需求,並整合REST API 、韌體更新封裝以及開發人員憑證。一切都有條不紊地封裝在一個極度敏捷且簡單易用的整合開發環境(IDE)中。

傳統上矽晶圓廠商會提供軟體開發套件(SDK),讓開發人員得以在他們的微處理器上打造嵌入式裝置。不過,從與開發人員互動過程中瞭解到的是,使用標準的RTOS SDK方式來支援物聯網專用的工作流程,是極具挑戰性的。

物聯網下機器學習運作

並非所有場域中感測器取得的資料都會傳送到雲端,主要分為三個類別:延遲、傳輸成本、隱私。

首先,當需要快速反應時,卻引發延遲。例如,倘若工業機器已經搭載安全機制,但此時由雲端聯網接收此類可以中斷具有潛在有危險性動作的訊號,此法就相當地不智,原因是快速反應對作業人員的安全極為關鍵。

第二,從頻寬與能源的角度,計算把所有資料都傳送到雲端的成本。使用類似的工業機器時,在傳送多個高頻加速計的資料測量結果,可能輕易的就讓每秒產出好幾個百萬位元組(Mb)資料,如此會耗盡電池的電力,還會因為頻寬需求增加整體的成本。

最後,隱私目前對於許多物聯網裝置是個極為嚴格的要求。以語音啟動助理為例,使用者不會想把所有麥克風擷取到的東西都傳到雲端,只會將它局限在用戶想要傳送的部份。邊緣的訊號處理雖然不是新概念,但裝置具備許多運行機器學習演算法的能力,促成了以前根本不可能出現的應用項目。而就目前利用相對小型且低功耗的Cortex-M4裝置,甚至可以執行相對複雜的任務,例如辨識簡單的語音指令或動作。

在這種背景下,物聯網作業系統扮演的角色是提供基本的功能性,以簡化像TensorFlow或TVM等機器學習框架的部署。把機器學習框架需要的硬體特定功能性抽象化,讓開發人員可以挑選偏好的框架,也不必過於擔心硬體支援性,以及裝置上的整合。

Mbed系統攜手物聯網

2009年,從單一開發版開始的Mbed作業系統,現在已成為適用於物聯網開發作業的完整生態系,並具備各種免費的開發工具、數千個程式碼實例,同時支援超過150個微控制器開發板。Mbed因為客戶與開發人員社群的貢獻與參與,將持續成長與繁榮。

物聯網所賦予關鍵價值

在與開發人員、合作夥伴及客戶的接觸過程中,看到物聯網對嵌入式裝置的發展帶來的挑戰。許多人對於物聯網專案在概念驗證階段就宣告失敗感到挫折,複雜性可能就是原因之一。技術純熟的嵌入式開發人員,可以使用RTOS與手工調修的軟體函式庫與元件自行應對這些複雜性,但因此所需要的開發、驗證與裝置完成部署後的持續維護時間,將使成本增加並影響產品與服務的成功機會。

物聯網若要無縫擴充,並在所有被期待的方面達到真正的轉型效果,就必須簡化裝置端的軟體複雜性,且提供聯網協定、安全性函式庫與服務,以及儲存裝置。高度整合和經過實證的物聯網專用作業系統,證實可以有效解決挑戰。

最後,物聯網價值的關鍵之處,是以無限的擴充規模與雲端管理服務緊密整合。有效的整合讓裝置可以和物聯網核心的商業應用,進行連接並安全地溝通。以最順暢的方式促進以上各點的解決方案,可以釋放開發人員的能力,專注從物聯網擷取最大的商業價值。

(本文作者Stefano Cadario為Arm軟體產品總監,Andy Powers為Arm軟體技術資深經理)

 

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!