基于Hypervisor智能駕艙的AUTOSAR解決方案(1)
引言
當(dāng)今的汽車(chē)制造商正競(jìng)相通過(guò)使用人機(jī)界面(HMI),基于云的服務(wù),車(chē)輛自組織網(wǎng)絡(luò)(VANET)和自動(dòng)駕駛等技術(shù)在未來(lái)的車(chē)輛中部署這些創(chuàng)新且吸引眼球的新功能。這些新技術(shù)增加了車(chē)輛電氣和電子(E / E)架構(gòu)的復(fù)雜性,并要求軟件系統(tǒng)要支持汽車(chē)間及汽車(chē)和云端的互連及交互。隨著現(xiàn)代車(chē)輛中100多個(gè)ECU的出現(xiàn),電子控制單元(ECU)的數(shù)量不斷增加。這迫使汽車(chē)OEM廠商將多個(gè)單元整合到一個(gè)單一的高計(jì)算平臺(tái)中。
盡管這種方法簡(jiǎn)化了車(chē)輛的網(wǎng)絡(luò)模型,但它給汽車(chē)軟件系統(tǒng)架構(gòu)帶來(lái)了更多挑戰(zhàn)。這些挑戰(zhàn)同樣存在于智能座艙,高級(jí)駕駛員輔助系統(tǒng)(ADAS),智能穿戴設(shè)備和遠(yuǎn)程信息通信系統(tǒng)等領(lǐng)域中(圖1)。更復(fù)雜的是,這些軟件應(yīng)用程序中對(duì)在安全性和互連性方面有更嚴(yán)格的實(shí)時(shí)性和功能安全性要求。對(duì)車(chē)載通信和對(duì)安全性有嚴(yán)格要求的系統(tǒng)通常需要實(shí)時(shí)操作系統(tǒng)(RTOS),而與安全性無(wú)關(guān)的信息娛樂(lè)應(yīng)用程序則在Linux通用操作系統(tǒng)上運(yùn)行。兩個(gè)OS的組合使這些應(yīng)用程序具有異構(gòu)性質(zhì)。
圖1:座艙域控制器網(wǎng)絡(luò)
解決方案
可以在同一電子控制單元上添加兩個(gè)微控制器(MCU)。一個(gè)MCU運(yùn)行基于Linux?的應(yīng)用程序,該應(yīng)用程序負(fù)責(zé)AI等算法和信息娛樂(lè)功能等高計(jì)算任務(wù),而另一個(gè)MCU運(yùn)行通常用于車(chē)載和診斷通信的簡(jiǎn)單,實(shí)時(shí)的應(yīng)用程序。這兩個(gè)MCU通過(guò)串行外圍設(shè)備接口連接,從而允許這兩個(gè)應(yīng)用程序之間進(jìn)行通信(圖2)。
盡管此方法允許重用標(biāo)準(zhǔn)軟件體系結(jié)構(gòu),但為每個(gè)系統(tǒng)添加專(zhuān)用硬件效率不高且成本很高。而且,通過(guò)串行通信接口在這些系統(tǒng)之間大量的數(shù)據(jù)通信無(wú)法保證其通信的可靠性。另一種方法是在Linux上移植實(shí)時(shí)應(yīng)用程序。圖2:駕駛艙領(lǐng)域進(jìn)行信息娛樂(lè)/ AUTOSAR整合的方法
通過(guò)使用高性能的Embedded Hypervisor硬件和 虛擬化技術(shù)可在同一處理器上整合多個(gè)操作系統(tǒng)。這是開(kāi)發(fā)異構(gòu)的汽車(chē)應(yīng)用程序的有效方法。下面介紹如何使用Mentor嵌入式管理程序?qū)?shí)時(shí)AUTOSAR應(yīng)用程序與基于Linux的應(yīng)用程序整合在一起。所描述的解決方案使用TI Jacinto 6信息娛樂(lè)評(píng)估模塊(圖3)。圖3:TI Jacincto 6信息娛樂(lè)評(píng)估模塊
系統(tǒng)架構(gòu)與方法
本節(jié)定義了虛擬化環(huán)境的特征以及用于滿足異構(gòu)汽車(chē)應(yīng)用程序要求的方法。
虛擬化的環(huán)境
實(shí)現(xiàn)一致的虛擬化環(huán)境的核心在于處理影響處理器硬件狀態(tài)的敏感指令。實(shí)現(xiàn)此目的的技術(shù)可以總結(jié)如下:
-
全虛擬化:全虛擬化(Full virtualization), 也稱(chēng)為原始虛擬化技術(shù),它使用虛擬機(jī)協(xié)調(diào)客戶操作系統(tǒng)和原始硬件。這里"協(xié)調(diào)"是一個(gè)關(guān)鍵詞, 因?yàn)閂MM在客戶操作系統(tǒng)和裸硬件之間用于工作協(xié)調(diào)。一些受保護(hù)的指令必須由Hypervisor(虛擬機(jī)管理程序)來(lái)捕獲和處理. 因?yàn)椴僮飨到y(tǒng)是通過(guò)Hypervisor來(lái)分享底層硬件.全虛擬化的運(yùn)行速度要快于硬件模擬, 但是性能方面不如裸機(jī), 因?yàn)镠ypervisor需要占用一些資源. 全虛擬化最大的優(yōu)點(diǎn)是操作系統(tǒng)沒(méi)有經(jīng)過(guò)任何修改. 它的唯一限制是操作系統(tǒng)必須能夠支持底層硬件(比如, PowerPC).
-
半虛擬化:半虛擬化(Paravirtualization)是另一種類(lèi)似于全虛擬化的熱門(mén)技術(shù). 它使用Hypervisor(虛擬機(jī)管理程序)分享存取底層的硬件, 但是它的客戶操作系統(tǒng)集成了虛擬化方面的代碼. 該方法無(wú)需重新編譯或引起陷阱, 因?yàn)椴僮飨到y(tǒng)自身能夠與虛擬進(jìn)程進(jìn)行很好的協(xié)作.
-
硬件輔助虛擬化:該技術(shù)通過(guò)使用硬件擴(kuò)展來(lái)處理敏感操作,從而從全虛擬化和半虛擬化中獲得最大收益,從而在大多數(shù)情況下消除了虛擬機(jī)管理程序仿真的開(kāi)銷(xiāo),而無(wú)需修改虛擬進(jìn)程在虛擬機(jī)管理程序上運(yùn)行。當(dāng)然,此方法的缺點(diǎn)是它僅適用于具有虛擬化支持的現(xiàn)代處理器。
CPU虛擬化
Arm?TrustZone?是一個(gè)內(nèi)置的硬件安全解決方案,它定義了一個(gè)由兩個(gè)區(qū)域組成的安全域:安全和非安全。引入了處理器模式以進(jìn)行監(jiān)視區(qū)域的切換,并引入了特權(quán)指令(由安全監(jiān)視軟件調(diào)用)來(lái)管理這兩個(gè)區(qū)域的軟件堆棧。
圖4:當(dāng)前的Armv7 CPU模式。
盡管TrustZone主要是為安全性而設(shè)計(jì)的,但它可以用作混合關(guān)鍵系統(tǒng)的硬件輔助虛擬化方法。不能單獨(dú)使用TrustZone擴(kuò)展來(lái)處理虛擬機(jī)監(jiān)控程序代碼,因?yàn)闊o(wú)法捕獲非安全區(qū)域到安全區(qū)域的指令,從而無(wú)法虛擬化非安全區(qū)域中的其他進(jìn)程。但是,這可以使用新的HYP模式來(lái)實(shí)現(xiàn),該模式降低了虛擬機(jī)管理程序設(shè)計(jì)的復(fù)雜性,并降低了敏感指令仿真的成本,因?yàn)樗ㄟ^(guò)使用自己的專(zhuān)用寄存器應(yīng)用陷印和仿真技術(shù)。
內(nèi)存虛擬化
添加了地址轉(zhuǎn)換的新階段,以使來(lái)賓內(nèi)核對(duì)內(nèi)存地址的管理與物理內(nèi)存脫鉤。這是通過(guò)使用第二階段頁(yè)表轉(zhuǎn)換將中間物理地址(IPA)轉(zhuǎn)換為物理地址(PA)來(lái)實(shí)現(xiàn)的。此階段對(duì)來(lái)賓內(nèi)核完全透明,并保護(hù)物理內(nèi)存免受來(lái)賓未經(jīng)授權(quán)的訪問(wèn)。圖5顯示了在虛擬機(jī)管理程序上運(yùn)行的虛擬機(jī)的地址轉(zhuǎn)換階段。圖5:內(nèi)存地址轉(zhuǎn)換 也可以從HYP模式中刪除第二階段地址轉(zhuǎn)換,以使IPA和PA地址相同。
ARM的通用中斷控制器
Arm通用中斷控制器主要由兩個(gè)組件組成:
-
分配器(GICD):執(zhí)行中斷優(yōu)先級(jí)分配并路由到所有CPU。還負(fù)責(zé)軟件中斷的產(chǎn)生。 -
CPU接口(GICC):負(fù)責(zé)處理CPU級(jí)別的中斷,因?yàn)樗鶕?jù)CPU當(dāng)前的優(yōu)先級(jí)接受來(lái)自分配器的中斷。負(fù)責(zé)確認(rèn)并通知中斷結(jié)束。
ARM的虛擬CPU接口
Arm中通用中斷控制器的虛擬化擴(kuò)展添加了另一個(gè)組件,即虛擬CPU接口。虛擬CPU接口寄存器具有與物理CPU相同的編程模型 接口注冊(cè),因此來(lái)賓內(nèi)核不會(huì)知道它是否正在與物理或虛擬CPU通信。它將始終使用物理接口的地址,但是如果軟件已虛擬化,則管理程序可以使用第二階段地址轉(zhuǎn)換將該接口重定向到虛擬CPU寄存器。這個(gè)設(shè)計(jì) 無(wú)需模擬CPU接口訪問(wèn),因此客戶機(jī)OS可以更高效地執(zhí)行諸如中斷確認(rèn)之類(lèi)的頻繁任務(wù)。
系統(tǒng)管理程序通過(guò)分發(fā)器管理所有物理中斷,并通過(guò)列表寄存器將它們作為虛擬中斷路由到來(lái)賓,該列表寄存器是系統(tǒng)管理程序用來(lái)維護(hù)虛擬中斷狀態(tài)的列表。這樣,虛擬機(jī)管理程序可以為所有訪客虛擬化分發(fā)服務(wù)器的功能,但這也意味著必須模擬對(duì)分發(fā)服務(wù)器注冊(cè)的訪客訪問(wèn)。
在Arm的通用中斷控制器的新體系結(jié)構(gòu)中,中斷停用的過(guò)程可以分為兩個(gè)步驟:
1)通過(guò)降低CPU優(yōu)先級(jí),以及
2)中斷停用。
進(jìn)行虛擬化時(shí),將這兩個(gè)步驟分開(kāi)可能會(huì)有所幫助。系統(tǒng)管理程序收到物理中斷并將其作為虛擬中斷路由到來(lái)賓內(nèi)核后,可以在仍在處理虛擬中斷的同時(shí)降低CPU的優(yōu)先級(jí)。當(dāng)降低CPU優(yōu)先級(jí)時(shí),可以觸發(fā)新的中斷,從而允許管理程序
在將它們觸發(fā)給來(lái)賓之前更有效地對(duì)收到的中斷進(jìn)行優(yōu)先級(jí)排序。在此配置中,當(dāng)來(lái)賓內(nèi)核取消激活虛擬中斷時(shí),物理中斷也將被取消激活。
通用計(jì)時(shí)器
通用計(jì)時(shí)器模塊為每個(gè)CPU提供一個(gè)實(shí)時(shí)計(jì)數(shù)器和一個(gè)計(jì)時(shí)器,這些計(jì)時(shí)器和計(jì)時(shí)器可用于在配置的時(shí)間段后生成中斷。通常,任何內(nèi)核都需要具有控制能力并能夠操縱計(jì)時(shí)器,以便實(shí)時(shí)安排事件。這意味著在虛擬化的情況下,管理程序?qū)⒈仨毮M來(lái)賓的所有訪問(wèn)者訪問(wèn)計(jì)時(shí)器的效率非常低。這將大大降低實(shí)時(shí)性能。這就是為什么Arm體系結(jié)構(gòu)中的通用計(jì)時(shí)器提供虛擬計(jì)數(shù)器和虛擬計(jì)時(shí)器的原因,來(lái)賓內(nèi)核可以使用這些計(jì)數(shù)器和虛擬計(jì)時(shí)器而無(wú)需捕獲虛擬機(jī)管理程序。來(lái)賓內(nèi)核應(yīng)該能夠在沒(méi)有管理程序干預(yù)的情況下配置停止/重啟虛擬計(jì)時(shí)器,而管理程序直接將物理計(jì)時(shí)器用于其自身的調(diào)度目的。虛擬計(jì)數(shù)器可以配置為 與實(shí)體計(jì)數(shù)器的偏移量,以便每個(gè)訪客都有自己的相對(duì)時(shí)間。而且,虛擬計(jì)數(shù)器將 在切換到HYP模式(將來(lái)賓與虛擬機(jī)監(jiān)控程序操作隔離開(kāi))的情況下自動(dòng)停止。
AUTOSAR ASILD級(jí)別安全軟件模塊的安全機(jī)制介紹
基于Autosar軟件的功能安全開(kāi)發(fā)的介紹
AUTOSAR模式管理經(jīng)驗(yàn)總結(jié)
使用AURIX TOM模塊生成交流電機(jī)的PWM驅(qū)動(dòng)
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!