LINUX IIO子系统分析之一 IIO子系统概述

article/2025/9/25 6:57:43

从本章开始,我们进行IIO子系统专栏的分析文档,本次IIO子系统专栏分析文档大概包含如下几章:

一、 IIO子系统概述

二、IIO子系统相关数据结构分析

三、iio trigger 介绍

四、iio event介绍

五、iio buffer介绍

六、iio device的注册与注销介绍

七、iio trigger驱动实现

八、虚拟iio device驱动实现

 

 

一、IIO子系统介绍

     本章我们对IIO子系统做一个简单的概述,IIO子系统主要提供对ADC、DAC相关的设备驱动框架,该子系统的设计目的主要是驱动那些分类时处于hwmon和input子系统之间的设备。同时查看linux内核的驱动代码,其实iio、hwmon之间的界限并不是那么明显。而iio子系统所面向的设备包含:

  1. ADC芯片;
  2. DAC芯片;
  3. 温度传感器;
  4. 光感器;
  5. 陀螺仪;
  6. 加速度计;
  7. CDCs;
  8. IMUs
  9. 压力传感器等等

 

 

二、IIO子系统架构

 

如下即为IIO子系统框架,针对IIO子系统而言,其主要提供两种方式与应用层交互:

  1. 通过字符设备文件,应用程序可读取IIO device 各通道的信息;
  2. 通过sysfs下的属性文件,应用程序也可以读取IIO device各通道的信息;

 

而在IIO子系统内部,则主要包括如下四部分的内容:

  1. iio buffer用于处理需要进行连续采集的数据,当一个IIO device的各通道数据支持连续采集时,则调用iio buffer模块提供的接口,创建iio buffer用于存储连续存储的数据,同时该模块提供字符设备文件的注册,因此应用程序通过字符设备文件即可读取该IIO device各通道连续采集的数据;
  2. 当IIO DEVICE支持连续采集时,一般需要绑定一种触发方法,作为数据到达的信号,而IIO子系统提个iio trigger实现该功能,当iio trigger信号到后,则将数据push到iio buffer中(目前IIO子系统提供了iio trigger的注册、注销与查找接口,且系统中已提供了iio-trig-sysfs、iio-trig-gpio、iio-trig-irq等通用的触发方法。这种方式是不是很眼熟,在led子系统中,也包含为led-trigger,一个led-class可以和一个led-trigger绑定,从而实现对led亮度的控制策略);
  3. 针对温度传感器等器件,也会进行事件触发(如温度传感器设置温度上限阈值,当温度高于该阈值后,则触发中断信号),因此IIO子系统提供了iio event模块,iio event模块提供了字符设备操作接口用于对event的监控(该字符设备操作接口并没有创建字符设备文件,而是在iio buffer的ioctl中开启event monitor,然后调用anon_inode_getfd创建了一个匿名inode节点,并设置inode的ops接口等)。
  4. 以上3个都是iio 子系统各子功能,而iio core则主要实现iio device的创建,并根据传递的参数决定是否需要创建iio buffer等,提供了iio device的内存申、请注册与注销接口。

 

 

 

二、IIO DEVICE相关通道数据访问方式

IIO子系统针对IIO DEVICE中各通道的访问方式主要提供两种,即sysfs方式访问、字符设备方式访问.

  1. sysfs方式数据访问
    1. 针对IIO DEVICE的通道数据,仅需要通过ONE-SHOT方式访问时,则只需要通过sysfs方式访问即可,即在sysfs目录下通过IIO DEVICE提供的属性文件进行访问(如cat  in_voltage0_raw)
  2. 字符设备方式数据访问
    1. 针对IIO DEVICE的通道数据,需要支持连续采集功能时,则借助iio-trigger、iio-buffer实现数据的触发与存储功能,同时应用程序可通过对应的iio buffer提供的字符设备文件,访问存储的连续采集的数据。

 

 

     本篇文章主要是对IIO子系统进行简要说明,介绍IIO子系统的框架及主要子模块功能进行简要说明。下一章我们将通过IIO子系统的数据结构入手,分析IIO子系统的设计框架。


http://chatgpt.dhexx.cn/article/iCfplIdT.shtml

相关文章

linux iio子系统

//\\ || 系 统:WindowsXP & Ubuntu14.04 || 工 具: Source Insight 3.5 || 作 者:疯狂的三极管 \\// 最近由于工作的需要,接触了Linux iio子系统,对于这个目录其实以前是很少接触,接…

RK3399平台开发系列讲解(IIO子系统)4.38、什么是IIO(Industrial I/O)

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 文章目录 一、什么是IIO?沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍什么是IIO 一、什么是IIO? 工业I/O (Industrial I/O,IIO)是专用于模数转换器 (ADC)和数模转换器(DAC)的内…

iio驱动

1.简介 由于客户提供的板子有一个ti081c的adc芯片所有在这里简单学习一下;   工业I / O(IIO)是专用于模数转换器(ADC)和数模转换器(DAC)的内核子系统。随着越来越多的具有不同代码实现的传感…

iio子系统框架分析

学习目的 iio子系统主要提供对ADC、DAC相关的设备驱动框架。面向的设备包括: 1.ADC芯片;2.DAC芯片;3.温度传感器;4.光感器;5.陀螺仪;6.加速度传感器;7.CDCs;​8.IMUs;9…

Linux设备驱动之IIO子系统——IIO框架及IIO数据结构

由于需要对ADC进行驱动设计,因此学习了一下Linux驱动的IIO子系统。本文翻译自《Linux Device Drivers Development 》--John Madieu,本人水平有限,若有错误请大家指出。 IIO Framework 工业I / O(IIO)是专用于模数转换器(ADC)和数模转换器(DAC)的内核子系统。随着越来…

Linux IIO 子系统简介

IIO 子系统系统框架 而在IIO子系统内部,则主要包括如下四部分的内容: iio buffer用于处理需要进行连续采集的数据,当一个IIO device的各通道数据支持连续采集时,则调用iio buffer模块提供的接口,创建iio buffer用于存…

LINUX IIO子系统分析之五IIO BUFFER子模块实现分析

上一章我们介绍了iio子系统中的iio event模块,本章我们将介绍iio buffer模块,iio buffer主要用于连续数据采集与缓存功能。IIO buffer模块借助IIO DEVICE字符设备文件与应用程序通信,同时借助iio trigger模块与iio device进行交互&#xff0c…

kudu教程(一)——简介

##kudu教程(一)——简介 学习kudu先从kudu官网开始,进入主页https://kudu.apache.org/ 我们看到的第一句话就是 A new addition to the open source Apache Hadoop ecosystem, Apache Kudu completes Hadoop’s storage layer to enable fas…

kudu介绍:为什么要使用?

前言 近两年,KUDU 在大数据平台的应用越来越广泛。在阿里、小米、网易等公司的大数据架构中,KUDU 都有着不可替代的地位。本文通过分析 KUDU 的设计, 试图解释为什么 KUDU 会被广泛应用于大数据领域,因为还没有研究过 KUDU 的代码…

Kudu 的架构概述

Kudu 的架构概述 目录 Kudu 的架构概述 体系结构概述 Kudu 的特点 Kudu 的概念和术语 体系结构概述 下图显示了一个Kudu集群,其中有三个主机和多个 tablet servers,每个tablet server 都服务于多个tablet Kudu 的特点 特点一:主从架构…

Outline Of Sodoku

第一步:确定所需要实现的目标 1.数独程序的界面: 1.1初始界面边框 1.1.1边框上的Sodoku标题 1.2初始界面背景图片 1.3初始界面开始键 1.4初始界面难度设置 \\数独界面始终为99的矩阵,可以通过改变初始给定格数来改变难度 1.5响应键盘和鼠标指…

Apache Kudu架构

目录 1. Kudu架构 1. Kudu架构 下图显示了一个具有三个master和多个tablet server的Kudu集群 Kudu采用Raft一致性算法,当写入一条数据,被至少一半replica保存,就可以让客户端访问该条数据。但所有的replica的数据会最终一致 Table&#xff…

kudu的相关介绍

目录 前言 背景 概览 数据模型 核心 API 一致性模型 架构 整体架构 数据分区策略 存储 存储设计目标 存储方式 存储实现 读写过程 应用案例 前言 近两年,KUDU 在大数据平台的应用越来越广泛。在阿里、小米、网易等公司的大数据架构中,KUD…

大数据入门-什么是Kudu

目录 一、概念 二、架构 1.Master Server 2.Tablet Server 3.Table 4.Tablet 三、特性 1.重要性 2.易用性 3.优势 4.与传统关系型数据库比较 5.与其他大数据组件比较 四、常用语句 1.建表 1.建普通表 2.建分区表 2.删除表 3.查询数据 4.添加数据 5.更新数据…

Kudu初入门

目录 介绍: 基础架构: 关于Tablet: Kudu与Impala集成 安装Kudu 配置Impala支持Kudu: 使用案例: 创建表: 查询Impala中现有的Kudu表 使用CREATE TABLE AS SELECT语句查询Impala中的任何其他表或来…

kudu-- 分布式数据库

一、前言 近两年,KUDU 在大数据平台的应用越来越广泛。在阿里、小米、网易等公司的大数据架构中,KUDU 都有着不可替代的地位。本文通过分析 KUDU 的设计, 试图解释为什么 KUDU 会被广泛应用于大数据领域,因为还没有研究过 KUDU 的…

Apache Kudu的介绍

一、Apache Kudu的介绍 1.1、背景介绍 在kudu之前,大数据主要以两种方式存储; (1)静态数据 : 以HDFS引擎作为存储,适用于高吞吐量的离线大数据分析场景。 这类存储的局限性是数据无法进行随机读写。 &…

kudu compaction操作

与hbase相同,kudu也需要定期进行compaction操作。kudu中的compaction操作有两种,一是合并delta文件。二是将一个tablet中的多个diskRowset进行重排。下面分别对这两者进行介绍。 之前在kudu的update操作中讲到,update操作的数据会先写入delt…

Apache Kudo: 1.0版和未来 [session]

Strata Data Conference北京站大会还有一个月即将召开, 有需求的同学还请抓紧时间, 点击二维码即可登录会议官网报名。 Apache Kudo: 1.0版和未来 讲师:Hao Hao (Cloudera) 14:50–15:30 Friday, 2017-07-14 数据工程和架构 (Data engin…

kudu架构

课程链接: http://edu.51cto.com/course/15174.html 特点: High availability(高可用性)。Tablet server 和 Master 使用 Raft Consensus Algorithm 来保证节点的高可用,确保只要有一半以上的副本可用,该 …