1. 什么是 IIO 子系统?
1.1 IIO 概述
Industrial I/O 子系统旨在为某种意义上是模数或数模转换器 (ADC,DAC) 的设备提供支持,于2009年由 Huawei 的 Jonathan Cameront 添加。
简单框图:
支持的设备包括: ADC / DAC
加速度计
磁力计
陀螺仪
压力传感器
湿度传感器
温度传感器
...
很久以前,对于上述硬件的支持散落在 Linux 源码中的各种地方。
IIO 的出现,提供了一个统一的框架用于访问和控制上述各种类型的传感器,并且为用户态应用访问传感器提供了标准的接口:sysfs/devfs,并且填补了 Hwmon 和 Input 子系统之间的空白。
另外,IIO 不仅可以支持低速的 SoC ADC,还可支持高速、高数据速率的工业设备,例如 100M samples/sec 工业 ADC。
1.2 IIO 相关的组件
上图基于 STM32 MPU,来源见文末。
1) 客户端应用程序(用户空间):
1) 基础的设备注册和访问
2) 可读取事件的字符设备(Event chrdevs)
3) 支持硬件 buffer
4) 支持 Trigger 和软件 buffer
3. IIO 相关配置