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

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

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

Armv8-R Cortex-R52+軟件集成的最佳實踐

jf_EksNQtU6 ? 來源:功能安全開發(fā)????? ? 2023-11-02 16:51 ? 次閱讀

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

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

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

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

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

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

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

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

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

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

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

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

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

Cortex-R

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

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

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

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

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

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

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

MPU的兩個級別是:

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

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

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

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

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

軟件集成機(jī)制

虛擬化和虛擬機(jī)

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

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

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

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

—一些內(nèi)存

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

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

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

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

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

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

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

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

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

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

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

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

中斷虛擬化

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

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

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

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

1。在EL2處虛擬化中斷的處理會消耗處理器時間。

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

虛擬處理器核心

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

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

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

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

軟件集成的建議

決定是否需要管理程序類型的分離還是os級分離更好?

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

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

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

考慮中斷延遲和實時需求

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

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

對未來微控制器的建議

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

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

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

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

確保DMA是虛擬化意識的

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

采用可用的虛擬化標(biāo)準(zhǔn)來簡化軟件的可移動性

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

總結(jié)

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

來源:功能安全開發(fā)???????

審核編輯:湯梓紅

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

    關(guān)注

    48

    文章

    7552

    瀏覽量

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

    關(guān)注

    68

    文章

    19286

    瀏覽量

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

    關(guān)注

    134

    文章

    9097

    瀏覽量

    367555
  • Cortex
    +關(guān)注

    關(guān)注

    2

    文章

    202

    瀏覽量

    46498
  • 汽車軟件
    +關(guān)注

    關(guān)注

    0

    文章

    100

    瀏覽量

    3182

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

    了發(fā)布會(圖1)。新產(chǎn)品滿足汽車功能安全標(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 ?2658次閱讀
    ARM發(fā)布實時處理用CPU內(nèi)核<b class='flag-5'>Cortex-R52</b> 瞄準(zhǔn)自動駕駛汽車

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

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

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

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

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

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

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

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

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

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

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

    本節(jié)介紹ARM Cortex?-R52系統(tǒng)C周期模型。 ARM系統(tǒng)C周期模型直接從RTL代碼編譯而來。 SystemC模型包裝器以源代碼形式提供,使您能夠為任何符合SystemC IEEE 1666
    發(fā)表于 08-18 07:25

    Cortex-R52循環(huán)模型用戶指南

    Cortex-R52硬件的以下功能在Cortex-R52循環(huán)模型中完全實現(xiàn): ·支持最多四個CPU的配置。 ·可配置的中斷次數(shù)(32至960,增量為32)。 ·AXI主端口。 ·通過從端口訪問TCM
    發(fā)表于 08-18 06:27

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

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

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

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

    ARM Cortex-R8處理器開拓5G速度需求

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

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

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

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

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

    AD7091R-2 AD7091R-4 AD7091R-8評估軟件

    AD7091R-2 AD7091R-4 AD7091R-8評估軟件
    發(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>評估<b class='flag-5'>軟件</b>

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

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