linux驱动 spi 实时性-spi驱动实时性如何实现

问题描述

spi驱动实时性如何实现

linux内核中的spi驱动一般都不考虑实时性,都是将message挂到spi控制器的queue上,然后调用
queue_work或者采用类似方法。

现在有个问题:现在有一款spi接口的芯片,希望对该芯片的spi写操作发下去之后能立即写入该芯片中,而不是需要经过某种调度方法之后才生效,与此同时,要保证其他spi接口芯片能正常工作。

那么就可以从2个方面考虑,修改sdk中spi驱动,或者放弃sdk中spi实现方法,重新做一套接口。

目前我想到的修改sdk的方法就是在将message添加到spi控制器queue的时候判断该消息优先级,如果高,则插入queue链表最前面,因为每次spi控制器从queue上取消息都是取第一个位置上的来处理,处理后就删掉,这样执行该message的等待时间就只有前一条消息的执行时间,理论上说这个时间最多也就是将fifo填满的时间,是us级的。

不知道各位还有没有什么比较好的方法,还请指教!

时间: 2024-08-03 04:28:38

linux驱动 spi 实时性-spi驱动实时性如何实现的相关文章

Linux驱动修炼之道-SPI驱动框架源码分析(上)【转】

转自:http://blog.csdn.net/lanmanck/article/details/6895318 SPI驱动架构,以前用过,不过没这个详细,跟各位一起分享: 来自:http://blog.csdn.net/woshixingaaa/article/details/6574215     SPI协议是一种同步的串行数据连接标准,由摩托罗拉公司命名,可工作于全双工模式.相关通讯设备可工作于m/s模式.主设备发起数据帧,允许多个从设备的存在.每个从设备 有独立的片选信号,SPI一般来说

Linux SPI总线和设备驱动架构之一:系统概述【转】

转自:http://blog.csdn.net/droidphone/article/details/23367051/ 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 硬件结构 工作时序 软件架构 SPI控制器驱动程序 SPI通用接口封装层 SPI协议驱动程序 SPI通用设备驱动程序   SPI是"Serial Peripheral Interface" 的缩写,是一种四线制的同步串行通信接口,用来连接微控制器.传感器.存储设备,SPI设备分为主设备和从设

linux 2.6.36+s3c6410 SPI子系统接口讨论 --添加spi设备节点

下图是安装成功后,sys目录下的主要结构,由于目录非常复杂仅仅列出了主要的结构sys目录下spi子系统结构   接下来将从各struct开始进行分析,struct是构成内核对象的基础,函数是动态的构建和执行的工具.所以梳理脉络就从结构开始. linux下的设备模型包括几个主要的概念 sysfs (dev是用户空间接口,根据sysfs下的class目录由mdev负责建立) bus总线,linux下的设备都是建立在总线上的,platform总线是一个虚拟的总线,所有的的片上设备基本上都接在这个虚拟总

【Linux高级驱动】linux设备驱动模型之平台设备驱动机制【转】

[1:引言: linux字符设备驱动的基本编程流程] 转自:http://www.cnblogs.com/lcw/p/3802579.html1.实现模块加载函数  a.申请主设备号    register_chrdev(major,name,file_operations);  b.创建字符设备cdev,注册字符设备    cdev_alloc cdev_init cdev_add   c.创建设备文件    class_create device_create  d.注册中断    ret

Linux芯片级移植与底层驱动(基于3.7.4内核) 中断控制器

3.中断控制器驱动 在Linux内核中,各个设备驱动可以简单地调用request_irq().enable_irq().disable_irq().local_irq_disable().local_irq_enable()等通用API完成中断申请.使能.禁止等功能.在将Linux移植到新的SoC时,芯片供应商需要提供该部分API的底层支持. local_irq_disable().local_irq_enable()的实现与具体中断控制器无关,对于ARMv6以上的体系架构而言,是直接调用CPS

如何获得Linux系统的内置模块和设备驱动列表

  提问:我想要知道Linux系统中内核内置的模块,以及每个模块有哪些参数.有什么方法可以得到内置模块和设备驱动的列表,以及它们的详细信息呢? 现代Linux内核正在随着时间变化而迅速增长,以支持大量的硬件.文件系统和网络功能.在此期间,"可加载模块(loadable kernel modules,[LKM])"的引入防止内核变得越来越臃肿,以及在不同的环境中灵活地扩展功能及硬件支持,而不必重新构建内核. 最新的Linux发行版的内核只带了相对较小的"内置模块(built-i

《Linux设备驱动开发详解 A》一一1.6 设备驱动Hello World:LED驱动

1.6 设备驱动Hello World:LED驱动 1.6.1 无操作系统时的LED驱动 在嵌入式系统的设计中,LED一般直接由CPU的GPIO(通用可编程I/O)口控制.GPIO一般由两组寄存器控制,即一组控制寄存器和一组数据寄存器.控制寄存器可设置GPIO口的工作方式为输入或者输出.当引脚被设置为输出时,向数据寄存器的对应位写入1和0会分别在引脚上产生高电平和低电平:当引脚设置为输入时,读取数据寄存器的对应位可获得引脚上的电平为高或低. 在本例子中,我们屏蔽具体CPU的差异,假设在GPIO_

《Linux 设备驱动开发详解(第2版)》——1.6 设备驱动Hello World:LED驱动

1.6 设备驱动Hello World:LED驱动 Linux 设备驱动开发详解(第2版)1.6.1 无操作系统时的LED驱动 在嵌入式系统的设计中,LED一般直接由CPU的GPIO(通用可编程I/O口)控制.GPIO一般由两组寄存器控制,即一组控制寄存器和一组数据寄存器.控制寄存器可设置GPIO口的工作方式为输入或是输出.当引脚被设置为输出时,向数据寄存器的对应位写入1和0会分别在引脚上产生高电平和低电平:当引脚设置为输入时,读取数据寄存器的对应位可获得引脚上的电平为高或低. 在本例子中,我们

Linux终端:speedtest_cli检测你的实时带宽速度

Linux终端:speedtest_cli检测你的实时带宽速度 你在家(或者办公室)的上传和下载速度如何?你能保证,你支付费用给ISP的同时得到了等价的回报? 要想测试我们因特网连接的速度,当下存在着一些因特网服务,比如说SpeedTest,这是一种可以通过Web浏览器和手机应用程序浏览的web服务. 现在,你可以很容易地检测你的网速,使用speedtest_cli同样很简单,它是一个使用speedtest.net来测试因特网带宽的命令行界面.通过这种方式,你也可以在没有浏览器或者图形化界面的服

在Debian系的Linux中编译并安装ixgbe驱动的教程_Linux

Intel的10G网卡(比如,82598. 82599. x540)由ixgbe驱动支持.现代的Linux发行版已经带有了ixgbe驱动,通过可加载模块的方式使用.然而,有些情况你希望在你机器上的自己编译安装ixgbe驱动,比如,你想要体验ixbge驱动的最新特性时.同样,内核默认自带的ixgbe驱动中的一个问题是不允许你自定义驱动的参数.如果你想要一个完全定制的ixgbe驱动(比如 RSS.多队列.中断阈值等等),你需要手动从源码编译ixgbe驱动. 这里是如何在Ubuntu.Debian或者