NuttX supports a variety of device drivers, which can be broadly divided in three classes:
Device driver support depends on the in-memory, pseudo file system that is enabled by default.
Lower-half and upper-half
Drivers in NuttX generally work in two distinct layers:
An upper half which registers itself to NuttX using a call such as
register_blockdriver()and implements the corresponding high-level interface (read, write, close, etc.). implements the interface. This upper half calls into the lower half via callbacks.
A “lower half” which is typically hardware-specific. This is usually implemented at the architecture or board level.