从 DFv1 迁移到 DFv2 驱动程序

本手册提供了指南、最佳实践、示例和参考资料,可帮助您将存储在 Fuchsia 源代码库 (fuchsia.git) 中的现有旧版 DFv1 驱动程序迁移到新的驱动程序框架 (DFv2)。

前期准备

在开始进行驱动程序迁移之前,请先查看与 DFv2 相关的一些关键概念,并熟悉 DFv1 驱动程序的单元测试和集成测试。

DFv1 和 DFv2 之间的主要区别

DFv2 支持将 Fuchsia 驱动程序完全作为用户空间组件。与任何其他 Fuchsia 组件一样,DFv2 驱动程序会向系统中的其他组件和驱动程序公开和接收 FIDL 功能。

请注意 DFv1 和 DFv2 之间的以下主要区别:

  • DFv1:驱动程序不是组件。Banjo 协议用于驱动程序之间的通信。驱动程序主机接口或 DDK(驱动程序开发套件)封装容器用于管理驱动程序的生命周期。

  • DFv2:驱动程序是组件。FIDL 用于所有通信,包括驱动程序与非驱动程序之间的通信。驱动程序框架会管理驱动程序的生命周期。

如需了解详情,请参阅 DFv1 与 DFv2 的比较

预期结果

以下是完成 DFv2 迁移后,驱动程序的预期状态列表:

  • 您可以通过 DFv2 驱动程序管理器注册驱动程序。
  • 驱动程序可以绑定到系统中的设备节点
  • 系统中的其他 Fuchsia 组件和驱动程序可以使用该驱动程序的功能。
  • Fuchsia 设备可以使用包含驱动程序的产品映像进行刷写。
  • 驱动程序通过了所有现有的单元测试和集成测试。

驾驶员迁移手册

本手册旨在以线性方式引导您完成迁移任务,这些任务分为以下两个阶段:

  1. 从 DFv1 迁移到 DFv2:将驱动程序的旧版 DDK 接口和其他服务更新为 DFv2。
  2. 从 Banjo 迁移到 FIDL:将驱动程序使用的 Banjo 协议更新为 FIDL,以完成迁移。

不过,请注意,根据驱动程序的功能或设置,您可能需要完成本手册中未涵盖的其他任务。

扩展程序

以下指南旨在支持之前在手册中缺失的任务: