實(shí)現(xiàn)靈活的軟件定義汽車架構(gòu)
本文作者是 Kernkonzept 公司的首席技術(shù)官 Adam Lackorzynski 博士,他將帶領(lǐng)我們了解基于 Armv8-R 架構(gòu)的 L4Re Micro Hypervisor,探討其中的虛擬化功能是如何幫助構(gòu)建靈活且面向未來的汽車系統(tǒng),以實(shí)現(xiàn)軟件定義汽車 (SDV)。
本文引用地址:http://2s4d.com/article/202409/462646.htmECU 整合的必要性
隨著各種用戶功能的需求不斷增加,以及實(shí)現(xiàn)這些功能的更強(qiáng)大硬件的出現(xiàn),汽車的電子電氣 (E/E) 架構(gòu)正在持續(xù)演進(jìn)。過去,經(jīng)典的汽車 E/E 架構(gòu)將功能分配到多達(dá) 100 個(gè)電子控制單元 (ECU) 中。然而,增加汽車 ECU 數(shù)量正在變得更為困難。所有 ECU 都需要占據(jù)空間和消耗電力,還會(huì)增加汽車重量,不僅數(shù)量龐大,而且連接設(shè)備所需的電線總長超過了四公里。隨著 ECU 數(shù)量增多,加之對(duì)新功能的需求不斷上升,如何對(duì) ECU 上運(yùn)行的軟件進(jìn)行更新也成為一大難題。如果采用集中式 E/E 架構(gòu),可通過單一通道(中央 ECU)部署軟件更新,這與分布式 E/E 架構(gòu)相比,大幅簡(jiǎn)化了更新流程。
為了進(jìn)行整合(例如在單個(gè)系統(tǒng)上運(yùn)行多種功能)并在不同應(yīng)用之間保持分隔,需要對(duì)硬件平臺(tái)和整個(gè)系統(tǒng)的軟件架構(gòu)都提出更高的要求。
通過虛擬化加強(qiáng)整合
虛擬化為整合帶來了顯著好處,因?yàn)樗鼛缀鯚o需修改就可以使用現(xiàn)有軟件。而這需要在硬件和實(shí)際軟件功能之間設(shè)置一個(gè)合適的軟件層,即虛擬機(jī)管理程序。
ECU 用于常規(guī)的汽車駕駛環(huán)境中,因此安全問題至關(guān)重要。為此,實(shí)施強(qiáng)有力的安全措施必不可少,其中實(shí)時(shí)應(yīng)用不可或缺。Cortex-A 系列專為計(jì)算密集型操作而設(shè)計(jì),而 Arm Cortex-R 系列則在實(shí)時(shí)應(yīng)用方面表現(xiàn)出色。
Armv8-R: 通過虛擬化整合實(shí)時(shí)和安全功能的第一代處理器
相較于之前的 Armv7-R 架構(gòu),基于 Armv8-R 架構(gòu)的 Cortex-R 處理器(例如 Cortex-R52+)引入了新的虛擬化功能。隨著基于 Armv8-R 的最新一代處理器問世,Arm 進(jìn)一步將虛擬化與安全性相結(jié)合。通過在基于內(nèi)存保護(hù)單元 (MPU) 的處理器上啟用虛擬化,能夠以更佳的方式滿足實(shí)時(shí)條件,同時(shí)盡可能確保安全需求。由于該架構(gòu)專注于確定性執(zhí)行行為和鎖步核心,因此同時(shí)具備實(shí)時(shí)性和安全特性。
與前幾代 ECU 相比,Cortex-R 處理器的算力顯著提高,時(shí)鐘頻率高達(dá) 1 GHz,并支持集群配置,進(jìn)一步為 ECU 整合奠定了基礎(chǔ)。憑借更大的計(jì)算能力,單個(gè)處理器上可托管前幾代產(chǎn)品的多個(gè) ECU 軟件棧。
得益于虛擬化功能,Armv8-R 架構(gòu)可以在單個(gè)核心上托管多個(gè)操作系統(tǒng)(例如經(jīng)典的 AUTOSAR 實(shí)例),并確保必要的隔離以滿足安全性要求。
圖:ECU 整合示例:每個(gè)虛擬 ECU (vECU) 都運(yùn)行著原本在單獨(dú) ECU 上使用的完整軟件棧
正如上圖所示,原本在不同 ECU 上運(yùn)行的功能(如擋風(fēng)玻璃雨刷和電池管理控制)現(xiàn)在被堆疊至單個(gè)功能強(qiáng)大的 ECU 中。在這個(gè)情況下,底層軟件層必須確保軟件棧之間不會(huì)互相影響。它們之間的屏障必須足夠牢靠,以至于安全相關(guān)的軟件組件也需要獨(dú)立執(zhí)行并相互隔離。
為了控制和編排單獨(dú)的軟件棧,以及處理器和硬件,我們需要操作系統(tǒng)的功能。這可以通過 L4Re Micro Hypervisor 得到實(shí)現(xiàn)。它作為硬件和軟件之間的軟件層,可為軟件功能提供強(qiáng)大的隔離。
支持虛擬化的硬件與 虛擬機(jī)管理程序相結(jié)合的優(yōu)勢(shì)
L4Re Micro Hypervisor 在硬件和運(yùn)行的軟件之間提供了一個(gè)抽象層。通過將軟件棧部署到虛擬機(jī) (VM) 中,虛擬機(jī)管理程序可以隔離軟件棧,同時(shí)繼續(xù)在操作系統(tǒng)等現(xiàn)有環(huán)境中運(yùn)行。因此,無需對(duì)軟件架構(gòu)進(jìn)行改造。例如,原先在 ECU 中運(yùn)行的控制擋風(fēng)玻璃雨刷器的軟件??梢暈橐粋€(gè)整體,只需進(jìn)行一些微小的調(diào)整。
Armv8-R 提供的處理器架構(gòu)和虛擬機(jī)管理程序能夠使軟件棧彼此隔離,同時(shí)不影響安全性和安全功能。
虛擬機(jī)管理程序?qū)崿F(xiàn)的抽象層為汽車和硬件制造商及軟件提供商帶來了諸多益處。主要的優(yōu)勢(shì)包括:
解決軟件實(shí)現(xiàn)和特定硬件變體之間的依賴問題;
能夠更快地在硬件變體之間進(jìn)行切換;
引入新一代 ECU 并能夠復(fù)用軟件棧;
無需調(diào)整軟件棧以適應(yīng)特定版本的硬件配置,即可擴(kuò)展硬件平臺(tái)以適應(yīng)低端和高端部署需求。
借助以上優(yōu)勢(shì),還可減少對(duì)特定硬件實(shí)現(xiàn)方案的依賴,同時(shí)降低了重新實(shí)現(xiàn)新硬件平臺(tái)功能而產(chǎn)生的開發(fā)成本。因此,抽象層促進(jìn)了軟件組件的復(fù)用,有助于節(jié)省時(shí)間和資源,并最終縮短產(chǎn)品上市時(shí)間。
抽象層的通用接口還提供了一項(xiàng)優(yōu)勢(shì),即允許并行開發(fā)。由于接口獨(dú)立于特定硬件,因此軟件開發(fā)可以在硬件尚未就緒的情況下先行啟動(dòng)。此外,軟件開發(fā)也可以在其他環(huán)境中進(jìn)行,例如具有虛擬設(shè)備的云端。Arm 虛擬硬件 (Arm Virtual Hardware) 平臺(tái)就是一個(gè)很好的例子,它提供了硬件平臺(tái)的虛擬變體。
適合 Armv8-R 架構(gòu)的虛擬機(jī)管理程序:
面向 MPU 的 L4Re Micro Hypervisor
要了解虛擬機(jī)管理程序的作用及其為軟件組件提供的接口,必須先對(duì)虛擬機(jī)管理程序本身進(jìn)行了解。它的任務(wù)類似于 L4Re Micro Hypervisor,為軟件棧的運(yùn)行提供定義好的環(huán)境,并允許必要的資源訪問。通常,這意味著通過設(shè)備內(nèi)存和中斷機(jī)制來訪問硬件設(shè)備。然而,如果多個(gè)虛擬機(jī)需要同一設(shè)備的服務(wù),則虛擬機(jī)管理程序應(yīng)該為這一設(shè)備提供多路復(fù)用功能。這樣,每個(gè)虛擬機(jī)都可以共用該設(shè)備。
這里的關(guān)鍵挑戰(zhàn)是虛擬機(jī)如何訪問多路復(fù)用設(shè)備。一種方法是讓虛擬機(jī)管理程序來模擬虛擬機(jī)所需的硬件設(shè)備,就像訪問實(shí)際設(shè)備一樣。盡管這是一種可行方法,但實(shí)現(xiàn)這種模擬既繁瑣又容易出錯(cuò)。更好的方法是使用專門為虛擬機(jī)和管理程序準(zhǔn)備的接口,即 VirtIO。
作為通用硬件抽象層的 VirtIO
VirtIO 是虛擬機(jī)和虛擬機(jī)管理程序之間共享資源的標(biāo)準(zhǔn)協(xié)議,專為此類設(shè)置而設(shè)計(jì)。VirtIO 已經(jīng)在服務(wù)器虛擬化領(lǐng)域得到廣泛應(yīng)用,結(jié)構(gòu)化信息標(biāo)準(zhǔn)推動(dòng)組織 (OASIS) 開放小組正致力于 VirtIO 驅(qū)動(dòng)程序的標(biāo)準(zhǔn)化。
采用 VirtIO 后,虛擬機(jī)無需具備所運(yùn)行平臺(tái)的專用驅(qū)動(dòng)程序,虛擬機(jī)管理程序也不用為虛擬機(jī)所使用的驅(qū)動(dòng)程序提供模擬。VirtIO 常用于服務(wù)器,盡管它仍能提供相同的優(yōu)勢(shì),但對(duì)于小規(guī)模嵌入式領(lǐng)域來說還是一項(xiàng)新興技術(shù)。L4Re Hypervisor 系列使用 VirtIO 作為主要的設(shè)備虛擬化技術(shù)。
VirtIO 可以靈活地部署虛擬機(jī)托管的軟件棧,因?yàn)樗鼈兡軌蛟诓煌挠布脚_(tái)和硬件配置之間輕松遷移。正如軟件定義汽車 (SDV) 所倡導(dǎo)的愿景,憑借這種獨(dú)立于硬件的虛擬機(jī),可以更靈活動(dòng)態(tài)地部署基于虛擬機(jī)的工作負(fù)載。想要深入了解設(shè)備虛擬化,請(qǐng)點(diǎn)擊閱讀《 為實(shí)時(shí)系統(tǒng)引入設(shè)備虛擬化原則 》。
Cortex-R82 和 L4Re Micro Hypervisor 增強(qiáng)靈活性:兼顧嵌入式和通用操作系統(tǒng)
在 Arm 處理器產(chǎn)品組合中,基于 Armv8-R 架構(gòu)的 Cortex-R52+ 處理器通過提供確定性執(zhí)行特性來滿足安全性和實(shí)時(shí)用例需求。Cortex-R52 和 Cortex-R52+ 是首批在 R 系列上提供虛擬化功能的處理器,支持在單個(gè)處理器上運(yùn)行多個(gè)獨(dú)立的軟件棧。Cortex-R52 和 Cortex-R52+ 為 32 位處理器。
另外還有 64 位的 Cortex-R82AE,這是 Arm 新推出的 64 位 Armv8-R 處理器,專門面向汽車安全應(yīng)用。Cortex-R82AE 的主要新功能之一是能夠在 EL1 的虛擬機(jī)中支持基于 MMU 和 MPU 的保護(hù),同時(shí)托管通用操作系統(tǒng)(如 Linux)及實(shí)時(shí)操作系統(tǒng)。虛擬機(jī)管理程序級(jí)別 (EL2) 繼續(xù)使用 MPU,為虛擬機(jī)管理程序、實(shí)時(shí)和安全應(yīng)用及虛擬機(jī)提供確定性內(nèi)存訪問能力。
基于微內(nèi)核的開源 L4Re Micro Hypervisor 可支持 32 位的 Cortex-R52 和 Cortex-R52+,以及 64 位的 Cortex-R82AE。它能夠充當(dāng)虛擬機(jī)的主機(jī),使用 MPU 或 MMU,而且支持與虛擬機(jī)并行的原生應(yīng)用(稱為 MicroApps)。
L4Re MicroApps 可實(shí)現(xiàn)小巧可靠的軟件組件,而無需運(yùn)行整個(gè)操作系統(tǒng)(包括虛擬機(jī)中的應(yīng)用)。借助配套的 L4Re Hypervisor,還可支持 Armv8-A 處理器,并提供相同的靈活功能。
圖:示例為基于 Arm Cortex-R82AE 的區(qū)域 ECU 系統(tǒng),運(yùn)行 L4Re Micro Hypervisor,托管兩個(gè)基于 MPU 的虛擬機(jī)和一個(gè) Linux 虛擬機(jī)
L4Re MicroApps 可監(jiān)測(cè)虛擬機(jī)并提供 VirtIO 服務(wù)?!禡CU 虛擬化:L4Re Micro Hypervisor》白皮書 [1] 深入探討了基于 MPU 的處理器(32 位和 64 位)的虛擬化。其中還介紹了 L4Re Micro Hypervisor 的虛擬化功能如何幫助構(gòu)建靈活且面向未來的汽車系統(tǒng),從而實(shí)現(xiàn)軟件定義汽車。
總結(jié)
基于 Armv8-R 的處理器和 MPU 的虛擬機(jī)管理程序(例如 L4Re Micro Hypervisor)為安全的區(qū)域 ECU 實(shí)現(xiàn)方案提供了性能基礎(chǔ)。開源的 L4Re Micro Hypervisor 現(xiàn)已發(fā)布于 https://github.com/kernkonzept 上。
評(píng)論