Home - cu-ecen-aeld/final-project-ajdonich GitHub Wiki
Project Overview
Goals and Motivation
Implement an SPI driver deployed on Raspberry Pi for a small TFT LCD display. Include file nodes in /dev
and/or /sys
to enable user space read/write access to the display. Implement an example user space application that reads and writes to the display through the driver. As a stretch goal perhaps include some graphics functions such as exporting JPEG files from the display and streaming GIF files onto the display.
I was motivated to choose this project because I thought it would be complex enough to be challenging but still doable within three 1-week sprints, and hopefully have application to many other devices/systems because SPI is such a gold-standard embedded interface.
Target Build System
Yocto
Hardware Platform
Embedded Linux platform: Raspberry Pi 4 Model B
SPI drivable device: ILI9341 240x320 TFT LCD Display
I currently own both of these pieces of hardware. Raspberry Pi is supported by Yocto and I am writing the module for the TFT display. Note: I might also emulate Raspberry Pi in QEMU (also supported by Yocto) for initial dev.
Open Source Projects Used
In the user space example graphics application I will probably use OpenCV, libjpeg or stb.
Previously Discussed Content
I will not wholly reuse any modules or other earlier assignment material, but I will use what I learned in class about Yocto and char-driver module development. The chapter on SPI Device Drivers in Linux Device Driver Development by John Madieu is a primary source material for me for this project.
New Content
I plan to employ a device tree overlay, which has been discussed but not use in previous assignments yet. There has been miminal if any discussion about sysfs (/sys
), which I might include for SPI/display status information. The graphics programming I employ will be new and hasn't been discussed at all in this class.
Shared Material
I will likely copy/paste some basic structure from my own implementation of aesd-char-driver. I might borrow some of the assignment-6 yocto build scripts or other basic GitHub configuration.
Source Code Organization
The Yocto Repository will be hosted at https://github.com/cu-ecen-aeld/final-project-ajdonich
The SPI driver module will be hosted at https://github.com/ajdonich/spi-device-driver
For now I plan to bundle the user space example graphics application within the SPI driver repo.
Team project members:
AJ Donich (me) - solo developer for all parts of the project
Schedule Page
Project Schedule: github.com/cu-ecen-aeld/final-project-ajdonich/wiki/Project-Schedule
Project Board: github.com/users/ajdonich/projects/SPI-TFT-Display-Driver-Raspberry-Pi
Project Issues: github.com/ajdonich/spi-device-driver/issues