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:09] dbaluta [Proposal] |
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: |
- | + | ||
- | 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 the following subtasks: | + | |
* get familiar with IIO subsystem, I2C and SPI API. | * get familiar with IIO subsystem, I2C and SPI API. | ||
* create skeleton driver registering an IIO device | * create skeleton driver registering an IIO device | ||
Line 17: | Line 15: | ||
* add IIO channel for pressure | * add IIO channel for pressure | ||
* add IIO channel for VOC | * add IIO channel for VOC | ||
- | * add support for buffer readings for each of the supported channels | + | * add support for buffer triggered readings for each of the supported channels in order to efficiently read samples |
- | * add support for power manangement | + | * add support for power management |
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 ===== | ||