User Tools

Site Tools


gsoc:2018-gsoc-iio-driver

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
gsoc:2018-gsoc-iio-driver [2018/01/29 09:45]
dbaluta [Proposal]
gsoc:2018-gsoc-iio-driver [2018/02/21 07:11] (current)
dbaluta [Proposal]
Line 1: Line 1:
 ====== GSoC 2018: IIO driver project ====== ====== GSoC 2018: IIO driver project ======
  
-===== Overview =====+[[:​gsoc:​google-summer-code-2018|Main GSoC Linux Foundation page: How to apply, deadlines, other workgroups, ...]]
  
 +
 +===== Proposal =====
 The main purpose of the Industrial I/O subsystem (IIO) is to provide support for devices that in some sense perform either analog-to-digital conversion (ADC) or digital-to-analog conversion (DAC) or both. The main purpose of the Industrial I/O subsystem (IIO) is to provide support for devices that in some sense perform either analog-to-digital conversion (ADC) or digital-to-analog conversion (DAC) or both.
 Devices that fall into this category include: ADCs, DACs, accelerometers,​ gyroscopes, color and light sensors, pressure sensors, magnetometers,​ VOC sensors, etc. Devices that fall into this category include: ADCs, DACs, accelerometers,​ gyroscopes, color and light sensors, pressure sensors, magnetometers,​ VOC sensors, etc.
  
-===== Proposal ===== +The goal of this project is to write a driver for [[https://​learn.adafruit.com/​adafruit-bme680-humidity-temperature-barometic-pressure-voc-gas | Bosch BME680]] temperature,​ barometric, pressure and VOC gas sensor using the [[https://​www.kernel.org/​doc/​html/​v4.15/​driver-api/​iio/​index.html | IIO]] interface. The project is split in the following subtasks
- +  * get familiar with IIO subsystem, I2C and SPI API
-The goal of this project is to write a driver for sensor using the [[https://​www.kernel.org/​doc/​html/​v4.15/​driver-api/​iio/​index.html | Industrial I/O]] interface. The project is split in two phases+  * create skeleton driver registering an IIO device 
-  * **first phase**: ​get familiar with the hardware, the IIO subsystem ​then implement raw readings from the device+  ​add IIO channel for humidity 
-  * **second phase**add support ​for buffered readings, triggers and power management. +  ​add IIO channel for temperature 
- +  ​add IIO channel for pressure 
-For an application to be taken in consideration,​ a student must: +  ​* add IIO channel ​for VOC 
- +  * add support ​for buffer triggered readings for each of the supported channels in order to efficiently read samples 
-  * send at least 5 cleanup patches ​for ''​drivers/​staging/''​ directory ​of the Linux kernel. See [[https://​kernelnewbies.org/​FirstKernelPatch | First kernel patch tutorial]] +  * add support for power management
-  * do some research work and find a sensor which doesn'​t have a Linux kernel driver. You can start searching [[https://​www.adafruit.com/​ | here]] or [[https://​www.sparkfun.com/​ | here]].+
  
 Desired knowledge: Desired knowledge:
Line 21: Line 22:
   * basic low level programming concepts (files, memory, buses)   * basic low level programming concepts (files, memory, buses)
  
-===== Previous proposals ​=====+The accepted student will work on writing the driver for the proposed sensor. In the application form please let me know your plan on how to test your code. 
 + 
 +Hints: 
 +  * sensor communicates over SPI/I2C. 
 +  * SBC or USB to I2C/SPI bridge. 
 + 
 + 
 +Code license: GPL  
 + 
 +The project is considered successful if the code is accepted into Linux kernel IIO maintainer'​s tree. 
 +===== Where to start? ​=====
  
-Just to have an idea on how this project works here is list of successful past projects:+Have look at the [[https://​kernelnewbies.org/​IIO_tasks]] page. The IIO tasks are part of your application process, try to solve as many as you can.
  
-  * [[https://​narcisaam.github.io/​Setup/​ | CCS811 Air Quality Sensor]] 
-  * [[https://​amsfield22.wordpress.com/​2016/​08/​02/​ltc2485-analog-to-digital-converter/​|LTC2485 Analog to Digital Converter]] 
-  * [[https://​eraretuya.github.io/​2017/​02/​11/​driver-acceptance/​ | ADXL345 accelerometer]] 
-  * [[https://​iiobits.wordpress.com/​2015/​01/​26/​hardware-is-here/​| ISL29018 digital ambient light and proximity sensor]] 
-  * [[https://​kernelsense.wordpress.com/​2016/​05/​23/​maxim-success-for-maxim-potentiometer/​ | MAX5487 digital potentiometer]] 
  
-A project is considered successful if the code is accepted into Linux kernel IIO maintainer'​s tree. 
 ===== Contact ===== ===== Contact =====
  
gsoc/2018-gsoc-iio-driver.1517219156.txt.gz · Last modified: 2018/01/29 09:45 by dbaluta