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