Drivers provide software interfaces for communicating with hardware (or virtual) devices that are embedded in or connected to a system. In Fuchsia, drivers are user-space components. Like any other Fuchsia component, a driver is software that exposes and receives FIDL capabilities to and from other components in the system. Using these FIDL calls, Fuchsia components interact with drivers, which are bound to specific devices in the system.
Similar to Fuchsia’s component framework, which manages Fuchsia components, the driver framework manages the lifecycle and topology of all devices (known as nodes) and drivers in a Fuchsia system.
Table of contents
- Driver framework (DFv2): Explains the core concepts and structure of Fuchsia's new driver framework.
- Comparison between DFv1 and DFv2: Compares the two versions of Fuchsia's driver framework.
- Drivers and nodes: Explains the fundamental concepts of nodes, which are the building blocks in DFv2.
- Driver binding: Explains the process of how the driver manager matches and binds a driver to a node.
- Driver communication: Explains different communication methods: driver-to-driver and non-driver-to-driver.
- Mapping a device's memory in a driver: Explains how a device's memory region is mapped in a driver host.
- Driver dispatcher and threads: Explains how dispatchers allow drivers to schedule asynchronous work on threads.
- Driver dispatcher performance: Discusses performance aspects of a dispatcher's inlined and non-inlined calls.
To learn more about creating DFv2 drivers, see the DFv2 driver development section.