Wiki

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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 isas it'​s ​name suggests focused on human interaction ​ input devices.:+  * The input is⁠ (as its name suggestsfocused 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 casesthere 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}}
software/linux/docs/iio/iio.1298896758.txt.gz · Last modified: 28 Feb 2011 13:39 by Michael Hennerich