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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

04-Debug FS

發(fā)布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 04-Debug FS 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

引流關(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)文件的信息(類型、模式、大小……)。
int open(const char *name, int flags); int close(int fd); int read(int fd, void *buf, int n); int write(int fd, void *buf, int n); int seek(int fd, long off, int whence); int stat(char *path, dir_t *dir);

Specific primitives:

  • mount():在驅(qū)動程序和規(guī)范之間創(chuàng)建鏈接。
  • create():在特定位置創(chuàng)建文件。
  • bind():將一個目錄的內(nèi)容暴露給另一個目錄。
int mount(char *srv, char *mnt, char *spec); int create(const char *name, int flags); int bind(char *path, char *where);

當(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)容,希望文章能夠幫你解決所遇到的問題。

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