基于Hypervisor智能駕艙的AUTOSAR解決方案(2)
MENTOR嵌入式管理程序
目前,通常使用兩種類型的管理程序(圖6):
-
Type 1本機(jī)管理程序:一種在硬件上本機(jī)運(yùn)行的管理程序,因?yàn)樗洚?dāng)核心中的操作系統(tǒng)。 -
Type 2托管虛擬機(jī)監(jiān)控程序:此類型的虛擬機(jī)監(jiān)控程序必須由另一個操作系統(tǒng)托管,并且僅負(fù)責(zé)使用主機(jī)操作系統(tǒng)可用的資源來虛擬化客戶操作系統(tǒng)。
圖6:虛擬機(jī)管理程序 虛擬化的工作原理是從硬件上運(yùn)行的應(yīng)用程序中抽象出物理硬件和設(shè)備。虛擬化流程管理和配置該系統(tǒng)的資源,包括處理器、內(nèi)存、存儲和網(wǎng)絡(luò)資源。這使該系統(tǒng)能夠同時承載多個工作負(fù)載,從而在整個企業(yè)中以更具成本效益和能源效率的方式利用可用的服務(wù)器和系統(tǒng)。虛擬化需要利用虛擬機(jī)管理程序,該管理程序通常稱為虛擬機(jī)監(jiān)視器或VMM。虛擬機(jī)管理程序是一個軟件程序,它提供抽象層,處理物理和虛擬資源(例如物理與虛擬CPU或內(nèi)存)之間的轉(zhuǎn)換,并管理虛擬機(jī)(VM)的創(chuàng)建和支持。
虛擬機(jī)管理程序運(yùn)行的物理硬件通常稱為主機(jī),而管理程序創(chuàng)建和支持的VM統(tǒng)稱為客戶機(jī)。
-
Type 1和Type 2管理程序差異
Type 1虛擬機(jī)管理程序直接在主機(jī)的物理硬件上運(yùn)行,它被稱為裸機(jī)虛擬機(jī)管理程序;它不必預(yù)先加載底層操作系統(tǒng)。通過直接訪問底層硬件而無需其他軟件(例如操作系統(tǒng)和設(shè)備驅(qū)動程序),Type1虛擬機(jī)管理程序被視為用于企業(yè)計(jì)算的高效性能優(yōu)越的虛擬機(jī)管理程序。同時,管理程序直接在物理硬件上運(yùn)行也非常安全,因?yàn)槁銠C(jī)虛擬機(jī)管理程序可避免操作系統(tǒng)通常存在的安全問題和漏洞。這可確保每個訪客VM與惡意軟件和活動保持邏輯隔離。
Type 2虛擬機(jī)管理程序可追溯到x86虛擬化的早期階段,當(dāng)時已有系統(tǒng)已經(jīng)在使用操作系統(tǒng)并且虛擬機(jī)管理程序被部署為更高的軟件層。雖然Type 1和Type 2管理程序的目的和目標(biāo)是相同的,但是對于Type 2虛擬機(jī)管理程序而言,底層操作系統(tǒng)的存在會引入不可避免的延遲,因?yàn)樗性摴芾沓绦虻幕顒雍兔總€VM的工作都必須通過主機(jī)操作系統(tǒng)。此外,主機(jī)操作系統(tǒng)中的任何安全問題或漏洞都可能會危及在其上運(yùn)行的所有虛擬機(jī)。
因此,Type 2管理程序通常不用于數(shù)據(jù)中心計(jì)算,并且僅用于客戶端或最終用戶系統(tǒng)(有時稱為客戶端管理程序),其中性能和安全性較少受到關(guān)注。例如,軟件開發(fā)人員可能會使用Type 2虛擬機(jī)管理程序創(chuàng)建VM,以便在發(fā)布之前測試軟件產(chǎn)品。
Mentor嵌入式管理程序是第一種類型的管理程序,對于嵌入式系統(tǒng)應(yīng)用程序而言,它本質(zhì)上更為方便,在這種應(yīng)用程序中,操作系統(tǒng)足夠簡單,可以在具有確定性行為的硬件上本地運(yùn)行。對于Arm目標(biāo),Mentor虛擬機(jī)管理程序利用Arm虛擬化擴(kuò)展,使簡單的類型1虛擬機(jī)管理程序的選擇更適合CPU虛擬化的設(shè)計(jì)。Arm引入了一種新的HYP模式,該模式不像其他模式那樣具有豐富的寄存器,因此管理程序需要足夠簡單才能利用這些寄存器。Mentor的虛擬機(jī)管理程序針對嵌入式應(yīng)用程序,并使用微內(nèi)核體系結(jié)構(gòu)進(jìn)行設(shè)計(jì),其中內(nèi)核核心整合了虛擬機(jī)管理程序在物理硬件上運(yùn)行所需的最基本功能。這種方法具有許多好處,可通過配置增加其他組件和服務(wù),并且它減小了系統(tǒng)中可信計(jì)算基的大小,從而使系統(tǒng)最關(guān)鍵的部分更容易達(dá)到最高安全級別。它還根據(jù)來賓需求(例如未使用的功能)通過將相應(yīng)功能從虛擬機(jī)監(jiān)控程序映像中刪除來最小化虛擬機(jī)監(jiān)控程序的內(nèi)存占用。
圖7:Mentor嵌入式Hypervisor Mentor嵌入式管理程序(圖7)還利用Arm TrustZone在虛擬機(jī)之間提供更好的隔離,并支持多種類型的來賓OS,例如:
?安卓 ?AUTOSAR ?Mentor嵌入式Linux ?Nucleus RTOS
來賓之間的硬件設(shè)備訪問
Mentor嵌入式Hypervisor提供了多種用于硬件設(shè)備訪問的模型,從而在系統(tǒng)設(shè)計(jì)中提供了更大的靈活性。其中一些模型包括:
-
直接訪問:將硬件設(shè)備分配給允許直接訪問的虛擬機(jī)專有。這種情況適用于硬件設(shè)備只能由一個虛擬機(jī)使用,其無需管理程序干預(yù),系統(tǒng)性能得到了優(yōu)化提高。 -
共享訪問:當(dāng)硬件設(shè)備由虛擬機(jī)擁有并且該設(shè)備是共享時,則在虛擬機(jī)級別完成對硬件的訪問處理。 -
模擬訪問:一種用于在虛擬機(jī)之間共享硬件設(shè)備的通用模型,在每個虛擬機(jī)認(rèn)為它擁有硬件設(shè)備的同時,虛擬機(jī)監(jiān)控程序通過陷阱來模擬對設(shè)備的訪問控制。 -
虛擬訪問:類似于虛擬機(jī)管理程序模擬了對硬件設(shè)備的訪問,但是虛擬機(jī)不擁有硬件設(shè)備,并使用虛擬驅(qū)動程序進(jìn)行硬件訪問,從而消除了對設(shè)備進(jìn)行模擬訪問的需要,從而減少了虛擬訪問及開銷。
虛擬設(shè)備的VirtiO支持
虛擬設(shè)備訪問模型被認(rèn)為是一種準(zhǔn)虛擬化技術(shù),因?yàn)樗筇摂M機(jī)實(shí)現(xiàn)與虛擬機(jī)管理程序的軟件接口,以便無需任何類型的模擬訪問即可處理虛擬設(shè)備訪問。
VirtIO是半虛擬設(shè)備驅(qū)動程序的虛擬化標(biāo)準(zhǔn),提供了標(biāo)準(zhǔn)的應(yīng)用程序可編程接口,因此虛擬機(jī)管理程序和虛擬機(jī)可以使用它與常見的虛擬設(shè)備進(jìn)行交互。如圖8所示,VirtIO架構(gòu)設(shè)計(jì)包括在來賓中實(shí)現(xiàn)的前端驅(qū)動程序,在管理程序中實(shí)現(xiàn)的后端驅(qū)動程序以及處理來賓和管理程序之間的通信的虛擬隊(duì)列。每個VirtIO設(shè)備將具有自己的前端驅(qū)動程序和最終驅(qū)動程序?qū)崿F(xiàn)。除了前端驅(qū)動程序(在來賓操作系統(tǒng)中實(shí)現(xiàn))和后端驅(qū)動程序(在 hypervisor 中實(shí)現(xiàn))之外,virtio 還定義了兩個層來支持來賓操作系統(tǒng)到 hypervisor 的通信。在頂級(稱為 virtio)的是虛擬隊(duì)列接口,它在概念上將前端驅(qū)動程序附加到后端驅(qū)動程序。驅(qū)動程序可以使用 0 個或多個隊(duì)列,具體數(shù)量取決于需求。例如,virtio 網(wǎng)絡(luò)驅(qū)動程序使用兩個虛擬隊(duì)列(一個用于接收,另一個用于發(fā)送),而 virtio 塊驅(qū)動程序僅使用一個虛擬隊(duì)列。虛擬隊(duì)列實(shí)際上被實(shí)現(xiàn)為跨越來賓操作系統(tǒng)和 hypervisor 的銜接點(diǎn)。但這可以通過任意方式實(shí)現(xiàn),前提是來賓操作系統(tǒng)和 hypervisor 以相同的方式實(shí)現(xiàn)它。
Mentor虛擬機(jī)管理程序?qū)irtIO設(shè)備使用內(nèi)存映射輸入輸出(MMIO)方法,并支持VirtIO Net,VirtIO Block和VirtIO Console設(shè)備。Linux也支持VirtIO。圖8:VirtIO架構(gòu)概述。
汽車軟件的虛擬化
用于解決本文前面所述的復(fù)雜性(座艙域單元)的當(dāng)前方法既成本高昂又缺乏性能。在應(yīng)對這些復(fù)雜性時,在汽車軟件體系結(jié)構(gòu)中使用虛擬化將提供更好的方法。這可以通過將不同的異構(gòu)汽車平臺封裝在運(yùn)行于同一硬件上的虛擬機(jī)中來實(shí)現(xiàn)。這種方法不僅通過使用VM間通信而不是串行連接提供了一種更有效的通信方式,而且還減少了向每個平臺添加專用微控制器的成本。通過將遺留平臺重用為封裝的虛擬機(jī),也無需新的適應(yīng)工作,從而降低了開發(fā)成本。
可以使用簡單的共享內(nèi)存訪問技術(shù)或通過使用更多的結(jié)構(gòu)化框架(例如VirtIO)來實(shí)現(xiàn)VM間通信。盡管AUTOSAR不支持VirtIO,但它提供了一個稱為復(fù)雜設(shè)備驅(qū)動器(CDD)的規(guī)范,該規(guī)范允許以標(biāo)準(zhǔn)化方式集成不受支持的驅(qū)動程序,例如VirtIO。
盡管虛擬化可以為汽車軟件帶來好處,但這種方法的適用性取決于對應(yīng)用程序性能的評估-在虛擬化環(huán)境中運(yùn)行時,請確保仍然滿足系統(tǒng)的嚴(yán)格實(shí)時要求。
系統(tǒng)實(shí)施
本節(jié)介紹如何在Mentor虛擬機(jī)管理程序中封裝AUTOSAR和Linux來賓,以在TI Jacinto 6信息娛樂平臺上運(yùn)行。
-
MENTOR 管理程序配置
由于虛擬機(jī)管理程序被設(shè)計(jì)為微內(nèi)核,因此它允許用戶根據(jù)來賓需要配置將哪些驅(qū)動程序和組件添加到虛擬機(jī)管理程序映像中。來賓信息通過設(shè)備樹源文件(DTS)提供給管理程序。這些文件由Mentor虛擬機(jī)管理程序數(shù)據(jù)驅(qū)動的配置綁定定義,并由虛擬機(jī)管理程序用于了解虛擬機(jī)的數(shù)量,地址映射,分配給每個虛擬機(jī)的資源以及虛擬設(shè)備的數(shù)量。系統(tǒng)管理程序解析項(xiàng)目配置并生成二進(jìn)制文件后,它將使用映像樹源文件(ITS)將所有來賓二進(jìn)制文件以及系統(tǒng)管理程序二進(jìn)制文件打包到單個整體映像中,然后可將其部署在目標(biāo)硬件上。
-
虛擬GUESTS
對于Linux來賓,Mentor嵌入式Linux使用了預(yù)先構(gòu)建的映像,該映像是基于Yocto Project的商業(yè)Linux發(fā)行版,并包含對嵌入式應(yīng)用程序有用的豐富功能集。Mentor嵌入式Linux通過半虛擬化層進(jìn)行虛擬化,從而可以在虛擬機(jī)管理程序上運(yùn)行。對于AUTOSAR來賓,VSTAR實(shí)施AUTOSAR標(biāo)準(zhǔn)。VSTAR OS無需進(jìn)行任何虛擬化工作即可在Arm?Cortex-A15硬件上運(yùn)行,這顯示了Arm中硬件輔助虛擬化擴(kuò)展的強(qiáng)大功能。但請務(wù)必注意操作系統(tǒng)支持哪種類型的計(jì)時器。在虛擬環(huán)境中,來賓OS直接使用物理計(jì)時器是不切實(shí)際的,因?yàn)檫@會增加可能影響應(yīng)用程序性能的仿真開銷。另一種解決方案是使用Arm虛擬計(jì)時器或?yàn)樘摂M機(jī)分配專用的通用計(jì)時器,因此不需要模擬來賓對該計(jì)時器的訪問。
來賓配置中的另一個關(guān)鍵因素是虛擬機(jī)到CPU內(nèi)核的映射。多個虛擬機(jī)之間的CPU共享會導(dǎo)致上下文切換開銷,并增加設(shè)計(jì)的復(fù)雜性,因?yàn)檫@將取決于所使用的調(diào)度算法。這將影響應(yīng)用程序性能,并且不適用于實(shí)時虛擬機(jī),因?yàn)樾枰WC確定性的行為才能滿足所有硬定時要求。因此,將在虛擬機(jī)和CPU之間使用一對一的映射。
AUTOSAR演示
對于AUTOSAR演示應(yīng)用程序,目標(biāo)是達(dá)到時間表的嚴(yán)格實(shí)時要求到期點(diǎn)觸發(fā)。在虛擬化環(huán)境中實(shí)現(xiàn)此目標(biāo)的關(guān)鍵因素是:
-
IRQ路由到虛擬機(jī) -
通用中斷控制器訪問 -
虛擬計(jì)時器訪問 圖9概述了該演示。AUTOSAR應(yīng)用程序在專用的虛擬機(jī)上作為VM1運(yùn)行 核心,應(yīng)用程序利用AUTOSAR密碼庫執(zhí)行MAC的兩個操作 驗(yàn)證和AES解密(每100毫秒)的加密數(shù)據(jù),并負(fù)責(zé)另一個應(yīng)用程序 處理解密的數(shù)據(jù)。這是使用調(diào)度表(圖10)進(jìn)行組織的,該調(diào)度表是AUTOSAR OS實(shí)體 包含多個具有固定偏移量的到期點(diǎn),以確保數(shù)據(jù)解密和數(shù)據(jù)處理任務(wù)之間的相對同步。 圖9:AUTOSAR演示平臺模型
圖10:時間調(diào)度表和任務(wù)激活
Linux應(yīng)用程序在專用內(nèi)核上作為VM2運(yùn)行,并與管理程序共享UART控制臺,以允許在管理程序控制臺和Linux控制臺之間切換,后者允許與Linux文件系統(tǒng)接口(圖11)。
圖11:在Mentor虛擬機(jī)管理程序和Mentor嵌入式Linux控制臺之間切換
AUTOSAR應(yīng)用程序運(yùn)行結(jié)果
在虛擬環(huán)境中運(yùn)行時,CPU的總負(fù)載僅增加了約0.2%,這是 IRQ路由和管理程序調(diào)度程序處理增加的開銷。這代表最低 系統(tǒng)管理程序?yàn)檫\(yùn)行VSTAR OS的基本功能而引入的開銷。通過分析AUTOSAR應(yīng)用程序的時序行為,以檢查應(yīng)用程序運(yùn)行期間虛擬機(jī)監(jiān)控程序開銷的影響。通過VSTAR OS提供hook函數(shù) 例如進(jìn)入內(nèi)核,退出內(nèi)核,更改某些任務(wù)的狀態(tài),觸發(fā)事件/警報等這些執(zhí)行路徑上的關(guān)鍵點(diǎn),并結(jié)合讀取通用計(jì)時器來監(jiān)視應(yīng)用程序運(yùn)行期間關(guān)鍵事件的計(jì)時。
由于沒有虛擬計(jì)時器訪問或GIC CPU接口訪問的開銷,因此在虛擬環(huán)境中運(yùn)行時,AUTOSAR OS的內(nèi)核進(jìn)入和退出時間沒有任何變化。IRQ路由時間非常短(1 GHz時鐘頻率為561納秒),因此OS定時器中斷的等待時間不受影響。此外,VSTAR AUTOSAR OS還可以用作無滴答計(jì)時器, 定時器中斷僅在OS操作點(diǎn)上觸發(fā),而不是在每個固定的時間段上觸發(fā)。結(jié)果,無滴答計(jì)時器功能限制了所需的虛擬計(jì)時器中斷次數(shù),并減少了IRQ路由的開銷-調(diào)度表到期點(diǎn)和調(diào)度任務(wù)的時間均未受到影響。經(jīng)過驗(yàn)證,用AUTOSAR OS運(yùn)行時測量,在虛擬環(huán)境中運(yùn)行時,應(yīng)用程序性能不會受到影響。
結(jié)論
本文展示了Mentor虛擬機(jī)管理程序如何引入可靠的解決方案,以在同一ECU上整合信息娛樂和AUTOSAR應(yīng)用程序。盡管這種方法依賴于硬件支持,但如今已在信息娛樂領(lǐng)域ECU中廣泛使用。
Mentor虛擬機(jī)管理程序配置的廣泛靈活性使用戶可以將虛擬機(jī)管理程序的干預(yù)程度降至最低,即使在需要具有嚴(yán)格計(jì)時要求的實(shí)時應(yīng)用程序的情況下,也能滿足不同的應(yīng)用程序要求。
汽車軟件體系結(jié)構(gòu)中虛擬化的標(biāo)準(zhǔn)化是向當(dāng)今ECU中部署高級解決方案邁出的重要一步。因此,Mentor管理程序支持標(biāo)準(zhǔn),例如用于虛擬設(shè)備的VirtIO或用于車載實(shí)時應(yīng)用程序的AUTOSAR。諸如此類的發(fā)展應(yīng)鼓勵汽車標(biāo)準(zhǔn)化組織在其標(biāo)準(zhǔn)中采用虛擬化解決方案。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!