Linux的iio数据流程,linux iio子系统
转自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子系统相关推荐
- Linux的iio数据流程,Linux 工业输入输出IIO子系统框架.doc
PAGE PAGE 22 工业I/O(IIO)是专用于模数转换器(ADC)和数模转换器(DAC)的内核子系统.随着越来越多的具有不同代码实现的传感器(具有模拟到数字或数字到模拟,功能的测量设备)分散在 ...
- linux alsa声卡驱动原理分析- 设备打开过程和数据流程,linux alsa声卡驱动原理分析解析- 设备打开过程跟数据流程资料.ppt...
linux alsa声卡驱动原理分析解析- 设备打开过程跟数据流程资料 Linux ALSA声卡驱动原理分析 -设备打开过程和数据流程;目 录;目 录;一.导 读;目 录;二.ALSA架构简介;二. ...
- linux有名管道数据异常,Linux系统编程—有名管道
▋****1. 管道的概念 管道,又名「无名管理」,或「匿名管道」,管道是一种非常基本,也是使用非常频繁的IPC方式. 1.1 管道本质 管道的本质也是一种文件,不过是伪文件,实际上是一块内核缓冲区, ...
- linux exp 导出数据库命令,linux exp 导出数据库
解决Linux系统下exp导入EXP-00028异常 问题描述: 在Linux系统中,对某个数据库用户进行exp导出备份时,出现下述异常: Oracle Database 11g Enterprise ...
- caffe linux跑自己数据,caffe+linux平台——跑深度学习的流程
大家好,放假在即,来整理一波在Linux上用caffe跑深度学习的流程,免得开学回来忘记. 以下地址均为我自己电脑上的地址,大家要照着跑请自行修改地址哦! 1.将训练和测试的图像放入examples- ...
- linux下json数据解析,Linux下使用jq简单解析json的方法
jq简介 jq 是一款命令行下处理 JSON 数据的工具.其可以接受标准输入,命令管道或者文件中的 JSON 数据,经过一系列的过滤器(filters)和表达式的转后形成我们需要的数据结构并将结果输出 ...
- linux中oracle数据乱码,Linux系统Oracle数据库乱码问题的解决方法
1.修改远程linux机器的配置 在vim /etc/sysconfig/i18n文件里的配置如下:LANG=zh_CN.GBK SUPPORTED=zh_CN.UTF-8:zh_CN:zh:zh 1 ...
- linux 监听数据包,linux下网络监听与发送数据包的方法(即libpcap、libnet两种类库的使用方法)...
linux下可以用libpcap函数库实现监听数据包,使用libnet 函数库发送数据包 安装: 在命令行下apt-get install 就可以了 libpcap的使用: /*author hjj ...
- linux内核电源关机流程,linux开机与关机步骤
1.Init程序读取/etc/inittab配置文件 Init是系统的第一个进程,因此PID为1,也是所有进程的父进程,init启动后会读取配置文件/etc/inittab中的设定,其实/etc/in ...
最新文章
- 如何最好一个管理者?
- 怎么检测计算机硬件好坏,驱动人生怎么看电脑硬件 硬件检测教程介绍
- 目前我国负债超过100万的大概有多少人?
- Google Doc API研究之一:模拟页面上传任意类型文件
- 工作200:视频上传和图片编辑功能
- Oracle 20c 新特性:Online SecureFiles Defragmentation 在线的 LOB 碎片整理
- Effective C++ 读书笔记之Part4.Design and Declarations
- 程序员面试金典——18.7最长合成字符串
- 两个正数相乘为什么结果是负数
- 老人机java游戏模拟器_Java模拟器
- 《笨方法学Python》第一期
- pycharm 代码跳转
- LFW人脸数据库的简介
- Git下载(下载失败解决方式)
- 树莓派小车简单的迷宫算法-基于Python设计
- 5、kali安装输入法——搜狗拼音
- vlookup+left函数嵌套如何运用
- Spark处理数据倾斜问题
- Java课程设计税率_梁勇(Danniel Liang) java教材例题:java程序购买额按税率求营业税 java中数值保留2位小数的方法...
- c语言数组相同字符主元素,C语言数组考点归纳