This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
software:linux:docs:iio:iio [28 Feb 2011 13:39] Michael Hennerich created |
software:linux:docs:iio:iio [05 Jun 2020 17:03] (current) Iulia Moldovan [IIO Overview] Grammar changes |
||
---|---|---|---|
Line 4: | Line 4: | ||
===== IIO Overview ===== | ===== IIO Overview ===== | ||
- | * The Industrial I/O subsystem is intended to provide support for devices that in some sense are analog to digital convertors (ADCs). | + | * The Industrial I/O subsystem is intended to provide support for devices that in some sense are analog to digital or digital to analog converters (ADCs, DACs). |
* Devices that fall into this category are: | * Devices that fall into this category are: | ||
* ADCs | * ADCs | ||
Line 11: | Line 11: | ||
* IMUs | * IMUs | ||
* Capacitance to Digital Converters (CDCs) | * Capacitance to Digital Converters (CDCs) | ||
- | * Pressure, Temperature and Light Sensors | + | * Pressure Sensors |
+ | * Color, Light and Proximity Sensors | ||
+ | * Temperature Sensors | ||
+ | * Magnetometers | ||
+ | * DACs | ||
+ | * DDS (Direct Digital Synthesis) | ||
+ | * PLLs (Phase Locked Loops) | ||
+ | * Variable/Programmable Gain Amplifiers (VGA, PGA) | ||
* The overall aim is to fill the gap between the somewhat similar hwmon and input subsystems. | * The overall 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. | * 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 human interaction input devices.: | + | * The input is (as its name suggests) focused on human interaction input devices: |
* Keyboard | * Keyboard | ||
* Mouse | * Mouse | ||
Line 21: | Line 28: | ||
* Joystick | * Joystick | ||
- | * In some cases there is considerable overlap between these and IIO. | + | * In some cases, there is considerable overlap between these and IIO. |
* A typical device falling into the IIO category would be connected via SPI or I2C. | * A typical device falling into the IIO category would be connected via SPI or I2C. | ||
- | * However typical DMA operated devices such as ones connected to a high speed synchronous serial (McBSP, SPORT) or high speed synchronous parallel (EPI, PPI) peripherals are also subject to this subsystem. | + | * However typical DMA operated devices such as ones connected to a high speed synchronous serial (McBSP, SPORT) or high speed synchronous parallel (EPI, PPI) or FPGA peripherals are also subject to this subsystem. |
* Since latter ones unlike SPI or I2C are not generally abstracted by Linux bus drivers they are subject to processor platform dependent implementations. | * Since latter ones unlike SPI or I2C are not generally abstracted by Linux bus drivers they are subject to processor platform dependent implementations. | ||
===== IIO Subsystem Overview ===== | ===== IIO Subsystem Overview ===== | ||
+ | |||
+ | {{:software:linux:docs:iio:iio_block_view.png?600}} | ||
==== Functionality of IIO ==== | ==== Functionality of IIO ==== | ||
* Basic device registration and handling | * Basic device registration and handling | ||
- | * This is very simple polled access to device channels via sysfs. | + | * Polled access to device channels via sysfs. |
* Event chrdevs | * 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. | * 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> | + | <WRAP round help> |
A given device may have one or more event channel. These events are turned on or off (if possible) via sysfs interfaces. | A given device may have one or more event channel. These events are turned on or off (if possible) via sysfs interfaces. | ||
- | </note> | + | </WRAP> |
* Hardware ring buffer support | * Hardware ring buffer support | ||
Line 43: | Line 52: | ||
* These greatly reduce the load on the host CPU by buffering relatively large numbers of data samples based on an internal sampling clock. | * These greatly reduce the load on the host CPU by buffering relatively large numbers of data samples based on an internal sampling clock. | ||
* Each ring buffer typically has an event chrdev (similar to the more general ones above) to pass on events such as buffer 50% full and an access chrdev via which the raw data it self may be read back. | * Each ring buffer typically has an event chrdev (similar to the more general ones above) to pass on events such as buffer 50% full and an access chrdev via which the raw data it self may be read back. | ||
- | * Trigger and software ring buffer support | + | * Trigger and software ring buffer (kfifo) support |
==== Trigger and software ring buffer support ==== | ==== Trigger and software ring buffer support ==== | ||
Line 57: | Line 66: | ||
* Triggers can be completely unrelated to the sensor itself | * Triggers can be completely unrelated to the sensor itself | ||
+ | === Standalone trigger drivers === | ||
- | ==== IIO Ring Buffer ==== | + | {{page>software:linux:docs:iio:iio_snippets#Standalone trigger drivers&noheader&firstseconly&noeditbtn}} |
+ | |||
+ | ==== Industrial I/O Subsystem In-Kernel Interfaces ==== | ||
+ | |||
+ | The IIO subsystem can act as a layer under other elements of the kernel | ||
+ | providing a means of obtaining ADC type readings or of driving DAC type | ||
+ | signals. The functionality supported will grow as use cases arise. | ||
+ | ==== IIO Ring Buffer / kfifo ==== | ||
{{:software:linux:docs:ringbuffer.png}} | {{:software:linux:docs:ringbuffer.png}} | ||
Line 69: | Line 86: | ||
====== Pointers ====== | ====== Pointers ====== | ||
- | * [[http://sourceforge.net/apps/mediawiki/iioutils/index.php?title=Main_Page|IIO Utils Main Page]] | + | {{page>software:linux:docs:iio:iio_snippets#iio pointers&noheader&firstseconly&noeditbtn}} |