此剧本提供指南、最佳实践、示例和参考
资料,以帮助您将存储在 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 组件可以发现驱动程序的服务 。