04-Debug FS
引流關鍵詞: 中斷、同步異常、異步異常、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學習
4.Debug FS
4.1。概述
DebugFS功能主要旨在將固件調試數據暴露給更高的軟件層,例如非安全組件。這樣的組件可以是 TFTF 測試負載或 Linux 內核模塊。
4.2. 虛擬文件系統
核心功能在于基于 9p 文件服務器接口的虛擬文件系統(關于 Plan 9 內核源和 Linux 9p 遠程文件系統協議的注釋)。該實現允許公開虛擬文件、固件驅動程序和文件 blob。
4.2.1。命名空間
暴露了兩個命名空間:
-
用作驅動程序的根(例如 #t0 是第一個 uart)
-
/ 用作虛擬“文件”的根目錄(例如 /fip 或 /dev/uart)
4.2.2. 9p interface
相關的原語是:
Unix-like:
- open():創建一個文件描述符,作為作為參數傳遞的文件的句柄。
- close():關閉由 open() 創建的文件描述符。
- read():從文件讀取到緩沖區。
- write():從緩沖區寫入文件。
- seek():將文件描述符的文件位置指示器設置為相對或絕對偏移量。
- stat():獲取有關文件的信息(類型、模式、大小……)。
Specific primitives:
- mount():在驅動程序和規范之間創建鏈接。
- create():在特定位置創建文件。
- bind():將一個目錄的內容暴露給另一個目錄。
當構建選項選擇此接口時,該接口嵌入到 BL31 運行時有效負載中。接口多路復用驅動程序或模擬“文件”:
-
調試數據可以劃分為不同的虛擬文件,例如通過一個文件公開 PMF 測量值,通過另一個文件公開內部固件狀態計數器。
-
這允許直接訪問固件驅動程序,主要用于測試目的(例如,非特權/非安全層可能無法訪問的硬件設備,或者在 NS 端不存在支持)。
4.3. SMC接口
與 BL31 中的 9p 層的通信是通過 SMC 管道(SMC 調用約定)使用特定的 SiP 功能 ID 進行的。NS 共享緩沖區用于傳遞路徑字符串參數,或者例如在讀取操作上交換數據。有關 SMC 接口的說明,請參閱ARM SiP 服務 。
4.4. 安全注意事項
-
由于公開數據的性質,該功能被認為是實驗性的,重要的是只能在調試版本中使用。
-
幾個原語暗示了字符串操作和字符串格式的使用。
-
特別注意共享緩沖區以避免 TOCTOU 攻擊。
4.5. 限制
- 為了設置共享緩沖區,使用接口的組件需要分配一個物理頁框并傳輸其地址。
- 為了映射共享緩沖區,BL31 需要啟用動態 xlat 表選項。
- 數據交換受共享緩沖區長度的限制。一個大的讀取操作可能會被拆分成多個較小塊的讀取操作。
- 在并發訪問時,在 BL31 服務中實現了一個自旋鎖,以保護內部工作緩沖區和重新進入文件系統層。
- 請注意,如果固件公開的物理設備驅動程序可能與更高級別的操作系統發生沖突,如果后者為同一物理設備實現自己的驅動程序。
4.6. 應用
SMC 接口可從 NS 環境訪問,即:
- 在 NS-EL2 上運行的測試負載、引導加載程序或管理程序
- 在 NS-EL1 上運行的 Linux 內核驅動程序
- 通過內核驅動程序的 Linux 用戶空間應用程序
總結
以上是生活随笔為你收集整理的04-Debug FS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 03-Arm SiP Services
- 下一篇: 05-Exception Handlin