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