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