This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
gsoc:2018-gsoc-iio-driver [2018/01/29 12:04] dbaluta [GSoC 2018: IIO driver project] |
gsoc:2018-gsoc-iio-driver [2018/02/21 07:11] (current) dbaluta [Proposal] |
||
---|---|---|---|
Line 3: | Line 3: | ||
[[:gsoc:google-summer-code-2018|Main GSoC Linux Foundation page: How to apply, deadlines, other workgroups, ...]] | [[:gsoc:google-summer-code-2018|Main GSoC Linux Foundation page: How to apply, deadlines, other workgroups, ...]] | ||
- | ===== Overview ===== | ||
+ | ===== 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 [[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 | 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: | ||
* comfortable with C | * comfortable with C | ||
* basic low level programming concepts (files, memory, buses) | * basic low level programming concepts (files, memory, buses) | ||
+ | |||
+ | 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 | Code license: GPL | ||
- | ===== Previous proposals ===== | + | 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 a list of successful past projects: | + | Have a 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 ===== | ||