KernelNewbies
  • Comments
  • Immutable Page
  • Menu
    • Navigation
    • RecentChanges
    • FindPage
    • Local Site Map
    • Help
    • HelpContents
    • HelpOnMoinWikiSyntax
    • Display
    • Attachments
    • Info
    • Raw Text
    • Print View
    • Edit
    • Load
    • Save
  • Login

Kernel Hacking

  • Frontpage

  • Kernel Hacking

  • Kernel Documentation

  • Kernel Glossary

  • FAQ

  • Found a bug?

  • Kernel Changelog

  • Upstream Merge Guide

Projects

  • KernelJanitors

  • KernelMentors

  • KernelProjects

Community

  • Why a community?

  • Regional Kernelnewbies

  • Personal Pages

  • Upcoming Events

References

  • Mailing Lists

  • Related Sites

  • Programming Links

Wiki

  • Recent Changes

  • Site Editors

  • Side Bar

  • Tips for Editors

  • Hosted by WikiWall

Navigation

  • RecentChanges
  • FindPage
  • HelpContents
Revision 24 as of 2015-09-30 07:44:38
KernelNewbies:
  • IIO_tasks

Mentors: [http://kernelnewbies.org/OctavianPurdila Octavian Purdila], [http://kernelnewbies.org/DanielBaluta Daniel Baluta]

Experimenting with IIO subsystem

For this we will use two kernel modules found in drivers/staging/iio:

  • iio_dummy_evgen.ko - generates fake events interrupts to be used by the iio_dummy example driver

    • implementation for this module is in iio_dummy_evgen.c

  • iio_dummy.ko - example IIO driver to demonstrate existing functionality

    • core implementation can be found in iio_simple_dummy.c

    • buffer functionality is implemented in iio_simple_dummy_buffer.c

    • events functionality is implemented in iio_simple_dummy_events.c

Dummy modules compilation

You need to select the following config options:

  • CONFIG_IIO_DUMMY_EVGEN - for building iio_dummy_evgen kernel module

  • CONFIG_IIO_SIMPLE_DUMMY - for building iio_dummy kernel module

    • CONFIG_IIO_SIMPLE_DUMMY_EVENTS, CONFIG_IIO_SIMPLE_DUMMY_BUFFER should be selected for events and buffer functionality.

Use the following commands for modules compilation:

  • $ make drivers/staging/iio/iio_dummy_evgen.ko

  • $ make drivers/staging/iio/iio_dummy.ko

Use the following commands for module loading:

  • $ insmod iio_dummy_evgen.ko

  • $ insmod iio_dummy.ko

Task 01:

  • Show that the modules were successfully loaded . Send an email to mentors listed at the top of the page, with the output of the following commands
    • lsmod
    • ls -l /sys/bus/iio/devices/
    • ls -l /sys/bus/iio/devices/iio:device0/
    • ls -l /sys/bus/iio/devices/iio_evgen/

IIO event monitor

IIO event monitor is an user space example application which reads events from IIO layer and pretty prints the results. Implementation can be found in iio_event_monitor.c under iio/drivers/staging/iio/Documentation. BR

Task 02:

  • compile iio_event_monitor.c to obtain an executable called iio_event_monitor. Send an email with the command used for compilation to mentors listed at the top of the page.

IIO sysfs attributes

IIO sysfs attributes should all be documented in Documentation/ABI/testing/sysfs-bus-iio. Have a look at this file, with a focus on the following entries:

  • /sys/bus/iio/devices/iio:deviceX
  • /sys/bus/iio/devices/triggerX
  • /sys/bus/iio/devices/iio:deviceX/buffer
  • /sys/bus/iio/devices/iio:deviceX/events

Task 03: Add missing ABI Documentation

  • this task asks you to find missing ABI documentation in Documentation/ABI/testing/sysfs-bus-iio (for example look at this [http://www.spinics.net/lists/linux-iio/msg15203.html patch])

  • the key structure to be analyzed is [http://lxr.free-electrons.com/source/include/linux/iio/iio.h#L217 struct iio_chan_spec]

  • use drivers/staging/iio/iio_simple_dummy.c for testing adding new channels to iio_dummy_channels[] array. Then look for the attributes names in /sys/bus/iio/devices/iio:device0 and check to see if they

are documented in Documentation/ABI/testing/sysfs-bus-iio

  • make sure that the undocumented ABI has at least one user driver in drivers/iio/ or drivers/staging/iio/

  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01