06-Firmware Configuration Framework
引流關鍵詞: 中斷、同步異常、異步異常、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、安全、內存管理、頁表…
快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈
[專欄目錄]-ATF/FF-A/specification學習
6.固件配置框架?
本文檔提供了FCONF框架的概述。
6.1。介紹?
固件配置框架 ( FCONF ) 是平臺特定數據的抽象層,允許查詢“屬性”并檢索值,而請求實體不知道使用什么后備存儲來保存數據。
它用于連接提供特定平臺數據的新舊方式。今天,像信任鏈這樣的信息保存在幾個嵌套的平臺定義表中。將來,它可能會作為設備 blob 的一部分提供,以及有關要加載的圖像的其余信息。引入此抽象層將使遷移更容易,并將保留不能/不想使用設備樹的平臺的功能。
6.2. 訪問屬性?
FCONF中定義的屬性圍繞命名空間和子命名空間進行分組:abproperty。示例命名空間可以是:
-
( TBBR ) 信任鏈數據:tbbr.cot.trusted_boot_fw_cert
-
( TBBR ) 動態配置信息:tbbr.dyn_config.disable_auth
-
Arm io 策略:arm.io_policies.bl2_image
-
GICv3 屬性:hw_config.gicv3_config.gicr_base
可以使用FCONF_GET_PROPERTY(a,b,property)宏訪問屬性。
6.3. 定義屬性?
構成FCONF的屬性必須存儲在 C 結構中。如果屬性來自不同的后端源,例如設備樹,則平臺必須提供一個populate()函數,該函數本質上捕獲屬性并將它們存儲到相應的基于FCONF的 C 結構中。
這樣的populate()功能通常是特定于平臺的,并且與特定的后端源相關聯。例如,從 HW_CONFIG 設備樹中捕獲平臺硬件拓撲的填充器函數。因此,每個populate()函數都必須使用特定的 config_type標識符進行注冊。它廣泛地表示配置屬性的邏輯分組,通常是設備樹文件。
例子:
-
FW_CONFIG:其他 DTB 的基地址、最大尺寸和圖像 id 等相關的屬性。
-
TB_FW:與可信固件相關的屬性,例如 IO 策略、mbedtls 堆信息等。
-
HW_CONFIG:與 SoC 硬件配置相關的屬性,例如拓撲、GIC 控制器、PSCI 掛鉤、CPU ID 等。
因此,populate()必須使用宏將回調注冊到 ( FCONF ) 框架FCONF_REGISTER_POPULATOR()。這確保了該函數將fconf_populate()在初始化期間在通用函數內部被調用。
int fconf_populate_topology(uintptr_t config) {/* read hw config dtb and fill soc_topology struct */ }FCONF_REGISTER_POPULATOR(HW_CONFIG, topology, fconf_populate_topology);
然后,必須提供一個包裝器來匹配FCONF_GET_PROPERTY()宏:
這個二級包裝器可用于將 重新映射FCONF_GET_PROPERTY()到任何適當的位置:結構、數組、函數等。
為確保對屬性的良好解釋,本文檔必須解釋如何為特定后端描述屬性。有關更多信息和示例,請參閱 屬性綁定信息部分。
6.4. 加載屬性設備樹
fconf_load_config(image_id)必須調用以加載包含屬性值的 fw_config 和 tb_fw_config 設備樹。這必須在 io 層初始化后完成,因為DTB存儲在外部設備 (FIP) 上。
6.5。填充屬性
一旦有效的設備樹可用,該fconf_populate(config)函數可用于使用來自配置DTB的數據填充 C 數據結構。此函數將調用所有populate()已注冊的回調,FCONF_REGISTER_POPULATOR()如上所述。
6.6. 命名空間指南?
如上所述,屬性是圍繞命名空間和子命名空間進行邏輯分組的。添加新屬性/命名空間時應考慮以下概念。該框架區分了兩種類型的屬性:
-
公共代碼中使用的屬性。
-
在平臺特定代碼中使用的屬性。
第一類適用于作為固件一部分并跨多個平臺共享的屬性。它們應該可以全局訪問并在lib/fconf目錄中定義。必須選擇命名空間以反映抽象的特征/數據。
例子:
-
TBBR相關屬性:tbbr.cot.bl2_id
-
動態配置信息:dyn_cfg.dtb_info.hw_config_id
第二類應該代表框架內定義的大多數屬性:平臺特定屬性。它們必須只能在平臺 API 中訪問,并且只能在平臺范圍內定義。命名空間必須包含定義的屬性所屬的平臺名稱。
例子:
- Arm io 框架:arm.io_policies.bl31_id
6.7. 屬性綁定信息?
6.7.1. FCONF 屬性的 DTB 綁定
6.7.2. 活動監視器單元 (AMU) 綁定
6.7.3. 最大功率緩解機制 (MPMM) 綁定
總結
以上是生活随笔為你收集整理的06-Firmware Configuration Framework的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 05-Exception Handlin
- 下一篇: 07- Firmware Update