从 DFv1 迁移到 DFv2 驱动程序

此剧本提供指南、最佳实践、示例和参考 资料,以帮助您将存储在 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 设备可以使用包含驱动程序的产品映像进行刷写。
  • 驱动程序通过所有现有的单元测试和集成测试。

驱动程序迁移剧本

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

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

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

扩展程序

添加了以下指南来支持剧本中之前缺失的任务: