一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Armv8-R Cortex-R52+軟件集成的最佳實(shí)踐

jf_EksNQtU6 ? 來(lái)源:功能安全開(kāi)發(fā)????? ? 2023-11-02 16:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

汽車(chē)電氣/電子(E/E)架構(gòu)正在向計(jì)算資源的集中方向發(fā)展。這最初發(fā)生在域控制器中,然后轉(zhuǎn)向區(qū)域和集中式方法。隨著多個(gè)實(shí)時(shí)功能被合并為區(qū)域控制器,對(duì)處理器性能的需求就會(huì)提高,操作系統(tǒng)和軟件的復(fù)雜性也會(huì)增加。該行業(yè)正越來(lái)越多地轉(zhuǎn)向基于Armv8-R的解決方案,如Cortex-R52和Cortex-R52+cpu(在論文中總結(jié)為Cortex-R52+),以實(shí)現(xiàn)這種軟件集成的愿景。一些汽車(chē)芯片制造商已經(jīng)將這些處理器納入到區(qū)域平臺(tái)和安全島的高性能微控制器設(shè)計(jì)中。與此同時(shí),汽車(chē)軟件供應(yīng)商已經(jīng)建立了與Armv8-R集成的解決方案,在這個(gè)處理器家族中使用的Arm架構(gòu)。這篇文章總結(jié)了這一行業(yè)趨勢(shì)的最先進(jìn)的概述。

新系統(tǒng)的硬件和軟件必須同時(shí)滿(mǎn)足設(shè)備上承載的每個(gè)單獨(dú)工作負(fù)載的要求。這些內(nèi)容包括:

—滿(mǎn)足工作負(fù)載的軟件依賴(lài)性,包括庫(kù)、操作系統(tǒng)調(diào)用(包括對(duì)輸入/輸出的訪(fǎng)問(wèn))和應(yīng)用程序二進(jìn)制接口(ABI)??赡苄枰@些版本的特定版本。當(dāng)單個(gè)操作系統(tǒng)不能同時(shí)滿(mǎn)足所有依賴(lài)項(xiàng)時(shí),系統(tǒng)軟件可以包括多個(gè)操作系統(tǒng)。

—性能,包括實(shí)時(shí)工作負(fù)載所需的決定論,可能有不同的硬實(shí)時(shí)響應(yīng)時(shí)間要求,從幾微秒以上。如果未能滿(mǎn)足困難的實(shí)時(shí)需求,將導(dǎo)致工作負(fù)載的操作不正確。有些工作負(fù)載可能有更精簡(jiǎn)的實(shí)時(shí)需求,因?yàn)闊o(wú)法滿(mǎn)足這些需求會(huì)導(dǎo)致性能下降。其他工作負(fù)載沒(méi)有專(zhuān)門(mén)的實(shí)時(shí)需求,因此這些軟件制品是在最好的基礎(chǔ)上執(zhí)行的。

—對(duì)于功能安全的工作負(fù)載,滿(mǎn)足工作負(fù)載對(duì)正確執(zhí)行環(huán)境的假設(shè)以及提供任何假定的外部安全機(jī)制是最基本的。執(zhí)行環(huán)境和安全機(jī)制的汽車(chē)安全完整性級(jí)別(ASIL)必須高于或高于分配給工作量的級(jí)別。

—對(duì)于安全性相關(guān)性較低的工作負(fù)載,最好不僅僅因?yàn)樵O(shè)備上存在其他更高的ASIL工作負(fù)載而增加工作負(fù)載的ASIL

—通過(guò)確保其他工作負(fù)載無(wú)法訪(fǎng)問(wèn)敏感數(shù)據(jù),滿(mǎn)足安全要求,如機(jī)密性、完整性、隱私性和真實(shí)性

—能夠更新單個(gè)工作負(fù)載,包括無(wú)線(xiàn)固件(FOTA)。這還包括一系列其他主題,如工作負(fù)載的身份驗(yàn)證、安全引導(dǎo)和系統(tǒng)級(jí)更新。管理程序的FOTA是一個(gè)大話(huà)題,在本白皮書(shū)中也不能討論。

—對(duì)于從已有的(遺留)應(yīng)用程序派生的工作負(fù)載,理想的選擇是以最小的適應(yīng)性集成工作負(fù)載。在集成為獨(dú)立系統(tǒng)硬件設(shè)計(jì)的工作負(fù)載時(shí),軟件必須防止任何具有影響系統(tǒng)中其他應(yīng)用程序的副作用的行為?!獙?duì)于與規(guī)范應(yīng)用程序相關(guān)的工作負(fù)載,可能需要獲得認(rèn)證(例如,在與車(chē)載診斷(OBD)相關(guān)的應(yīng)用程序中)。為了避免在每次其他工作負(fù)載更改時(shí)都需要重新認(rèn)證,必須證明其他工作負(fù)載不會(huì)干擾已認(rèn)證的工作負(fù)載。

通過(guò)承載多個(gè)工作負(fù)載,系統(tǒng)硬件和軟件必須在工作負(fù)載之間提供適當(dāng)?shù)母綦x,以確保一個(gè)工作負(fù)載不會(huì)導(dǎo)致另一個(gè)工作負(fù)載無(wú)法滿(mǎn)足其要求。如果需要多個(gè)操作系統(tǒng),則每個(gè)操作系統(tǒng)之間都存在類(lèi)似的隔離要求。為了功能安全,這種類(lèi)型的隔離被稱(chēng)為免干擾(FFI),它需要一種機(jī)制來(lái)確保與一個(gè)工作負(fù)載相關(guān)的故障不會(huì)導(dǎo)致提供給另一個(gè)工作負(fù)載的執(zhí)行環(huán)境和系統(tǒng)安全機(jī)制的故障。在工作負(fù)載之間提供這種級(jí)別的隔離的系統(tǒng)還帶來(lái)了一個(gè)優(yōu)勢(shì),即允許與其他工作負(fù)載隔離地開(kāi)發(fā)(和調(diào)試)每個(gè)工作負(fù)載。如果工作負(fù)載來(lái)自不同的供應(yīng)商,那么這一點(diǎn)尤其重要。

系統(tǒng)硬件和軟件提供了以下隔離機(jī)制:

—邏輯隔離。使用特權(quán)模型和內(nèi)存保護(hù)機(jī)制隔離屬于不同工作負(fù)載的狀態(tài)。

—定時(shí)隔離。調(diào)度私有資源和共享資源,分區(qū)和監(jiān)視共享資源,以及管理監(jiān)視器計(jì)時(shí)器以檢測(cè)計(jì)時(shí)違規(guī)。

Cortex-R

ARM有一個(gè)CPU處理器組合,設(shè)計(jì)用于解決廣泛的計(jì)算,從最小,最低功率的微控制器到超高性能的服務(wù)器類(lèi)計(jì)算。Cortex-R處理器已經(jīng)開(kāi)發(fā)使應(yīng)用程序需要實(shí)時(shí)處理和適用于一系列不同的用例,尤其是在汽車(chē)應(yīng)用程序,系統(tǒng)必須響應(yīng)短和確定的時(shí)間框架成功地滿(mǎn)足系統(tǒng)的要求。在許多情況下,這些應(yīng)用程序還包括功能安全(和安全性)需求,這些需求增加了系統(tǒng)集成商和開(kāi)發(fā)人員所面臨的挑戰(zhàn)。Cortex-R處理器,如Cortex-R52+,可以用于獨(dú)立的微控制器(mcu),也可以作為SoC(芯片系統(tǒng))設(shè)計(jì)的額外核心,例如作為一個(gè)安全島。

第一個(gè)Cortex-R處理器,如Cortex-R5,是建立在A(yíng)rmv7-R架構(gòu)上的。然而,從那時(shí)起,架構(gòu)已經(jīng)發(fā)展,Arm的Cortex-R52和Cortex-R52+處理器實(shí)現(xiàn)了Armv8-R架構(gòu),這有助于解決汽車(chē)實(shí)時(shí)軟件日益復(fù)雜的問(wèn)題,以及從離散專(zhuān)用控制器到功能集中和組合的控制器的過(guò)渡。Armv8-R體系結(jié)構(gòu)增加了支持,使其能夠在單個(gè)處理器中更好地控制軟件,提供代碼的隔離,并支持可重復(fù)和可理解的行為,包括在實(shí)時(shí)處理器中的虛擬化。

Cortex-R52和Cortex-R52+處理器是高度可配置的,可以被定義以滿(mǎn)足實(shí)現(xiàn)者的應(yīng)用程序要求。表1描述了一些可配置性。

5ace0144-642e-11ee-939d-92fbcf53809c.png

作為Armv8-R體系結(jié)構(gòu)的一部分,這些處理器為用戶(hù)空間異常級(jí)別0(EL0)和操作系統(tǒng)空間異常級(jí)別1(EL1)提供了額外的異常級(jí)別。這個(gè)新的異常級(jí)別2(EL2)可以用于幫助管理管理程序/分離內(nèi)核來(lái)幫助管理處理器上的軟件,這簡(jiǎn)化了合作伙伴如何控制軟件對(duì)共享資源及其交互的訪(fǎng)問(wèn)。這可用于維護(hù)在同一操作系統(tǒng)上運(yùn)行的單個(gè)處理器上或跨多個(gè)操作系統(tǒng)上的任務(wù)之間的隔離。

與新的異常級(jí)別一起,還增加了一個(gè)兩階段內(nèi)存保護(hù)單元(MPU),它能夠強(qiáng)制執(zhí)行處理器對(duì)不同資源的訪(fǎng)問(wèn)。操作系統(tǒng)能夠在EL1上控制MPU的資源,但是處理器可以實(shí)現(xiàn)添加MPU的第二階段,這只能從EL2進(jìn)行配置,管理程序可以從EL2運(yùn)行。

對(duì)資源的訪(fǎng)問(wèn)可以通過(guò)運(yùn)行在新的更高異常級(jí)別2上的軟件進(jìn)行管理。應(yīng)用程序任務(wù)可以通過(guò)該軟件請(qǐng)求訪(fǎng)問(wèn)所需的資源,這將強(qiáng)制使用兩級(jí)內(nèi)存保護(hù)單元(MPU)進(jìn)行訪(fǎng)問(wèn)。這種方法并不局限于兩個(gè)不同的臨界級(jí)別,而且還可以支持許多具有不同保護(hù)功能的不同上下文。與內(nèi)存管理單元(MMU)不同的是,MPU的可用性可以提供從Cortex-R處理器到系統(tǒng)資源的訪(fǎng)問(wèn)管理,而無(wú)需引入額外的、潛在的調(diào)度中斷、延遲搜索時(shí)間和從內(nèi)存中加載頁(yè)面表。這些項(xiàng)目很難管理,也難以評(píng)估和保證其及時(shí)完成。

MPU的兩個(gè)級(jí)別是:

—EL1MPU,它由操作系統(tǒng)管理,以強(qiáng)制操作系統(tǒng)與應(yīng)用任務(wù)/isr分離,以及應(yīng)用任務(wù)/isr彼此分離。EL1 MPU可以通過(guò)運(yùn)行在EL2或EL1處的代碼進(jìn)行編程。

—EL2 MPU,它只能通過(guò)運(yùn)行在EL2上的代碼進(jìn)行編程,并由一個(gè)系統(tǒng)管理程序用來(lái)提供額外的分離。

Cortex-R52+提供了核心之外的信息,以使系統(tǒng)能夠基于正在運(yùn)行的軟件來(lái)建立和維護(hù)對(duì)訪(fǎng)問(wèn)的控制。這是通過(guò)為設(shè)備事務(wù)傳播虛擬機(jī)ID(VMID)來(lái)實(shí)現(xiàn)的,以使系統(tǒng)能夠管理對(duì)這些資源的訪(fǎng)問(wèn)。在Cortex-R52+的情況下,這通過(guò)支持緩沖區(qū)和內(nèi)存事務(wù)和請(qǐng)求得到進(jìn)一步擴(kuò)展,這些事務(wù)和請(qǐng)求直接由EL2上的管理程序生成。

這些Cortex-R處理器集成了自己的通用中斷控制器(GIC),集群內(nèi)所有cpu共享,以從系統(tǒng)提供低延遲中斷。這可以靈活地將共享外設(shè)中斷(SPI)分配和優(yōu)先級(jí)分配給集群中的任何核心。GIC支持同時(shí)對(duì)物理中斷和虛擬中斷發(fā)出信號(hào)的能力,并可以捕獲對(duì)EL2的中斷訪(fǎng)問(wèn),以虛擬化中斷。

這些處理器具有緊密耦合的存儲(chǔ)器,以實(shí)現(xiàn)高度確定性、低延遲的核心訪(fǎng)問(wèn)代碼和數(shù)據(jù)。它們有多個(gè)到外部資源的接口,包括SRAM、主內(nèi)存和設(shè)備。接口訪(fǎng)問(wèn)的資源是根據(jù)其地址位置進(jìn)行分配的,實(shí)現(xiàn)者能夠靈活地分配他們所使用的內(nèi)存映射中的空間,并管理要私人分配給虛擬機(jī)的資源的分配。

軟件集成機(jī)制

虛擬化和虛擬機(jī)

隨著車(chē)輛中軟件數(shù)量的增加,越來(lái)越多的應(yīng)用程序被集成到一個(gè)微控制器上。這可以看到特別在域/區(qū)域控制器提供之間的橋梁非常強(qiáng)大的中央車(chē)輛計(jì)算機(jī)。

使用Cortex-R52+的管理程序和虛擬機(jī)微控制器可以支持集成應(yīng)用程序與必要的分離的系統(tǒng)。每個(gè)應(yīng)用程序都在其自己獨(dú)立的實(shí)例中運(yùn)行——通常稱(chēng)為分區(qū)或虛擬機(jī)(VM)

虛擬機(jī)通常由以下部分組成:

一些物理或虛擬處理器核心

—一些內(nèi)存

—一些物理或虛擬外設(shè)

—一些物理或虛擬配置寄存器

管理虛擬機(jī)的軟件通常稱(chēng)為系統(tǒng)監(jiān)控程序、分離內(nèi)核或VM管理器,在Cortex-R處理器上,在異常級(jí)別2(EL2)特權(quán)級(jí)別運(yùn)行。在或多或少的程度上,系統(tǒng)監(jiān)控程序會(huì)給在虛擬機(jī)內(nèi)部運(yùn)行的客戶(hù)軟件產(chǎn)生一種錯(cuò)覺(jué),即它運(yùn)行在自己的微控制器上,而不會(huì)與其他虛擬機(jī)中的其他客戶(hù)軟件共享微控制器設(shè)備。一個(gè)物理處理器核心可以通過(guò)在虛擬核心之間進(jìn)行上下文切換來(lái)托管多個(gè)虛擬核心,就像操作系統(tǒng)的上下文在進(jìn)程之間進(jìn)行切換一樣。虛擬核心的上下文是通用寄存器、浮點(diǎn)寄存器、一些系統(tǒng)配置寄存器和EL1 MPU的配置的值。在遺留軟件運(yùn)行在VM內(nèi)部的地方,我們希望虛擬機(jī)看起來(lái)盡可能地像一個(gè)真正的微控制器,以避免需要更改遺留軟件,而不是通過(guò)重新鏈接,以便在每個(gè)VM中運(yùn)行的客戶(hù)軟件使用單獨(dú)的內(nèi)存。

使用SMPU和外圍保護(hù)機(jī)制

SMPU的主要作用是控制哪些總線(xiàn)管理器(例如DMA控制器)可以訪(fǎng)問(wèn)哪些內(nèi)存地址。Cortex-R處理器核心和其他微控制器組件,如Cortex-M內(nèi)核和一些外設(shè),可以作為總線(xiàn)管理器。通常,一個(gè)SMPU將有一個(gè)區(qū)域的集合。每個(gè)區(qū)域都有一個(gè)可配置的起始地址、一個(gè)大小,并被分配給一個(gè)或多個(gè)總線(xiàn)管理器(或在更高級(jí)的設(shè)計(jì)中,使用存儲(chǔ)在Cortex-R52+的VSCTLR中的虛擬機(jī)標(biāo)識(shí)符分配給一個(gè)或多個(gè)虛擬機(jī)。VMID寄存器)??偩€(xiàn)管理器(或VM)只能訪(fǎng)問(wèn)分配給它的區(qū)域中的內(nèi)存。微控制器還可以包括外圍設(shè)保護(hù)機(jī)制,以允許將外圍設(shè)分配給總線(xiàn)管理器(或vm)。在這里,一個(gè)外設(shè)被分配給一個(gè)或多個(gè)總線(xiàn)管理器(或VM),然后外設(shè)保護(hù)機(jī)制禁止任何其他總線(xiàn)管理器(或VM)訪(fǎng)問(wèn)外設(shè)的寄存器。

通過(guò)使用smpu和外圍設(shè)備保護(hù)機(jī)制,我們可以實(shí)現(xiàn)集群級(jí)的分離。也就是說(shuō),一個(gè)微控制器的內(nèi)存和外設(shè),可以在多個(gè)虛擬機(jī)之間進(jìn)行分區(qū),其中一個(gè)虛擬機(jī)包含一個(gè)Cortex-R核心集群中的所有核心。如果虛擬機(jī)有不同的安全級(jí)別(例如,不同的ISO 26262 ASIL級(jí)別),那么僅僅依賴(lài)上述機(jī)制將不允許我們?cè)谕患褐袚碛卸鄠€(gè)虛擬機(jī)。每個(gè)集群都有一個(gè)通用中斷控制器(GIC),用于將中斷路由到集群中的核心。每個(gè)核心都有一個(gè)單獨(dú)的GIC重新分配器來(lái)處理軟件生成的中斷(SGI)和私有外圍中斷(PPI),但是用于處理SPI中斷的GIC分配器對(duì)集群中的所有核心都是通用的。如果我們?cè)试S同一Cortex-R52核心集群中的多個(gè)虛擬機(jī)寫(xiě)入內(nèi)存映射的GIC分發(fā)器寄存器,一個(gè)VM可能會(huì)通過(guò)(意外或惡意地)改變其他虛擬機(jī)的中斷配置來(lái)干擾另一個(gè)虛擬機(jī)。

5b1fe6f8-642e-11ee-939d-92fbcf53809c.png

使用EL2進(jìn)行Para-virtualization

除了像smpu這樣的保護(hù)機(jī)制和由微控制器提供的外圍保護(hù)外,Cortex-R52+本身還包括支持虛擬化的功能。其中一個(gè)特性是EL2特權(quán)級(jí)別。EL2比操作系統(tǒng)使用的EL1(監(jiān)視器)級(jí)別和應(yīng)用程序代碼使用的EL0(用戶(hù))級(jí)別更有特權(quán)。一個(gè)虛擬機(jī)管理程序在EL2上運(yùn)行,并且代碼在客戶(hù)軟件VM中運(yùn)行,在EL1或EL0上運(yùn)行。

HVC(EL1調(diào)用)指令可以使用HVC向管理程序發(fā)出請(qǐng)求,就像應(yīng)用軟件可以使用SVC(HVC調(diào)用)指令向操作系統(tǒng)發(fā)出請(qǐng)求一樣。當(dāng)運(yùn)行在EL1上的軟件執(zhí)行一個(gè)HVC指令時(shí),Cortex-R52+核心會(huì)切換到EL2,并接受一個(gè)超模式的輸入異常。管理程序處理此異常,然后返回到EL1上的guest os.HVC指令允許對(duì)虛擬化。guest os知道它在虛擬機(jī)中運(yùn)行,并且管理程序提供了API(使用HVC指令),guest os用來(lái)請(qǐng)求管理程序、插入到管理程序的設(shè)備驅(qū)動(dòng)程序(EL2設(shè)備驅(qū)動(dòng)程序),或請(qǐng)求在其他虛擬機(jī)中運(yùn)行的設(shè)備驅(qū)動(dòng)程序。

5b37d678-642e-11ee-939d-92fbcf53809c.png

作為一個(gè)例子,考慮如何使用對(duì)虛擬化允許多個(gè)虛擬機(jī)存在于同一集群中,盡管共享GIC分發(fā)程序。SMPU(或核心MPU)被配置為使虛擬機(jī)無(wú)法訪(fǎng)問(wèn)GIC的內(nèi)存映射寄存器。當(dāng)來(lái)賓軟件想要更改其中斷配置時(shí),它會(huì)向管理程序發(fā)出API請(qǐng)求。管理程序在首先檢查了所請(qǐng)求的更改是否不會(huì)干擾其他VM后,執(zhí)行必要的GIC配置。對(duì)虛擬化還可以用于允許外設(shè)共享和創(chuàng)建虛擬外設(shè)。外設(shè)備,如以太網(wǎng)控制器,可以以與GIC相同的方式共享。還可以創(chuàng)建完全虛擬的外設(shè)。例如,可以創(chuàng)建一個(gè)虛擬以太網(wǎng)控制器,用于運(yùn)行在同一微控制器上的虛擬機(jī)之間的通信。在這兩種情況下,管理程序都將包含一個(gè)EL2設(shè)備驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序要么管理了對(duì)共享外設(shè)的訪(fǎng)問(wèn),要么實(shí)現(xiàn)了虛擬外設(shè)。這類(lèi)似于操作系統(tǒng)使用設(shè)備驅(qū)動(dòng)程序來(lái)管理對(duì)由多個(gè)進(jìn)程或任務(wù)共享的外設(shè)的訪(fǎng)問(wèn)的方式。對(duì)虛擬化可以用作不支持或不完全支持硬件虛擬化的外設(shè)的解決方案。理想情況下,外圍設(shè)備將支持“實(shí)時(shí)系統(tǒng)的設(shè)備虛擬化原則”中所描述的虛擬化,以避免對(duì)準(zhǔn)虛擬化的需要——至少在數(shù)據(jù)平面上是這樣。與設(shè)備傳遞(外圍設(shè)直接由客戶(hù)軟件驅(qū)動(dòng))相比,對(duì)虛擬化(以及陷阱和模擬)總是會(huì)添加一些額外的周期。

中斷虛擬化

中斷虛擬化EL2單獨(dú)不允許我們共享或虛擬化中斷驅(qū)動(dòng)的外設(shè)。Armv8-R體系結(jié)構(gòu)定義了通常當(dāng)發(fā)生中斷時(shí),它會(huì)中斷當(dāng)前特權(quán)級(jí)別的當(dāng)前運(yùn)行的代碼。例如,如果代碼在EL1運(yùn)行時(shí)發(fā)生IRQ,則中斷將使用EL1向量表中的IRQ條目在EL1處進(jìn)行,但如果代碼在EL2運(yùn)行時(shí)發(fā)生IRQ,則中斷將在EL2向量表中的IRQ條目在EL2處進(jìn)行。為了解決這個(gè)問(wèn)題,Cortex-R52+支持中斷虛擬化。當(dāng)中斷虛擬化啟用(通過(guò)設(shè)置HCR寄存器的IMO和FMO標(biāo)志和設(shè)置ICH_HCR寄存器),F(xiàn)IQ或IRQ中斷(例外)總是導(dǎo)致Cortex-R52+切換到EL2和使用EL2向量表FIQ或IRQ中斷。然后,管理程序可以處理中斷,或者使用Cortex-R52+核心的特性來(lái)虛擬化中斷(通過(guò)使用列表寄存器),這樣當(dāng)來(lái)賓軟件在EL1/EL0處運(yùn)行時(shí),它使用EL1向量表在EL1處接受虛擬中斷。對(duì)于客戶(hù)軟件,虛擬中斷是獨(dú)立的。

5b5892fa-642e-11ee-939d-92fbcf53809c.png

由于所有中斷最初都由管理程序處理,管理程序可以決定中斷應(yīng)該由管理程序本身、由EL2設(shè)備驅(qū)動(dòng)程序處理,還是應(yīng)該虛擬化并注入VM。這允許處理中斷驅(qū)動(dòng)的共享/虛擬外設(shè)。如果需要,EL2設(shè)備驅(qū)動(dòng)程序還可以向虛擬機(jī)中注入虛擬中斷。中斷虛擬化還允許“遠(yuǎn)程控制”虛擬機(jī)。例如,運(yùn)行在一個(gè)物理核心上的特權(quán)管理VM或EL2設(shè)備驅(qū)動(dòng)程序可以在第二個(gè)物理核心中生成中斷,以請(qǐng)求管理程序在第二個(gè)核心上做一些事情,例如關(guān)閉或重新啟動(dòng)在第二個(gè)核心上運(yùn)行的VM。

當(dāng)然,沒(méi)有什么是免費(fèi)的,而且中斷虛擬化增加了處理中斷所需的總時(shí)間。確切的開(kāi)銷(xiāo)取決于許多因素,包括中斷的到達(dá)模式和使用了多少個(gè)不同的GIC中斷。與中斷虛擬化相關(guān)的問(wèn)題有兩個(gè)時(shí)間問(wèn)題:

1。在EL2處虛擬化中斷的處理會(huì)消耗處理器時(shí)間。

2.由于虛擬中斷的優(yōu)先級(jí)獨(dú)立于實(shí)際中斷的優(yōu)先級(jí),客戶(hù)軟件可能會(huì)看到時(shí)間異常。

虛擬處理器核心

我們還可以利用中斷虛擬化來(lái)支持虛擬處理器核心。例如,計(jì)時(shí)器中斷可以由系統(tǒng)管理程序處理,并用于驅(qū)動(dòng)虛擬核心調(diào)度器,該調(diào)度器決定何時(shí)在虛擬核心之間進(jìn)行上下文切換。由于來(lái)賓軟件無(wú)法阻止在EL2處發(fā)生的中斷,因此損壞或惡意的來(lái)賓軟件無(wú)法拒絕對(duì)其他來(lái)賓軟件的處理器時(shí)間。當(dāng)前未運(yùn)行的虛擬核心的中斷可以被虛擬化,在軟件中排隊(duì),并在下次運(yùn)行時(shí)注入虛擬核心中。在虛擬核之間的切換通常需要重新編程EL2 MPU。還必須注意協(xié)同處理器14和15配置寄存器(這些寄存器用于配置處理器的各個(gè)方面,如環(huán)境性,是否啟用緩存以及是否啟用EL1MPU)。其中一些寄存器對(duì)物理核心的影響可能會(huì)影響物理核心和虛擬機(jī)管理程序上的所有虛擬核心。其他寄存器的影響可能是特定于虛擬核心的,如EL1 MPU區(qū)域寄存器。后一類(lèi)中的寄存器需要是虛擬寄存器的一部分

5b7f7df2-642e-11ee-939d-92fbcf53809c.png

如果多個(gè)虛擬核由單個(gè)物理核托管,那么必須考慮如何安排虛擬核。最簡(jiǎn)單的方法是使用靜態(tài)TDMA(時(shí)分多址)算法。TDMA算法具有非常低的運(yùn)行時(shí)開(kāi)銷(xiāo),易于理解,并且容易計(jì)算虛擬核心何時(shí)在墻時(shí)鐘時(shí)間內(nèi)運(yùn)行。純靜態(tài)算法的缺點(diǎn)是,在處理異步事件(例如,中斷)時(shí),它可能會(huì)導(dǎo)致較長(zhǎng)時(shí)間的延遲。通過(guò)仔細(xì)構(gòu)建靜態(tài)VM調(diào)度,可以避免長(zhǎng)時(shí)間的延遲,以確保在處理中斷的VM運(yùn)行之前不必等待太久。然而,這可能需要詳細(xì)了解中斷在最壞情況下的執(zhí)行時(shí)間。系統(tǒng)處理具有短延遲的異步事件的另一種方法是使用動(dòng)態(tài)調(diào)度算法。動(dòng)態(tài)調(diào)度算法的一個(gè)例子是基于保留的調(diào)度,每個(gè)虛擬核心都是一個(gè)可延遲的服務(wù)器。這種算法已經(jīng)在一些版本的ETAS RTA-HVR管理程序中使用過(guò)。這在處理異步時(shí)提供了更短的延遲。

使用虛擬處理器內(nèi)核為系統(tǒng)設(shè)計(jì)者提供了靈活性:—可以創(chuàng)建一個(gè)虛擬機(jī),它包含的內(nèi)核比僅使用物理內(nèi)核時(shí)可用的內(nèi)核要多。額外的核心可能會(huì)使軟件的結(jié)構(gòu)化變得更容易——就像在操作系統(tǒng)中使用線(xiàn)程一樣?!鄠€(gè)虛擬機(jī)可以由單個(gè)物理核心托管。然而,虛擬核之間的上下文切換有不少開(kāi)銷(xiāo),因?yàn)楣芾沓绦蛐枰4嬉粋€(gè)虛擬核的通用寄存器、浮點(diǎn)寄存器、相關(guān)配置寄存器和EL1 MPU設(shè)置,然后為另一個(gè)虛擬核重新加載這些寄存器。虛擬核心上下文開(kāi)關(guān)類(lèi)似于操作系統(tǒng)中的進(jìn)程上下文開(kāi)關(guān)。使用虛擬核心會(huì)影響中斷延遲。使用靜態(tài)調(diào)度算法,到達(dá)當(dāng)前未運(yùn)行的虛擬核心的中斷在虛擬核心下次運(yùn)行之前不會(huì)被處理。通過(guò)一個(gè)自動(dòng)切換到處理中斷的虛擬核心的動(dòng)態(tài)調(diào)度算法,虛擬核心上下文切換時(shí)間將被添加到中斷延遲中。系統(tǒng)設(shè)計(jì)人員需要評(píng)估哪些應(yīng)用程序。

軟件集成的建議

決定是否需要管理程序類(lèi)型的分離還是os級(jí)分離更好?

上面描述的機(jī)制允許一個(gè)管理程序創(chuàng)建一種認(rèn)為客戶(hù)軟件有自己的微控制器的錯(cuò)覺(jué),并強(qiáng)制執(zhí)行運(yùn)行客戶(hù)軟件的虛擬機(jī)之間的分離。如果要集成的應(yīng)用程序是緊密耦合的(緊密耦合意味著應(yīng)用程序相互調(diào)用同步函數(shù)或依賴(lài)于由同一調(diào)度器調(diào)度的所有應(yīng)用程序中的活動(dòng)),那么使用操作系統(tǒng)容器的集成可能更合適。AUTOSAR操作系統(tǒng)允許將任務(wù)和isr分組到被稱(chēng)為“操作系統(tǒng)應(yīng)用程序”的容器中,mpu可以用來(lái)分離這些不同的容器。操作系統(tǒng)級(jí)別的集成意味著使用一個(gè)調(diào)度器來(lái)調(diào)度所有任務(wù),并且更好地支持緊密耦合的通信。像自動(dòng)存儲(chǔ)系統(tǒng)Flex-CP這樣的新舉措正在開(kāi)發(fā)中,以支持更動(dòng)態(tài)的應(yīng)用程序集成到經(jīng)典的自動(dòng)存儲(chǔ)系統(tǒng)系統(tǒng)中。

使用核心本地資源和集群-本地資源

最好使用內(nèi)存和“接近”使用它們的核心的外設(shè)等資源。每個(gè)Cortex-R核心都有比其他類(lèi)型的RAM更快地訪(fǎng)問(wèn)的tcm。通常微控制器有集群本地Flash和RAM,并且在某些情況下,外設(shè)(例如,CAN和LIN控制器)可以被分配給一個(gè)集群。除了使用通常更快之外,使用集群本地資源通常會(huì)導(dǎo)致更少的內(nèi)存總線(xiàn)爭(zhēng)用,因?yàn)樵L(fǎng)問(wèn)集群本地資源的核心可能不必與其他集群中的核心競(jìng)爭(zhēng)訪(fǎng)問(wèn)內(nèi)存總線(xiàn)。請(qǐng)注意,使用接近核心的資源可能會(huì)在運(yùn)行時(shí)限制物理處理器內(nèi)核之間的虛擬處理器內(nèi)核的任何遷移(如果支持這樣做的話(huà))。例如,如果一個(gè)虛擬核心連接到本地flex-r核心集群0,如果遷移到集群1,虛擬核心的運(yùn)行速度會(huì)更慢

考慮中斷延遲和實(shí)時(shí)需求

下表總結(jié)了適用于具有不同中斷延遲和實(shí)時(shí)需求的應(yīng)用程序的技術(shù)摘要。

5b93dc3e-642e-11ee-939d-92fbcf53809c.png

對(duì)未來(lái)微控制器的建議

為虛擬機(jī)提供細(xì)粒度的外設(shè)分配

如果外圍設(shè)可以以細(xì)粒度分配給虛擬機(jī),那么就可以減少對(duì)EL2設(shè)備驅(qū)動(dòng)程序的需求。例如,能夠?qū)蝹€(gè)控制器區(qū)域網(wǎng)絡(luò)(CAN)通道,甚至單個(gè)通用輸入/輸出(GPIO)引腳分配給虛擬機(jī)是很有用的。這減少了對(duì)準(zhǔn)虛擬化或陷阱和模擬的需求,從而提高了性能。雖然完全的外圍設(shè)備虛擬化是理想的(見(jiàn)下文),但一個(gè)折衷方案是使用對(duì)虛擬化/陷阱和模擬來(lái)執(zhí)行外設(shè)的初始化和配置,但允許直接訪(fǎng)問(wèn)數(shù)據(jù)平面。

支持外設(shè)的虛擬化

甚至比細(xì)粒度的虛擬機(jī)分配更好的是外設(shè)的完全虛擬化。在這里,一個(gè)外設(shè)將由一個(gè)管理程序配置,以向多個(gè)虛擬機(jī)呈現(xiàn)一個(gè)單獨(dú)的“視圖”。然后,每個(gè)虛擬機(jī)都可以使用外圍設(shè)備,就好像它已經(jīng)被分配了一個(gè)外圍設(shè)備的唯一實(shí)例一樣。

確保DMA是虛擬化意識(shí)的

當(dāng)VM使用DMA傳輸或使用DMA傳輸?shù)耐庠O(shè)時(shí),DMA傳輸不能允許VM從SMPU或核心MPU通常禁止的內(nèi)存地址讀寫(xiě)。理想的情況是,DMA模塊/通道將自動(dòng)繼承配置DMA模塊/通道的VM的標(biāo)識(shí),或配置使用DMA模塊/通道的外設(shè)的VM的標(biāo)識(shí)。然后,DMA傳輸上的SMPU將至少檢查VM標(biāo)識(shí)符,如果VM無(wú)權(quán)讀取或?qū)慏MA傳輸中涉及的內(nèi)存,則DMA傳輸將被阻止。為了支持這種行為,Armv8-R VMID應(yīng)該分發(fā)給外設(shè)和DMA控制器。如果不可能自動(dòng)繼承虛擬機(jī)身份,那么應(yīng)該可以通過(guò)特權(quán)軟件實(shí)體以編程方式將DMA模塊/標(biāo)識(shí)符分配給虛擬機(jī),以便可以完成對(duì)DMA傳輸?shù)腟MPU控制。當(dāng)單個(gè)物理核心可能運(yùn)行多個(gè)VM時(shí),由VM控制DMA,而不僅僅是總線(xiàn)管理器,則很重要。

采用可用的虛擬化標(biāo)準(zhǔn)來(lái)簡(jiǎn)化軟件的可移動(dòng)性

對(duì)于通常用于運(yùn)行經(jīng)典autosar系統(tǒng)的微控制器來(lái)說(shuō),虛擬化是一個(gè)相對(duì)較新的話(huà)題,自然地,微控制器制造商正在添加一些功能,以使他們自己相對(duì)于競(jìng)爭(zhēng)對(duì)手具有優(yōu)勢(shì)。然而,這些微控制器的用戶(hù)希望開(kāi)發(fā)軟件,如果有必要,他們可以將軟件轉(zhuǎn)移到不同的微控制器上。因此,微控制器和系統(tǒng)管理程序的結(jié)合需要為微控制器的用戶(hù)提供一套相當(dāng)標(biāo)準(zhǔn)的特性和特性使用方法。為此目的,在有行業(yè)標(biāo)準(zhǔn)的地方,就應(yīng)該采用這些標(biāo)準(zhǔn)。在A(yíng)rmv8-R架構(gòu)方面已經(jīng)做了一些工作,在A(yíng)rm的“實(shí)時(shí)系統(tǒng)的設(shè)備虛擬化原則”的論文中可以找到一個(gè)很好的例子。

總結(jié)

電子電子架構(gòu)的發(fā)展,包括區(qū)域控制器,需要進(jìn)一步的實(shí)時(shí)軟件集成解決方案。經(jīng)典的自動(dòng)存儲(chǔ)器是汽車(chē)實(shí)時(shí)軟件世界中事實(shí)上的一個(gè)標(biāo)準(zhǔn),但進(jìn)一步的集成選項(xiàng),如遺留軟件,是必須向前推進(jìn)的。帶有EL2分離選項(xiàng)的Armv8-R體系結(jié)構(gòu)是啟用智能集成選項(xiàng)的一個(gè)很好的選項(xiàng)。不過(guò),如何使用此集成選項(xiàng)高度依賴(lài)于應(yīng)用程序,而專(zhuān)用的應(yīng)用程序需求將定義哪種集成方式最適合。本文介紹了各種不同的技術(shù),可用于支持不同類(lèi)型的應(yīng)用程序的集成。這將有助于系統(tǒng)設(shè)計(jì)師理解如何最好地使用Cortex-R52+內(nèi)核來(lái)支持應(yīng)用程序集成。

來(lái)源:功能安全開(kāi)發(fā)???????

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7948

    瀏覽量

    154912
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19885

    瀏覽量

    235066
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9349

    瀏覽量

    377369
  • Cortex
    +關(guān)注

    關(guān)注

    2

    文章

    203

    瀏覽量

    47354
  • 汽車(chē)軟件
    +關(guān)注

    關(guān)注

    1

    文章

    130

    瀏覽量

    3477

原文標(biāo)題:Armv8-R Cortex-R52+軟件集成的最佳實(shí)踐

文章出處:【微信號(hào):談思實(shí)驗(yàn)室,微信公眾號(hào):談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    在IAR Embedded Workbench for Arm中使用Arm Cortex-R52 NEON

    隨著嵌入式系統(tǒng)變得越來(lái)越智能,對(duì)嵌入式處理器的要求也越來(lái)越高。為了更好應(yīng)對(duì)汽車(chē)、醫(yī)療和工業(yè)機(jī)器人等領(lǐng)域?qū)η度胧教幚砥鞯囊?,Arm推出了采用Armv8-R架構(gòu)的Cortex-R52。Cortex-R52相對(duì)之前的處理器引入了很多
    的頭像 發(fā)表于 06-05 09:57 ?830次閱讀
    在IAR Embedded Workbench for Arm中使用Arm <b class='flag-5'>Cortex-R52</b> NEON

    ARM發(fā)布實(shí)時(shí)處理用CPU內(nèi)核Cortex-R52 瞄準(zhǔn)自動(dòng)駕駛汽車(chē)

    了發(fā)布會(huì)(圖1)。新產(chǎn)品滿(mǎn)足汽車(chē)功能安全標(biāo)準(zhǔn)“ISO26262”的ASIL D及功能安全基本標(biāo)準(zhǔn)“IEC61508”的SIL 3,適用于需要高功能安全性的系統(tǒng)。這也是首款采用ARM的“ARMv8-R架構(gòu)”的CPU內(nèi)核產(chǎn)品。
    發(fā)表于 09-29 10:12 ?2834次閱讀
    ARM發(fā)布實(shí)時(shí)處理用CPU內(nèi)核<b class='flag-5'>Cortex-R52</b> 瞄準(zhǔn)自動(dòng)駕駛汽車(chē)

    newlib crt0.s的__start中的Cortex R52非法異常怎么辦呢

    ”:msr CPSR_c,#209;0xd1上面的說(shuō)明是為每種模式設(shè)置SP的部分內(nèi)容。該指令嘗試更改為FIQ模式。從我從ARMv8ARMv8-R體系結(jié)構(gòu)手冊(cè)中可以了解到,在系統(tǒng)管理程序模式下嘗試修改CPSR
    發(fā)表于 09-01 15:49

    Armv8-R架構(gòu)中的虛擬化概念和可能性

    ,您將能夠: ?描述基本的虛擬化概念 ?構(gòu)建和運(yùn)行示例代碼來(lái)演示Armv8-R的虛擬化特性 體系結(jié)構(gòu) 本指南中的源代碼和注冊(cè)表圖是特定于Cortex-R52處理器的是第一個(gè)實(shí)現(xiàn)Armv8-R架構(gòu)的處理器。其他處理器與
    發(fā)表于 08-02 09:27

    Arm Cortex-R52處理器技術(shù)參考手冊(cè)

    ARMv8-R AArch32兼容處理元件(PE)。 在Cortex-R52的背景下,PE和核心在概念上是相同的。 多個(gè)受保護(hù)的內(nèi)存系統(tǒng)架構(gòu)(PMSA)上下文可以在同一核上執(zhí)行,使用虛擬化技術(shù)來(lái)包含它們
    發(fā)表于 08-17 06:24

    Arm Cortex-r8 MPCore處理器技術(shù)參考手冊(cè)

    Cortex-R8處理器是一款用于深度嵌入式實(shí)時(shí)系統(tǒng)的中端處理器。 它實(shí)施ARMv7-R架構(gòu),并包括Thumb?-2技術(shù),以實(shí)現(xiàn)最佳代碼密度和處理吞吐量。 該流水線(xiàn)具有雙重算術(shù)邏輯單元(ALU
    發(fā)表于 08-18 08:28

    ARM Cortex-R52處理器技術(shù)參考手冊(cè)

    ARMv8-R標(biāo)準(zhǔn)的處理元件(PE)。 在Cortex-R52的背景下,PE和核心在概念上是相同的。 多個(gè)受保護(hù)的內(nèi)存系統(tǒng)架構(gòu)(PMSA)上下文可以在同一核上執(zhí)行,使用虛擬化技術(shù)來(lái)包含它們。 該處
    發(fā)表于 08-18 07:07

    Cortex-R52 SystemC循環(huán)模型11.2版用戶(hù)指南

    本節(jié)介紹ARM Cortex?-R52系統(tǒng)C周期模型。 ARM系統(tǒng)C周期模型直接從RTL代碼編譯而來(lái)。 SystemC模型包裝器以源代碼形式提供,使您能夠?yàn)槿魏畏蟂ystemC IEEE 1666
    發(fā)表于 08-18 07:25

    ARM Cortex-R52+處理器技術(shù)參考手冊(cè)

    Cortex-R52+處理器是一款中等性能的有序超標(biāo)量處理器,主要用于汽車(chē)和工業(yè)應(yīng)用。 它還適用于各種其他嵌入式應(yīng)用,如通信和存儲(chǔ)設(shè)備。 Cortex-R52+處理器有一到四個(gè)內(nèi)核,每個(gè)內(nèi)核實(shí)現(xiàn)一個(gè)
    發(fā)表于 08-29 07:33

    如何將軟件應(yīng)用程序從ARMv5遷移到ARMv7-A/R

    5。 本應(yīng)用筆記還假設(shè)您具有ARMv5的軟件開(kāi)發(fā)經(jīng)驗(yàn)。 假設(shè)主目標(biāo)平臺(tái)是圍繞ARMv7-A處理器構(gòu)建的。 由于ARMv7-A和ARMv7-R
    發(fā)表于 08-29 06:51

    ARM Cortex-R8處理器開(kāi)拓5G速度需求

    四核配置大幅提升了Cortex-R8的整體性能表現(xiàn)。具備實(shí)時(shí)功能和擴(kuò)展的低延遲存儲(chǔ),Cortex-R8相較其他同類(lèi)處理器擁有最佳性能表現(xiàn)。
    發(fā)表于 02-18 13:48 ?1288次閱讀

    Arm Cortex-R52+ 增強(qiáng)時(shí)間關(guān)鍵型汽車(chē)設(shè)計(jì)

    Arm近日發(fā)布了Arm? Cortex?-R系列的最新產(chǎn)品Cortex-R52+,可支持汽車(chē)電子設(shè)計(jì)的演變,幫助汽車(chē)研發(fā)人員在巨大的壓力下,達(dá)成汽車(chē)設(shè)計(jì)的要求。
    發(fā)表于 03-05 11:17 ?2775次閱讀

    Arm Cortex-R52+ 增強(qiáng)時(shí)間關(guān)鍵型汽車(chē)設(shè)計(jì)

    作為Arm安全就緒(Safety Ready)產(chǎn)品組合的一部分,Cortex-R52+ 能夠出色地滿(mǎn)足異構(gòu)SoC內(nèi)部集成的安全島的需求,廣泛應(yīng)用于包括ADAS和座艙控制器在內(nèi)的諸多應(yīng)用。
    發(fā)表于 03-08 12:09 ?2068次閱讀

    AD7091R-2 AD7091R-4 AD7091R-8評(píng)估軟件

    AD7091R-2 AD7091R-4 AD7091R-8評(píng)估軟件
    發(fā)表于 06-06 21:10 ?9次下載
    AD7091<b class='flag-5'>R</b>-2 AD7091<b class='flag-5'>R</b>-4 AD7091<b class='flag-5'>R-8</b>評(píng)估<b class='flag-5'>軟件</b>

    Arm Cortex-R82AE賦能高性能區(qū)域控制器設(shè)計(jì)

    在之前的一篇推文中我曾談到過(guò),汽車(chē)行業(yè)的近期發(fā)展趨勢(shì)正在推動(dòng)對(duì)汽車(chē)架構(gòu)中區(qū)域控制器和域控制器的需求。而基于 Armv8-R 的 Arm Cortex-R52Cortex-R52+ 核心正是滿(mǎn)足
    的頭像 發(fā)表于 09-02 10:23 ?1032次閱讀