本手册提供了指南、最佳实践、示例和参考资料,可帮助您将存储在 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 设备可以使用包含驱动程序的产品映像进行刷写。
- 驱动程序通过了所有现有的单元测试和集成测试。
驾驶员迁移手册
本手册旨在以线性方式引导您完成迁移任务,这些任务分为以下两个阶段:
- 从 DFv1 迁移到 DFv2:将驱动程序的旧版 DDK 接口和其他服务更新为 DFv2。
- 从 Banjo 迁移到 FIDL:将驱动程序使用的 Banjo 协议更新为 FIDL,以完成迁移。
不过,请注意,根据驱动程序的功能或设置,您可能需要完成本手册中未涵盖的其他任务。
扩展程序
以下指南旨在支持之前在手册中缺失的任务:
- 在 DFv2 驱动程序中设置兼容设备服务器:在 DFv2 驱动程序中设置兼容设备服务器,并将其用于与 DFv1 驱动程序通信。
- 在 DFv2 驱动程序中连接和提供 Banjo 协议:在 DFv2 驱动程序中提供 Banjo 协议,并通过 DFv1 子驱动程序连接到其 Banjo 服务器。
- 在 DFv2 驱动程序中设置服务:在 DFv2 驱动程序中设置服务,以便系统中的其他 Fuchsia 组件可以发现驱动程序的服务。