框图

下图显示了SPI驱动程序框架的3个层级。
1. 框图

以下是对上图中每一层的描述。

用户空间

用户空间层包括使用SPI设备的所有应用程序。在这一层中,用户可以根据他们的特定需求定制他们的SPI设备。

内核空间

内核空间层可分为以下三个部分。
  • SPI设备驱动程序层:

    Linux内核并不提供特定的SPI设备驱动程序,因为SPI上可能连接各种设备。用户必须使用通用的SPI设备驱动程序,该驱动程序只能以同步模式与SPI设备通信。因此,该层只支持一些简单而非需要消耗大量数据的设备。

    在这一层中,我们提供了spidev.c作为标准的SPI驱动程序,而spi-nand.c作为SPI的NAND驱动程序。

  • SPI通用接口封装层:

    为了简化SPI驱动程序的编程,减少驱动程序的耦合,Linux内核为控制器和协议打包封装了一些通用的驱动程序,形成了SPI通用接口封装层。

    在这一层中,我们提供了Linux自带的驱动程序spi.c
  • SPI控制器驱动程序层:

    这一层是我们关注的重点,它将在文档的后面部分中详细介绍。

    在这一层中,我们提供了驱动程序spi-pl022-star5.c

硬件

硬件层是物理设备层。在这一层中,SPI控制器和所连接的SPI设备通过SPI总线与CPU进行通信。