物聯網(IoT)是一個跨越很多行業(yè)的技術發(fā)展趨勢,包括可穿戴設備、智能電表、智能家電及汽車等設備。隨著大家對聯網設備及其提供信息的依賴不斷增加,服務時間、可靠性等因素對其成功和整個物聯網生態(tài)系統(tǒng)起著關鍵作用。智能家電及車載信息娛樂音響主機代表了一大類同時需要互聯性和高度可靠執(zhí)行性的物聯網系統(tǒng)。
智能家電如洗衣機有一個豐富的用戶界面(UI),能夠處理任何數量的指令。該設備可以通過智能手機進行遙控,連接輸電網絡,定點在電費比較便宜的非高峰時段洗滌。當然洗衣機必須能夠很好、很可靠地執(zhí)行一項功能 -- 洗衣功能。工業(yè)系統(tǒng)有更加嚴格的實時控制要求,保證實時控制和其他重要操作能夠獨立于更高級別的功能運行,這點很重要。
汽車行業(yè)也在投資聯網汽車,如收集遠程信息處理數據以及通過可更新和可下載的應用程序(Apps)提供車載信息娛樂系統(tǒng)(IVI)來滿足消費者的期望。汽車制造商面臨大量的審查以確保車載信息娛樂系統(tǒng)是安全的。應用程序下載不能干擾車載信息娛樂系統(tǒng)更關鍵的功能,如后置攝像頭的視頻。在這種情況下,像 Android 操作系統(tǒng)可能是提供應用程序的可行性選擇,而車載信息娛樂系統(tǒng)的核心系統(tǒng)可基于 Linux 平臺。類似的通用操作系統(tǒng)工業(yè)環(huán)境還可能包括一個實時操作系統(tǒng)(RTOS)實行關鍵的實時控制功能,而 Linux,即通用操作系統(tǒng)(OS),可提供用戶界面和監(jiān)督數據通信。
在實時操作系統(tǒng)下通過使用 MMU/MPU 實現代碼模塊獨立
一個實時操作系統(tǒng)與一個獨立的模式,如 Mentor Graphics 的 Nucleus 實時操作系統(tǒng),能夠利用可在諸多系統(tǒng)芯片設備上應用的內存管理單元(MMU)來獨立和保護代碼模塊。圖1說明了實時控制任務如何可以共享內核的受保護存儲區(qū),而其他軟件任務分為各自的受保護存儲區(qū)?;ヂ摴δ芎瓦h程更新共享相同的區(qū)域,而用戶界面和其他應用程序任務被分配到另一個獨立區(qū)域。獨立應用子系統(tǒng)的方法可防止互聯功能或用戶界面應用子系統(tǒng)破壞內核或者實時控制操作。
用一個進程模式分離連接性和遠程更新的控制。
使用實時操作系統(tǒng)優(yōu)于通用操作系統(tǒng)的一個好處就是其內核的實時特性。實時操作系統(tǒng)提供嚴格的實時調度,保證優(yōu)先級任務的運行。進程模式實時操作系統(tǒng)能保證確定的實時調度,并增加了存儲保護。存儲保護并不改變任務的優(yōu)先級和系統(tǒng)反應。圖2顯示了應用程序(任務7)和遠程更新任務在分開的獨立存儲區(qū)域能夠在同一優(yōu)先級執(zhí)行而控制和連接任務可在更高的優(yōu)先級執(zhí)行。這在很大程度上有別于通用操作系統(tǒng)中程序的執(zhí)行方式。在受保護的實時操作系統(tǒng)環(huán)境下,開發(fā)人員可以自由地調整任務的優(yōu)先級,而無需將其合并到一個共同的存儲區(qū)域。
基于實時操作系統(tǒng)的進程模式還允許進程模塊(一個共同的獨立存儲區(qū)域內任務和庫功能的集合)在系統(tǒng)運行時不斷加載和卸載。這除了能明顯更新系統(tǒng)外,還可以允許開發(fā)人員不斷地重新配置設備,使其具備不同的操作模式,切換不同的任務分離和優(yōu)先級配置。
通過類型1的虛擬機 Hypervisor 實現多 OS 系統(tǒng)的應用
在今天嵌入式設備中具備的多核處理器可提供更強大的處理能力和連接選項。這些設備使多個操作系統(tǒng)的整合成為引進互聯性的可行安全方法,同時確保更重要的功能的執(zhí)行。即使是在非常注重安全的行業(yè),如汽車業(yè),消費者現在也期待車載信息娛樂系統(tǒng)可提供智能手機和平板電腦所具備的應用程序。
在物聯網和車聯網出現以前, 安全性和可靠性是通過物理分離實現的,通過同一或獨立的面板上多個單獨的處理器以確保設計的穩(wěn)健性。有了現在的整合的嵌入式系統(tǒng),引入連接性的一個推薦的方法是使用多個操作系統(tǒng),由類型1 Hypervisor 實行分離,實際上分離和虛擬化設備資源,確保必要的汽車功能優(yōu)先于連接應用程序的功能。
圖3說明了一個 Hypervisor,如 Mentor Graphics 的 Hypervisor,如何被用于汽車信息娛樂系統(tǒng),該系統(tǒng)的連接應用程序功能是 Android 的而其他車載信息娛樂系統(tǒng)則是基于 Linux 的。
一個 Hypervisor 不僅僅是如圖3所示的簡單分離,它還提供了一種機制限制周邊設備進入特定的應用程序域。就車載信息娛樂系統(tǒng)而言,我們可能想要限制對車載 CAN 總線的使用,只允許車載信息娛樂系統(tǒng)接入CAN數據,而聯網的 Android 應用程序接入數據只能通過進程間通信(IPC)和基于 Linux 車載信息娛樂系統(tǒng)應用程序。同時,我們想要 Linux 和 Android 都可以使用 本地的記憶卡查看媒體文件。圖4說明了一個 Hypervisor 如何允許我們直接映射及準虛擬化外圍設備。這使得開發(fā)者能夠限制訪問CAN總線及實現如記憶卡等其它資源的共享。
用一個Hypervisor來分離和共享外圍設備。
在真實場景中測試可靠性
到現在為止我們已經說明了設計物聯網系統(tǒng)的兩種可能的方法,實時操作系統(tǒng)的使用和類型1 Hypervisor。當然多種不同的變更和理想的方法還要取決于具體的設備。然而所有連接系統(tǒng)都會受益于某種程度的測試以確保其實地操作的正確性。對連接設備的自動化安全峰值測試和壓力測試就是一個例子,說明協議棧或過程控制功能的失敗是可以檢測的。此外,設備的功能性健康是可以在模擬攻擊中確定的。應該執(zhí)行的其他測試包括發(fā)送無效或分散的數據包,執(zhí)行測試框架,探測已知的軟件棧的漏洞。執(zhí)行這些測試可以增加連接設備在實際應用中的魯棒性。
可更新性設計
移動設備的用戶熟知需經常性升級設備,修補漏洞,添加安全更新或增加設備性能 -- 所有這些都毫不費力地通過“空中下載技術”來完成?;趯崟r操作系統(tǒng)的進程模式和使用類型1 Hypervisor 都能促進嵌入式系統(tǒng)的設計,該系統(tǒng)可以一種安全的方式通過空中下載技術實現更新。通過分離可不斷加載和卸載的應用子系統(tǒng),這兩種方法可隨著時間的推移更新特定子系統(tǒng),修復漏洞或在開發(fā)和實際應用時解決可靠性問題。
結論
物聯網設備的廣度和相關功能經常需要開發(fā)人員集成來自多種途徑的代碼,包括國內的,商業(yè)的和開源的。所有這些都會增加對物聯網(IoT)聯網設備的靈敏度和可靠性的負面沖擊。使用包含進程模式的實時操作系統(tǒng)來分離應用子系統(tǒng)和使用類型1 Hypervisor 來整合多個操作系統(tǒng)對于在應用程序和系統(tǒng)中引進互聯性是有效途徑, 因后者在執(zhí)行過程中需要較高水平或可靠性。