1. 为什么我们需要这个框架?
SPI总线控制器(drivers/SPI/)只处理字节流;总线控制器的操作与所连接的特定设备无关。但是,有些控制器(如飞思卡尔的QuadSPI控制器)不能轻松处理任意字节流,而是专门为SPI NOR设计的。
特别是,飞思卡尔的QuadSPI控制器必须知道NOR命令才能找到正确的LUT序列。不幸的是,SPI子系统没有操作码、地址或数据有效载荷的概念;SPI控制器只知道发送或接收字节(Tx和Rx)。因此,我们必须定义一个新的分层方案,在该方案下,控制器驱动程序知道SPI NOR协议的操作码、寻址和其他细节。
2. 框架如何工作?
这个框架只是在MTD和SPI总线驱动程序之间添加了一个新的层。有了这个新层,SPI NOR控制器驱动程序不再依赖于m25p80代码。
在此框架之前,该层类似于:
在此框架之后,该层类似于:
使用SPI NOR控制器驱动程序(飞思卡尔QuadSPI),它看起来像:
3. 驾驶员如何使用该框架?
主要API是spi_或_scan()。在调用钩子之前,驱动程序应该初始化spi_nor{}的必要字段。请参阅驱动程序/mtd/spi-nor/spi-nor.c。当您想要为SPI NOR控制器编写新的驱动程序时,请参考fsl-quadspi.c。
参考:Documentation\mtd\spi-nor.txt