日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

19-Realm Management Extension (RME)

發(fā)布時(shí)間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 19-Realm Management Extension (RME) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

引流關(guān)鍵詞: 中斷、同步異常、異步異常、irq、fiq、BL1,BL2,BL3,BL31,BL32,BL33,AP_BL1,AP_BL2,AP_BL3,AP_BL31,AP_BL32,AP_BL33,SCP_BL1,SCP_BL2,BL0,BL30, optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、內(nèi)存管理、頁(yè)表…

快速鏈接:
.
👉👉👉 個(gè)人博客筆記導(dǎo)讀目錄(全部) 👈👈👈


[專(zhuān)欄目錄](méi)-ATF/FF-A/specification學(xué)習(xí)

19.領(lǐng)域管理擴(kuò)展(RME)

FEAT_RME(或簡(jiǎn)稱(chēng) RME)是 Armv9-A 擴(kuò)展,是 Arm 機(jī)密計(jì)算架構(gòu) (Arm CCA)的一個(gè)組件。TF-A 從 2.6 版開(kāi)始支持 RME。本章討論了對(duì) TF-A 的更改以支持 RME,并提供有關(guān)如何使用 RME 構(gòu)建和運(yùn)行 TF-A 的說(shuō)明。

19.1. TF-A 中的 RME 支持

下圖顯示了以 TF-A 作為 EL3 固件的 Arm CCA 軟件架構(gòu)。在 Arm CCA 架構(gòu)中,還有兩個(gè)額外的安全狀態(tài)和地址空間:Root和Realm. TF-A 固件在 Root 世界中運(yùn)行。在領(lǐng)域世界中,領(lǐng)域管理監(jiān)視器固件 (RMM) 管理領(lǐng)域 VM 的執(zhí)行以及它們與管理程序的交互。

RME 是支持 Arm CCA 的硬件擴(kuò)展。為了支持 RME,已對(duì) TF-A 進(jìn)行了各種更改。我們將在下面討論這些變化。

19.1.1. 轉(zhuǎn)換表庫(kù)的更改

RME 添加了 Root 和 Realm 物理地址空間。為了支持這一點(diǎn),翻譯 (XLAT) 表庫(kù)中添加了 兩個(gè)新的內(nèi)存類(lèi)型宏MT_ROOT和。這些宏分別用于將內(nèi)存區(qū)域配置為 Root 或 Realm。MT_REALM

注意:只有版本 2 的轉(zhuǎn)換表庫(kù)支持新的內(nèi)存類(lèi)型。

19.1.2. 上下文管理的變化

為 Realm 世界添加了一個(gè)新的 CPU 上下文。現(xiàn)有的 CPU 上下文管理 API可用于管理 Realm 上下文。

19.1.3. 引導(dǎo)流程更改

在典型的 TF-A 引導(dǎo)流程中,BL2 在 Secure-EL1 上運(yùn)行。然而,當(dāng)啟用 RME 時(shí),TF-A 在 EL3 的根世界中運(yùn)行。因此,啟動(dòng)流程被修改為在啟用 RME 時(shí)在 EL3 處運(yùn)行 BL2。除此之外,BL2 在 Realm 物理地址空間中加載 Realm-world 固件 (RMM)。

啟用 RME 時(shí)的引導(dǎo)流程如下所示:

(1)BL1 在 EL3 加載并執(zhí)行 BL2

(2)BL2 加載包含 RMM 的圖像

(3)BL2 將控制權(quán)移交給 BL31

(4)BL31 初始化 SPM(如果啟用了 SPM)

(5)BL31 初始化 RMM

(6)BL31 將控制權(quán)轉(zhuǎn)移到普通世界軟件

19.1.4. 顆粒保護(hù)表 (GPT) 庫(kù)

四個(gè)物理地址空間之間的隔離是由一個(gè)稱(chēng)為粒度保護(hù)檢查 (GPC) 的過(guò)程強(qiáng)制執(zhí)行的,該過(guò)程由 MMU 下游任何地址轉(zhuǎn)換執(zhí)行。GPC 利用根世界中的顆粒保護(hù)表 (GPT) 來(lái)描述每個(gè)頁(yè)面(顆粒)的物理地址空間分配。添加了一個(gè) GPT 庫(kù),該庫(kù)提供了用于初始化 GPT 和在不同物理地址空間之間轉(zhuǎn)換顆粒的 API。有關(guān) GPT 庫(kù)的更多信息,請(qǐng)參見(jiàn) Granule Protection Tables Library一章。

19.1.5。RMM 調(diào)度程序 (RMMD)

RMMD 是一種新的標(biāo)準(zhǔn)運(yùn)行時(shí)服務(wù),用于處理向 Realm 世界的切換。它初始化 RMM 并處理來(lái)自非安全和領(lǐng)域世界的領(lǐng)域管理接口 (RMI) SMC 調(diào)用。

19.1.6。測(cè)試領(lǐng)??域有效負(fù)載 (TRP)

TRP 是在 R-EL2 上運(yùn)行的小型測(cè)試負(fù)載,它實(shí)現(xiàn)了領(lǐng)域管理接口 (RMI) 命令的子集,主要測(cè)試 EL3 固件以及 R-EL2 和 EL3 之間的接口。在啟用 RME 構(gòu)建 TF-A 時(shí),如果未提供 RMM 映像的路徑,則 TF-A 默認(rèn)構(gòu)建 TRP 并將其用作 RMM 映像。

19.2. 使用 RME 構(gòu)建和運(yùn)行 TF-A

本節(jié)介紹如何在啟用 RME 的情況下構(gòu)建和運(yùn)行 TF-A。我們假設(shè)您具備構(gòu)建 TF-A 的所有先決條件。

要啟用 RME,您需要在構(gòu)建 TF-A 時(shí)設(shè)置 ENABLE_RME 構(gòu)建標(biāo)志。目前,該功能僅支持 FVP 平臺(tái)。

以下說(shuō)明向您展示了如何在兩種情況下使用 RME 構(gòu)建和運(yùn)行 TF-A:使用 TF-A 測(cè)試的 TF-A,以及使用鉿和 TF-A 測(cè)試的四世界執(zhí)行。這些說(shuō)明假設(shè)您已經(jīng)獲得了 TF-A。您可以使用以下命令克隆 TF-A。

git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git

要運(yùn)行測(cè)試,您需要一個(gè) FVP 模型。請(qǐng)使用最新版本的FVP_Base_RevC-2xAEMvA模型。

注意: ENABLE_RME 構(gòu)建選項(xiàng)目前是實(shí)驗(yàn)性的。

19.2.1. 使用 TF-A 測(cè)試構(gòu)建 TF-A

使用以下說(shuō)明使用TF-A 測(cè)試作為非安全有效負(fù)載 (BL33) 構(gòu)建 TF-A。

  • 獲取并構(gòu)建 TF-A 測(cè)試
  • git clone https://git.trustedfirmware.org/TF-A/tf-a-tests.git cd tf-a-tests make CROSS_COMPILE=aarch64-none-elf- PLAT=fvp DEBUG=1

    這會(huì)在build/fvp/debug目錄中生成一個(gè) TF-A 測(cè)試二進(jìn)制文件 ( tftf.bin ) 。

  • 構(gòu)建 TF-A
  • cd trusted-firmware-a make CROSS_COMPILE=aarch64-none-elf- \ PLAT=fvp \ ENABLE_RME=1 \ FVP_HW_CONFIG_DTS=fdts/fvp-base-gicv3-psci-1t.dts \ DEBUG=1 \ BL33=<path/to/tftf.bin> \ all fip

    這會(huì)在build/fvp/debug目錄中生成bl1.bin和fip.bin二進(jìn)制文件。上面的命令也構(gòu)建了 TRP。TRP 二進(jìn)制文件打包在fip.bin中。

    19.2.2. 使用鉿和 TF-A 測(cè)試的四世界執(zhí)行

    四世界執(zhí)行涉及每個(gè)安全狀態(tài)的軟件組件:根、安全、領(lǐng)域和非安全。本節(jié)介紹如何構(gòu)建支持四世界的 TF-A。我們使用 TF-A 作為根固件,Hafnium作為安全組件,TRP 作為領(lǐng)域固件,TF-A Tests 作為非安全負(fù)載。

    在構(gòu)建 TF-A 之前,您首先需要構(gòu)建其他軟件組件。您可以在上面找到有關(guān)如何獲取和構(gòu)建 TF-A 測(cè)試的說(shuō)明。

  • 獲得并建造
  • git clone --recurse-submodules https://git.trustedfirmware.org/hafnium/hafnium.git cd hafnium make PROJECT=reference Hafnium 二進(jìn)制文件應(yīng)位于 out/reference/secure_aem_v8a_fvp_clang/hafnium.bin
  • 構(gòu)建 TF-A
  • 在啟用 RME 和 SPM 的情況下構(gòu)建 TF-A。

    make CROSS_COMPILE=aarch64-none-elf- \ PLAT=fvp \ ENABLE_RME=1 \ FVP_HW_CONFIG_DTS=fdts/fvp-base-gicv3-psci-1t.dts \ SPD=spmd \ SPMD_SPM_AT_SEL2=1 \ BRANCH_PROTECTION=1 \ CTX_INCLUDE_PAUTH_REGS=1 \ DEBUG=1 \ SP_LAYOUT_FILE=<path/to/tf-a-tests>/build/fvp/debug/sp_layout.json> \ BL32=<path/to/hafnium.bin> \ BL33=<path/to/tftf.bin> \ all fip

    19.2.3. 運(yùn)行測(cè)試

    使用以下命令在 FVP 上運(yùn)行測(cè)試。TF-A 測(cè)試應(yīng)該啟動(dòng)并運(yùn)行默認(rèn)測(cè)試,包括 RME 測(cè)試。

    FVP_Base_RevC-2xAEMvA \ -C bp.flashloader0.fname=<path/to/fip.bin> \ -C bp.secureflashloader.fname=<path/to/bl1.bin> \ -C bp.refcounter.non_arch_start_at_default=1 \ -C bp.refcounter.use_real_time=0 \ -C bp.ve_sysregs.exit_on_shutdown=1 \ -C cache_state_modelled=1 \ -C cluster0.NUM_CORES=4 \ -C cluster0.PA_SIZE=48 \ -C cluster0.ecv_support_level=2 \ -C cluster0.gicv3.cpuintf-mmap-access-level=2 \ -C cluster0.gicv3.without-DS-support=1 \ -C cluster0.gicv4.mask-virtual-interrupt=1 \ -C cluster0.has_arm_v8-6=1 \ -C cluster0.has_branch_target_exception=1 \ -C cluster0.has_rme=1 \ -C cluster0.has_rndr=1 \ -C cluster0.has_amu=1 \ -C cluster0.has_v8_7_pmu_extension=2 \ -C cluster0.max_32bit_el=-1 \ -C cluster0.restriction_on_speculative_execution=2 \ -C cluster0.restriction_on_speculative_execution_aarch32=2 \ -C cluster1.NUM_CORES=4 \ -C cluster1.PA_SIZE=48 \ -C cluster1.ecv_support_level=2 \ -C cluster1.gicv3.cpuintf-mmap-access-level=2 \ -C cluster1.gicv3.without-DS-support=1 \ -C cluster1.gicv4.mask-virtual-interrupt=1 \ -C cluster1.has_arm_v8-6=1 \ -C cluster1.has_branch_target_exception=1 \ -C cluster1.has_rme=1 \ -C cluster1.has_rndr=1 \ -C cluster1.has_amu=1 \ -C cluster1.has_v8_7_pmu_extension=2 \ -C cluster1.max_32bit_el=-1 \ -C cluster1.restriction_on_speculative_execution=2 \ -C cluster1.restriction_on_speculative_execution_aarch32=2 \ -C pci.pci_smmuv3.mmu.SMMU_AIDR=2 \ -C pci.pci_smmuv3.mmu.SMMU_IDR0=0x0046123B \ -C pci.pci_smmuv3.mmu.SMMU_IDR1=0x00600002 \ -C pci.pci_smmuv3.mmu.SMMU_IDR3=0x1714 \ -C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0475 \ -C pci.pci_smmuv3.mmu.SMMU_S_IDR1=0xA0000002 \ -C pci.pci_smmuv3.mmu.SMMU_S_IDR2=0 \ -C pci.pci_smmuv3.mmu.SMMU_S_IDR3=0 \ -C bp.pl011_uart0.out_file=uart0.log \ -C bp.pl011_uart1.out_file=uart1.log \ -C bp.pl011_uart2.out_file=uart2.log \ -C pctl.startup=0.0.0.0 \ -Q 1000 \ "$@"

    uart0輸出的底部應(yīng)如下所示。

    ...> Test suite 'FF-A Interrupt'Passed > Test suite 'SMMUv3 tests'Passed > Test suite 'PMU Leakage'Passed > Test suite 'DebugFS'Passed > Test suite 'Realm payload tests'Passed ...

    總結(jié)

    以上是生活随笔為你收集整理的19-Realm Management Extension (RME)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。