PAGE

PAGE 22

工业I/O(IIO)是专用于模数转换器(ADC)和数模转换器(DAC)的内核子系统。随着越来越多的具有不同代码实现的传感器(具有模拟到数字或数字到模拟,功能的测量设备)分散在内核源上,收集它们变得必要。这就是IIO框架以通用的方式所做的事情。自2009年以来,Jonathan Cameron和Linux-IIO社区一直在开发它。

加速度计,陀螺仪,电流/电压测量芯片,光传感器,压力传感器等都属于IIO系列器件。

IIO模型基于设备和通道架构:

设备代表芯片本身。它是层次结构的顶级。

通道代表设备的单个采集线。设备可以具有一个或多个通道。例如,加速度计是具有 ?三个通道的装置,每个通道对应一个轴(X,Y和Z)。

IIO芯片是物理和硬件传感器/转换器。它作为字符设备(当支持触发缓冲时)暴露给用户空间,以及包含一组文件的sysfs目录条目,其中一些文件代表通道。单个通道用单个sysfs文件条目表示。

下面是从用户空间与IIO驱动程序交互的两种方式:

/sys/bus/iio/iio:deviceX/:表示传感器及其通道

/dev/iio:deviceX: 表示导出设备事件和数据缓冲区的字符设备

IIO框架架构和布局

上图显示了如何在内核和用户空间之间组织IIO框架。驱动程序使用IIO核心公开的一组工具和API来管理硬件并向IIO核心报告处理。然后,IIO子系统通过sysfs接口和字符设备将整个底层机制抽象到用户空间,用户可以在其上执行系统调用。

IIO API分布在多个头文件中,如下所示:

#include?????/*?mandatory?*/#include???/*?mandatory?since?sysfs?is?used?*/#include??/*?For?advanced?users,?to?manage?iio?events?*/#include??/*?mandatory?to?use?triggered?buffers?*/#include?/*?Only?if?you?implement?trigger?in?your?driver?(rarely?used)*/

在以下文章中,我们将描述和处理IIO框架的每个概念,例如

遍历其数据结构(设备,通道等)

触发缓冲支持和连续捕获,以及其sysfs接口

探索现有的IIO触发器

以单次模式或连续模式捕获数据

列出可用于帮助开发人员测试其设备的可用工具

IIO数据结构

IIO设备在内核中表示为struct iio_dev结构体的一个实例,并由struct iio_info结构体描述。所有重要的IIO结构都在include/linux/iio/iio.h中定义。

iio_dev结构

该结构代表IIO设备,描述设备和驱动程序。它告诉我们:

设备上有多少个通道?

设备可以在哪些模式下运行:单次,触发缓冲?

这个驱动程序可以使用哪些hooks钩子?

struct?iio_dev?{? ??[...]?? ?int?modes; ???int?currentmode; ???struct?device?dev;???struct?iio_buffer?*buffer;???int?scan_bytes;???const?unsigned?long?*available_scan_masks;???const?unsigned?long?*active_scan_mask;???bool?scan_timestamp;???struct?iio_trigger?*trig;???struct?iio_poll_func?*pollfunc;???struct?iio_chan_spec?const?*channels;???int?num_channels;???const?char?*name;???const?struct?iio_info?*info;???const?struct?iio_buffer_setup_ops?*setup_ops;???struct?cdev?chrdev;};

完整的结构在IIO头文件中定义。我们将不感兴趣的字段在此处删除。

modes: 这表示设备支持的不同模式。支持的模式有:

INDIO_DIRECT_MODE表示设备提供的sysfs接口。

INDIO_BUFFER_TRIGGERED表示设备支持硬件触发器。使用iio_triggered_buffer_setup()

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

  1. Linux的iio数据流程,linux iio子系统

    转自http://blog.csdn.net/tsy20100200/article/details/47101661 最近由于工作的需要,接触了Linux iio子系统,对于这个目录其实以前是很少接 ...

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

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

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

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

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

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

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

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

  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. 计算机数字信号原理,计算机网络通信原理数字信号的基带传输.ppt
  2. 泛函分析2——Normed Linear Spaces
  3. 公务员考试中的计算机知识点,2021年度公务员考试计算机基础知识试题.doc
  4. 【树莓派学习笔记】四、OpenCV的安装与卸载
  5. kali 切换root权限_Ubuntu 被曝严重漏洞:切换系统语言 + 输入几行命令,就能获取 root 权限...
  6. php 实现二叉树的最大深度_LeetCode题记——104二叉树的最大深度
  7. 森林病虫防治系统 (二.1)
  8. 7.高性能MySQL --- MySQL 高级特性
  9. 存储基本概念与SAN存储
  10. alisql mysql_AliSQL · 特性介绍 · 动态加字段
  11. shell脚本教程--Bash shell--4.流控、循环
  12. 100个免费可商用字体,你总有一天用到它
  13. C语言实现16进制到2进制的转换
  14. Taro Next 发布预览版:同时支持 React / Vue / Nerv
  15. 非平衡载流子和pn结
  16. 2023年全国最新会计专业技术资格精选真题及答案18
  17. web端与移动端高德地图接入及实例化
  18. IPFS/FIL10月15日迎来又一轮减产 对投资者有什么影响?
  19. Java毕设项目藏宝阁游戏交易系统(java+VUE+Mybatis+Maven+Mysql)
  20. Laravel框架-迁移文件

热门文章

  1. 树莓派4b ubuntu 设置屏幕热插拔
  2. 【功能】:前台上传文件(txt,xls,xlsx,csv,pdf)五种格式的文件 后台java解析文件,并且判断文件内容是否为零字节
  3. mac命令行压缩解压rar文件
  4. ORACLE 如何获取uid
  5. LabVIEW图表之双坐标轴
  6. 激光计算机是谁发明的,五个难以解释的古发明,第四个是计算机祖宗,第五个激光武器雏形...
  7. PHP 7.4 configure error : Package requirements (zlib) were not met
  8. 星起航:亚马逊卖家利用一件代发模式实现跨境电商飞速发展
  9. Matlab中int()函数的使用
  10. 计算机用固态硬盘无法启动不了,windows10系统安装固态硬盘开启AHCI后开不了机怎么办...