本手冊提供指南、最佳做法、範例和參考資料,協助您將現有的舊版 DFv1 驅動程式 (儲存在 Fuchsia 來源存放區 (fuchsia.git
) 中) 遷移至新的驅動程式架構 (DFv2)。
事前準備
開始進行驅動程式庫遷移作業前,請先詳閱 DFv2 相關的重要概念,並熟悉 DFv1 驅動程式庫的單元測試和整合測試。
DFv1 和 DFv2 的主要差異
DFv2 可讓 Fuchsia 驅動程式成為完全的使用者空間元件。如同其他 Fuchsia 元件,DFv2 驅動程式庫會向系統中的其他元件和驅動程式公開及接收 FIDL 功能。
請注意 DFv1 和 DFv2 之間的下列主要差異:
DFv1:驅動程式不是元件。Banjo 通訊協定用於驅動程式庫之間的通訊。驅動程式主機介面或 DDK (Driver Development Kit) 包裝函式可用於管理驅動程式的生命週期。
DFv2:驅動程式是元件。FIDL 可用於所有通訊,包括駕駛員和非駕駛員之間的通訊。驅動程式庫架構會管理驅動程式的生命週期。
詳情請參閱「DFv1 與 DFv2 的比較」。
預期結果
以下是完成 DFv2 遷移後,驅動程式預期的狀態:
- 您可以使用 DFv2 驅動程式管理工具註冊驅動程式。
- 驅動程式可以繫結至系統中的裝置節點。
- 系統中的其他 Fuchsia 元件和驅動程式可以使用驅動程式庫的功能。
- Fuchsia 裝置可以透過含有驅動程式庫的產品映像檔進行刷新。
- 此驅動程式庫會通過所有現有的單元測試和整合測試。
驅動程式遷移教戰手冊
本手冊旨在以線性方式引導您完成遷移作業,並分為以下兩個階段:
- 從 DFv1 遷移至 DFv2:將驅動程式庫的舊版 DDK 介面和其他服務更新為 DFv2。
- 從 Banjo 遷移至 FIDL:將驅動程式庫使用的 Banjo 通訊協定更新為 FIDL,即可完成遷移。
不過請注意,視驅動程式庫的功能或設定而定,您可能需要完成本手冊未涵蓋的其他工作。
擴充功能
我們新增了下列指南,以支援先前在 Playbook 中缺少的工作:
- 在 DFv2 驅動程式中設定相容性裝置伺服器:在 DFv2 驅動程式庫中設定相容性裝置伺服器,並用於與 DFv1 驅動程式通訊。
- 在 DFv2 驅動程式中連線及提供 Banjo 通訊協定:在 DFv2 驅動程式庫中提供 Banjo 通訊協定,並從 DFv1 子項驅動程式庫連線至其 Banjo 伺服器。
- 在 DFv2 驅動程式中設定服務:在 DFv2 驅動程式中設定服務,讓系統中的其他 Fuchsia 元件能夠偵測到驅動程式庫的服務。