This is an old revision of the document!
Project name
- Student: Christian Krämer (uddka@student.kit.edu)
- Mentors:
- Chuck (chuck@FreeBSD.org)
- Luiz (loos@FreeBSD.org)
Project description
FreeBSD already has support for interrupts implemented in the GPIO controller drivers of several SoCs, but there are no interfaces to take advantage of them out of user space yet. The goal of this project is to implement such an interface by providing descriptors which integrate with the common I/O system calls and multiplexing mechanisms.
Approach to solving the problem
Writing a kernel driver that sets the interrupts up and controls the interrupt related resources. Furthermore, the driver provides a handler function for the interrupts which serves the file descriptors. A user space API to create and configure those descriptors must also be implemented (ideally these functions would be integrated into libgpio and gpioctl). These API should allow the configuration of interrupt specific attributes like trigger-type. To conclude, some hardware tests shall be done on SoCs that support GPIO generated interrupts.
Milestones
- May 14th: Start of coding
- Writing an initial version of the driver that registers an interrupt on a specific pin, implements a handler routine, and offers simple signalling when an interrupt on the monitored pin occurs.
Test Plan
Hardware tests should be done on the BeagleBone Black (TI Sitara AM3359) and RaspberryPi 3 (Broadcom BCM2837), because their SoCs support interrupts along with the gpiobus driver.
Initially it should be sufficient to wire simple push buttons to the GPIO pins, or to connect them to each other with a simple delay circuit. When everything works fine so far, I am planning to do some more advanced hardware tests e. g. by connecting a Microcontroller for automated long-term scenarios, or even by generating some stress on the pins.