转自http://blog.csdn.net/tsy20100200/article/details/47101661

最近由于工作的需要,接触了Linux iio子系统,对于这个目录其实以前是很少接触,接下了对 Linux iio 子系统进行分析。

1、首先 iio子系统在内核树中位置:drivers/staging/iio

详细的iio子系统说明文档位置:drivers/staging/iio/Documentation(文档是个好东西,详细阅读文档,有利于更深层次的理解iio子系统)

2、简介:

iiO子系统全称是 Industrial I/O subsystem(工业 I/O 子系统),此子系统的目的在于填补那些分类时处在hwmon(硬件监视器)和输入子系统之间的设备类型。在某些情况下,iio和hwmon、Input之间的相当大的重叠。

3、iio目录结构架构:

iio

├── accel

├── adc

├── addac

├── cdc

├── dac

├── dds

├── Documentation

│   └── dac

├── gyro

├── impedance-analyzer

├── imu

│   └── mpu

│       └── inv_test

├── light

├── magnetometer

├── meter

├── pressure

├── resolver

└── trigger

4、iio 目录结构说明:

进入相应目录,里面都有相关IC的驱动,网上查阅资料,对iio子系统做如下简要的说明:

accel :

该文件夹下是一些加速度传感器,例如:adis16201、kxsd9、lis3l02dq、sca3000等

adc :

该文件夹下是一些模数转换器,将模拟信号转换成数字信号,例如:ad7192、adt7310(数字温度传感器)等

addac :

Temperature Sensor 温度传感器,例如:adt7316

cdc:

电容数字转换,例如:ad7150

dac :

一些数模转换器,将数字信号转换成模拟信号,例如:ad5064、ad5791(单通道、20位、无缓冲电压输出DAC)等

dds:

频率扫描仪,频率合成器,例如:ad5930、ad9951等

Documentation :

iio子系统相关文档说明,相关说明比较详细,说明文档是个好东西……

gyro:

陀螺仪,例如:adis16060(角速度陀螺仪)、adis16260(数字陀螺仪)、adxrs450(角速率陀螺仪)等

impedance-analyzer :

阻抗测量芯片,只有一个芯片ad5933

imu:

惯性陀螺仪、磁力计、加速度计,例如:adis16400,其中的mpu子目录有些重要的传感器(目前工作中正在使用)

imu

└── mpu:有MPU3050(三轴)、MPU6050(六轴)、MPU9150(整合了MPU6050及AK8975电子罗盘)、MPU6515等

light :

光学传感器,例如:isl29018、tsl2563等

magnetometer :

地磁传感器、磁力计传感器,例如:hmc5843、ak8975

meter :

有功功率和电能计量,例如:ade7759(电能计量数据转换器)、ade7753等

pressure :

压力传感器,例如:bmp182

resolver :

旋转变压器/数字转换器,例如:ad2s1200(旋转变压器输出的模拟信号转化为数字信号)等

trigger:

触发器

5、iio子系统架构图:

6、iio子系统功能:

(1)、设备注册和处理

(2)、通过虚拟文件系统(VFS)轮训访问设备

(3)、chrdevs事件

chrdevs事件包括阈值检测器,自由下落检测器和更复杂的动作检测。chrdevs事件的输入,iio为底层硬件触发与用户空间通行提供了通道,chrdevs事件本身已经不仅仅是一个事件的代码和一个时间戳,与chrdevs事件相关联的任何数据必须通过轮询访问。

(4)、硬件环缓冲支持

现在很多传感器芯片上本身就包括 fifo / ring 缓冲,通过sensor自带 fifo / ring 缓冲,可以大大的减少主芯片处理器的负担。

(6)、触发和软件缓冲区(kfifo)支持

在许多数据分析中,触发和软件缓冲区(kfifo)支持就显得非常有用,能够更加高效的捕捉到外部信号数据。这些触发包括(数据准备信号、GPIO线连接到外部系统、处理器周期中断、用户空间访问sysfs中的特定文件等),都会产生触发。

7、iio子系统的内核接口

为各种sensor提供了内核接口

8、iio子系统环形缓冲区(如下图)

iio子系统采用环形缓冲区,环形缓冲区本质是一个数据结构(单一,固定大小,可调并首尾相连),这种结构非常适合缓冲数据流。这些缓冲区通常用来解决生产者消费者问题,在一些应用中,它被设计成生产者会(例如一个ADC)覆盖消费者(例如一个用户空间应用程序)无法暂时处理的过期数据。但是通常这种缓冲会被设置为适当的大小,以使这种情况不会发生。

更多详细的说明可以参照:WIKI 中的说明

翻译见附件,来自于http://blog.chinaunix.net/uid-20543672-id-2976189.html

Linux的iio数据流程,linux iio子系统相关推荐

  1. Linux的iio数据流程,Linux 工业输入输出IIO子系统框架.doc

    PAGE PAGE 22 工业I/O(IIO)是专用于模数转换器(ADC)和数模转换器(DAC)的内核子系统.随着越来越多的具有不同代码实现的传感器(具有模拟到数字或数字到模拟,功能的测量设备)分散在 ...

  2. linux alsa声卡驱动原理分析- 设备打开过程和数据流程,linux alsa声卡驱动原理分析解析- 设备打开过程跟数据流程资料.ppt...

    linux alsa声卡驱动原理分析解析- 设备打开过程跟数据流程资料 Linux ALSA声卡驱动原理分析 -设备打开过程和数据流程;目 录;目 录;一.导 读;目 录;二.ALSA架构简介;二. ...

  3. linux有名管道数据异常,Linux系统编程—有名管道

    ▋****1. 管道的概念 管道,又名「无名管理」,或「匿名管道」,管道是一种非常基本,也是使用非常频繁的IPC方式. 1.1 管道本质 管道的本质也是一种文件,不过是伪文件,实际上是一块内核缓冲区, ...

  4. linux exp 导出数据库命令,linux exp 导出数据库

    解决Linux系统下exp导入EXP-00028异常 问题描述: 在Linux系统中,对某个数据库用户进行exp导出备份时,出现下述异常: Oracle Database 11g Enterprise ...

  5. caffe linux跑自己数据,caffe+linux平台——跑深度学习的流程

    大家好,放假在即,来整理一波在Linux上用caffe跑深度学习的流程,免得开学回来忘记. 以下地址均为我自己电脑上的地址,大家要照着跑请自行修改地址哦! 1.将训练和测试的图像放入examples- ...

  6. linux下json数据解析,Linux下使用jq简单解析json的方法

    jq简介 jq 是一款命令行下处理 JSON 数据的工具.其可以接受标准输入,命令管道或者文件中的 JSON 数据,经过一系列的过滤器(filters)和表达式的转后形成我们需要的数据结构并将结果输出 ...

  7. linux中oracle数据乱码,Linux系统Oracle数据库乱码问题的解决方法

    1.修改远程linux机器的配置 在vim /etc/sysconfig/i18n文件里的配置如下:LANG=zh_CN.GBK SUPPORTED=zh_CN.UTF-8:zh_CN:zh:zh 1 ...

  8. linux 监听数据包,linux下网络监听与发送数据包的方法(即libpcap、libnet两种类库的使用方法)...

    linux下可以用libpcap函数库实现监听数据包,使用libnet 函数库发送数据包 安装: 在命令行下apt-get install 就可以了 libpcap的使用: /*author hjj ...

  9. linux内核电源关机流程,linux开机与关机步骤

    1.Init程序读取/etc/inittab配置文件 Init是系统的第一个进程,因此PID为1,也是所有进程的父进程,init启动后会读取配置文件/etc/inittab中的设定,其实/etc/in ...

最新文章

  1. 如何最好一个管理者?
  2. 怎么检测计算机硬件好坏,驱动人生怎么看电脑硬件 硬件检测教程介绍
  3. 目前我国负债超过100万的大概有多少人?
  4. Google Doc API研究之一:模拟页面上传任意类型文件
  5. 工作200:视频上传和图片编辑功能
  6. Oracle 20c 新特性:Online SecureFiles Defragmentation 在线的 LOB 碎片整理
  7. Effective C++ 读书笔记之Part4.Design and Declarations
  8. 程序员面试金典——18.7最长合成字符串
  9. 两个正数相乘为什么结果是负数
  10. 老人机java游戏模拟器_Java模拟器
  11. 《笨方法学Python》第一期
  12. pycharm 代码跳转
  13. LFW人脸数据库的简介
  14. Git下载(下载失败解决方式)
  15. 树莓派小车简单的迷宫算法-基于Python设计
  16. 5、kali安装输入法——搜狗拼音
  17. vlookup+left函数嵌套如何运用
  18. Spark处理数据倾斜问题
  19. Java课程设计税率_梁勇(Danniel Liang) java教材例题:java程序购买额按税率求营业税 java中数值保留2位小数的方法...
  20. c语言数组相同字符主元素,C语言数组考点归纳

热门文章

  1. Stanford University CS144 Lab2 The TCP Receiver
  2. 王选: 从Dijkstra谈帅才的洞察力
  3. Swift REPL
  4. js 解二元一次方程组(消元法)
  5. uni H5 苹果手机调微信支付失败
  6. IARPA启动“奥丁”项目,发展生物特征识别技术
  7. Unity 对话气泡
  8. 《优柔有情人》读后感6000字
  9. 转载-css 属性clip-path之多边形polygon小窥
  10. 新爹手记-分娩篇-出生前一天(原汁原味流水版)