驱动程序提供软件接口,用于与嵌入在系统中或连接到系统的硬件(或虚拟)设备进行通信。在 Fuchsia 中,驱动程序是系统组件拓扑中运行的用户空间组件,而驱动程序框架基于组件框架提供的概念和工具构建而成。驱动程序使用功能和通过 FIDL 建立的连接与其他驱动程序组件以及非驱动程序组件进行交互。
在此 Codelab 中,您将构建一个 Fuchsia 驱动程序组件,以内置于 QEMU(Fuchsia 模拟器的基础)中的名为 edu
的虚拟设备为目标平台。edu
是一个教育设备,用于编写计算给定整数阶乘的驱动程序。您还将探索如何使用 Fuchsia SDK 提供的工具与驱动程序交互。
学习内容
- 发现设备节点并绑定到该节点
- 注册和加载新的设备驱动程序
- 与正在运行的设备驱动程序交互
前提条件
- 一台搭载 Linux 的 x64 机器
- 使用 SDK 驱动程序示例代码库检出配置的 Fuchsia SDK 环境
- 适用于
core.x64
的模拟器产品软件包
准备工作
在前置条件部分,您在 fuchsia-drivers/
目录中创建了一个 Bazel 工作区。这是包含 WORKSPACE.bazel
文件的目录,表示工作区的根目录。在整个 Codelab 中,此根目录都使用 //
前缀进行引用。例如,路径 //fuchsia-codelab
表示 Bazel 工作区的根目录中名为 fuchsia-codelab
的目录。
Bazel 工作区还预配置了 Fuchsia SDK 在 tools/
目录中提供的开发工具。本 Codelab 假定您是在 Bazel 工作区中使用 SDK 工具,因此请考虑更新 PATH
以添加 SDK 的 tools/
目录,或使用以下命令创建临时别名:
alias ffx=tools/ffx
alias bazel=tools/bazel