框图
下图显示了SPI驱动程序框架的3个层级。 图 1. 框图
![](../Image/JH7110_SDK/Block_Diagram_SPI.png)
以下是对上图中每一层的描述。
用户空间
用户空间层包括使用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进行通信。