前言:
硬件平台:X9H
软件版本:PTG4.0
当应用层的 SPI 通讯失败时,需要弄清楚问题出现在哪个环节才能进行下一步动作。以下为 SPI 通讯时应用层到驱动层的代码调用流程。
一、整体架构
SPI 设备驱动:挂载在 SPI 总线上的设备的驱动,根据设备类型的不同有多种多样的驱动
SPI 通用接口:通用的 SPI 操作接口,API 库,SPI 设备驱动和 SPI 控制器驱动之间的纽带
SPI 控制器驱动:芯片内部的 SPI 控制器的驱动,封装了最基础的 SPI 操作接口,直接控制寄存器和中断响应
SPI 寄存器:硬件单元,使用 SPI 控制器驱动文件(kernel/drivers/spi/spi-dw.c)中的接口(dw_spi_show_regs)可以获取相关寄存器的值
SPI 控制器驱动注册时向 SPI 通用接口(spi.c)提供了 spi_controller 的数据结构,这个结构体里封装了对硬件 SPI 的操作函数。
SPI 设备驱动可以通过调用 spi.c 里提供的 API 接口来间接地调用 SPI 控制器驱动的函数。
SPI 控制器驱动和 SPI 设备驱动通过 spi.c 连接,耦合度低,可以随意搭配。

二、应用到驱动的代码调用
以下程序为例分析应用到驱动的代码调用:
应用程序:kernel/tools/spi/spi_test.c ,linux 内核自带的 spi_test 程序
SPI 设备驱动: ke

最低0.47元/天 解锁文章
238

被折叠的 条评论
为什么被折叠?



