Linux系统SPI驱动学习笔记(二)

转载 2016年08月30日 14:05:47

五. SPI驱动的软件架构

在内核的SPI驱动的软件架构中,进行了合理的分层和抽象,如下图所示:


SPI控制器驱动程序

SPI控制器不用关心设备的具体功能,它只负责把上层协议驱动准备好的数据按SPI总线的时序要求发送给SPI设备,同时把从设备收到的数据返回给上层的协议驱动,因此,内核把SPI控制器的驱动程序独立出来。SPI控制器驱动负责控制具体的控制器硬件,诸如DMA和中断操作等等,因为多个上层的协议驱动可能会通过控制器请求数据传输操作,所以,SPI控制器驱动同时也要负责对这些请求进行队列管理,保证先进先出的原则。

SPI通用接口封装层

为了简化SPI驱动程序的编程工作,同时也为了降低协议驱动程序和控制器驱动程序的耦合程度,内核把控制器驱动和协议驱动的一些通用操作封装成标准的接口,加上一些通用的逻辑处理操作,组成了SPI通用接口封装层。这样的好处是,对于控制器驱动程序,只要实现标准的接口回调API,并把它注册到通用接口层即可,无需直接和协议层驱动程序进行交互。而对于协议层驱动来说,只需通过通用接口层提供的API即可完成设备和驱动的注册,并通过通用接口层的API完成数据的传输,无需关注SPI控制器驱动的实现细节。

SPI协议驱动程序

上面我们提到,控制器驱动程序并不清楚和关注设备的具体功能,SPI设备的具体功能是由SPI协议驱动程序完成的,SPI协议驱动程序了解设备的功能和通信数据的协议格式。向下,协议驱动通过通用接口层和控制器交换数据,向上,协议驱动通常会根据设备具体的功能和内核的其它子系统进行交互,例如,和MTD层交互以便把SPI接口的存储设备实现为某个文件系统,和TTY子系统交互把SPI设备实现为一个TTY设备,和网络子系统交互以便把一个SPI设备实现为一个网络设备,等等。当然,如果是一个专有的SPI设备,我们也可以按设备的协议要求,实现自己的专有协议驱动。

SPI通用设备驱动程序

有时候,考虑到连接在SPI控制器上的设备的可变性,在内核没有配备相应的协议驱动程序,对于这种情况,内核为我们准备了通用的SPI设备驱动程序,该通用设备驱动程序向用户空间提供了控制SPI控制的控制接口,具体的协议控制和数据传输工作交由用户空间根据具体的设备来完成,在这种方式中,只能采用同步的方式和SPI设备进行通信,所以通常用于一些数据量较少的简单SPI设备。

个人理解,对应的SPI控制器驱动程序即spi-imx.c,SPI通过接口封装层即spi.c,SPI协议驱动程序类似摄像头驱动,SPI通用设备驱动程序是spidev.c。

spi协议及工作原理分析

说明.文章摘自:SPI协议及其工作原理浅析 http://bbs.chinaunix.net/thread-1916003-1-1.html 一、概述.      SPI, Seria...
  • yuzeze
  • yuzeze
  • 2016年04月15日 11:12
  • 1522

SPI总线 通俗易懂讲解

SPI总线 通俗易懂讲解

Linux系统SPI驱动学习笔记(二)

五. SPI驱动的软件架构 在内核的SPI驱动的软件架构中,进行了合理的分层和抽象,如下图所示: SPI控制器驱动程序 SPI控制器不用关心设备的具体功能,它...

Linux系统SPI驱动学习笔记(二)

五. SPI驱动的软件架构 在内核的SPI驱动的软件架构中,进行了合理的分层和抽象,如下图所示: SPI控制器驱动程序 SPI控制器不用关...

Linux系统SPI驱动学习笔记(一)

SPI是"Serial Peripheral Interface" 的缩写,是一种四线制的同步串行通信接口,用来连接微控制器、传感器、存储设备,SPI设备分为主设备和从设备两种,用于通信和控制的四根线...

Linux系统SPI驱动学习笔记(一)

SPI总线是一种比较通用的数据传输总线,遵从主从模式,由主设备发起通讯请求,通常工作于全双工模式,由4条数据时钟线组成。...

LINUX系统编程学习笔记

  • 2011年11月30日 16:19
  • 420KB
  • 下载

Linux系统自带SPI接口驱动自测

本文主要验证linux-imx_share\Documentation\spi目录下spidev_test.c的测试例程,能否正常控制SPI接口。...

Linux系统自带spi驱动加载及应用程序编写方法详解

硬件平台:飞思卡尔IMX6, 内核版本:kernel3.0.35 Linux系统中,和I2C一样,SPI也有系统自带的设备驱动程序,位于源码目录下drivers/spi/s...

linux系统管理操作指令学习笔记(二)管理好文件

对Linux操作系统完全是小白一枚,最近在跟着视频学习linux系统法管理的操作指令,特此记录,一方面方便自己以后的查询,另一方面也希望能给大家提供一些资料。另外,在我的资源点击打开链接里有鸟哥的li...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux系统SPI驱动学习笔记(二)
举报原因:
原因补充:

(最多只允许输入30个字)