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.

spi_driver_diagram

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