从 DFv1 迁移到 DFv2 驱动程序

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

前期准备

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

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

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

  • DFv2:驱动程序是组件。FIDL 用于所有通信,包括驱动程序和非驱动程序之间的通信。驱动程序框架可管理驱动程序的生命周期。(如需了解详情,请参阅 DFv1 和 DFv2 比较。)

下面列出了完成向 DFv2 的迁移后驱动程序的预期状况:

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

在开始迁移驱动程序之前,请先熟悉驱动程序的单元测试和集成测试。

驱动程序迁移的两个阶段

当您准备好将 DFv1 驱动程序迁移到 DFv2 时,本手册可帮助您以线性方式完成迁移任务。但请注意,根据驾驶员的功能或设置,您可能需要处理本指南未涵盖的其他任务。

从 DFv1 到 DFv2 的驱动程序迁移可分为两个阶段:

  1. 从 DFv1 迁移到 DFv2
  2. 从 Banjo 迁移到 FIDL

扩展程序

我们添加了以下指南,以支持以前在上述迁移手册中标识为缺失的任务: