SPI调试指南
SPI硬件支持
S100 Acore支持2路SPI,且SPI0,SPI1只能做SPI Master。
软件构架
如上图为SPI软件架构图,从下到上依次可以分为硬件IP层,内核层和用户空间层,下面依次对各层进行介绍。
- 硬件IP层:该层为SPI硬件层。
- 内核层:又可以细分为3层。
- spi driver层:主要实现对SPI硬件IP的操作,另外还实现了spi framework定义的接口。
- spi framework层:可以理解为spi driver的适配层,对下层定义了一组driver层需要实现的接口,对上提供了通用接口屏蔽了硬件细节。
- spi char device层:为用户空间提供节点,方便用户空间与内核空间进行数据交换。目前使用kernel自带的spidev字符设备。
- app层:为各种应用程序,这些应用程序通过调用字符设备驱动达到与内核空间数据交换的目的。
代码路径
Hobot SPI 协议代码
hobot spi驱动相关代码都放在 $project/hobot-drivers/spi 目录下
oops@tiger$ tree . -L 1
├── Kconfig # Kconfig相关
├── README.md
└──spi_drv # spi driver相关
$project/hobot-drivers/spi/spi_drv 目录说明
oops@tiger$ tree . -L 1
├── Makefile
├── spi-dw.c # spi驱动核心代码
├── spi-dw.h
├── spi-dw-mmio.c # spi驱动mmio代码
└── spi-dw-mmio-dma.c # spi驱动dma代码
Linux SPI 框架代码
Linux spi协议相关代码都放在 $project/kernel/drivers/spi 目录下
oops@tiger$ tree kernel/drivers/spi/
drivers/spi/
├── spi.c # spi框架代码
oops@tiger$