[Quote] New subsystem iio in Linux Kernel.

So, here comes the iio subsystem new to Linux Kernel, at least for me, present for for supporting some of the composite sensors in Android.

Some introductions and some basic infos about it.

Introduce IIO interface for Android advanced features

iio-a-new-subsystem.pdf

Introduction in kernel/drivers/staging/iio/Documentation/overview.txt

Overview of IIO

The Industrial I/O subsystem is intended to provide support for devices
that in some sense are analog to digital converters (ADCs). As many
actual devices combine some ADCs with digital to analog converters
(DACs) that functionality is also supported.

The aim is to fill the gap between the somewhat similar hwmon and
input subsystems. Hwmon is very much directed at low sample rate
sensors used in applications such as fan speed control and temperature
measurement. Input is, as it‘s name suggests focused on input
devices. In some cases there is considerable overlap between these and
IIO.

A typical device falling into this category would be connected via SPI
or I2C.

Functionality of IIO

* Basic device registration and handling. This is very similar to
hwmon with simple polled access to device channels via sysfs.

* Event chrdevs. These are similar to input in that they provide a
route to user space for hardware triggered events. Such events include
threshold detectors, free-fall detectors and more complex action
detection. The events themselves are currently very simple with
merely an event code and a timestamp. Any data associated with the
event must be accessed via polling.

Note: A given device may have one or more event channel. These events are
turned on or off (if possible) via sysfs interfaces.

* Hardware buffer support. Some recent sensors have included
fifo / ring buffers on the sensor chip. These greatly reduce the load
on the host CPU by buffering relatively large numbers of data samples
based on an internal sampling clock. Examples include VTI SCA3000
series and Analog Device ADXL345 accelerometers. Each buffer supports
polling to establish when data is available.

* Trigger and software buffer support. In many data analysis
applications it it useful to be able to capture data based on some
external signal (trigger). These triggers might be a data ready
signal, a gpio line connected to some external system or an on
processor periodic interrupt. A single trigger may initialize data
capture or reading from a number of sensors. These triggers are
used in IIO to fill software buffers acting in a very similar
fashion to the hardware buffers described above.

Other documentation:

device.txt - elements of a typical device driver.

trigger.txt - elements of a typical trigger driver.

ring.txt - additional elements required for buffer support.

sysfs-bus-iio - abi documentation file.

时间: 2024-10-24 23:10:08

[Quote] New subsystem iio in Linux Kernel.的相关文章

the Linux Kernel: Traffic Control, Shaping and QoS

−Table of Contents Journey to the Center of the Linux Kernel: Traffic Control, Shaping and QoS 1 Introduction 2 Motivation 3 The basics of Traffic Control 3.1 First contact 3.2 Netfilter MARK 3.3 Two classes in a tree 3.4 Connecting the marks to the

Linux Kernel的Makefile与Kconfig文件的语法

https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt Introduction ------------ The configuration database is a collection of configuration options organized in a tree structure: +- Code maturity level options | +- Prompt for developme

Linux Kernel - Debug Guide (Linux内核调试指南 )

http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环

编译android的linux kernel goldfish

https://source.android.com/source/building-kernels.html $ export PATH=/home/hzh/oldhome/learn/android-4.2.2/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:${PATH} $ export ARCH=arm $ export SUBARCH=arm $ export CROSS_COMPILE=arm-eabi- $ make ARCH=arm g

Linux Kernel

Linux Kernel 概述: 1.idd命令 (- print shared library dependencies) 功能:打印二进制应用程序所依赖的库文件 语法:ldd [OPTION]... FILE...(二进制文件) 举例:查看/bin/ls所以来的库文件 [[email protected] ~]# ldd /bin/ls         # 库文件名称   =>     # 库文件路径 linux-vdso.so.1 =>  (0x00007fff615d7000) # 没

video : Write and Submit your first Linux kernel Patch

http://v.youku.com/v_show/id_XNDMwNzc3MTI4.html After working with Linux (mostly as an advanced user) for years, I decided to post my first p=linux/kernel/git/x86/linux-2.6-tip.git;a=commitdiff;h=e19e074b1525d11a66c8e3386fec7db248ad3005" style="

Linux Kernel 排程機制介紹

http://loda.hala01.com/2011/12/linux-kernel-%E6%8E%92%E7%A8%8B%E6%A9%9F%E5%88%B6%E4%BB%8B%E7%B4%B9/ Linux Kernel 排程機制介紹 Linux Kernel 排程機制介紹 [email protected] by loda. 2011/12/2 多核心架構儼然是目前智慧型手機方案的新趨勢,隨著省電與效能上的考量,多核心的架構各家方案也都有所差異.為能讓同一個Linux Kernel在不同效

linux内核可以接受的参数 | Linux kernel启动参数 | 通过grub给内核传递参数

在Linux中,给kernel传递参数以控制其行为总共有三种方法: 1.build kernel之时的各个configuration选项. 2.当kernel启动之时,可以参数在kernel被GRUB或LILO等启动程序调用之时传递给kernel. 3.在kernel运行时,修改/proc或/sys目录下的文件. 这里我简单讲的就是第二种方式了,kernel在grub中配置的启动参数. 首先,kernel有哪些参数呢? 在linux的源代码中,有这样的一个文档Documentation/kern

Linux kernel的中断子系统之(一):综述

一.前言 一个合格的linux驱动工程师需要对kernel中的中断子系统有深刻的理解,只有这样,在写具体driver的时候才能: 1.正确的使用linux kernel提供的的API,例如最著名的request_threaded_irq(request_irq)接口 2.正确使用同步机制保护驱动代码中的临界区 3.正确的使用kernel提供的softirq.tasklet.workqueue等机制来完成具体的中断处理 基于上面的原因,我希望能够通过一系列的文档来描述清楚linux kernel中