ECEn 427: Embedded Linux Systems

This course covers the “full stack” of embedded systems, including developing software applications, user space and kernel drivers, and custom digital hardware. All of these pieces are integrated together in a semester-long project to implement the original Space Invaders game.

The class is hands-on; learning is primarily accomplished by completing a series of lab assignments and reading/studying online documentation.

It is worth noting that modern Linux-based device-driver development is a bit of an art form and that there seems to be no current comprehensive textbooks or online documentation that describes how to develop device drivers for modern Linux kernels. As such, this class attempts to bring together a lot of information to enable students to learn how to develop and to debug Linux kernel device drivers.

We will be using the Xilinx PYNQ board for this class. Though the board is typically outfitted with a Python-based productivity environment, we won’t be using that for this class. The boards that we are using will be setup to use Ubuntu so that you can develop directly on these systems.

Important Note: This class relies on your ability to teach yourself and to find things out as you go. In most cases, the lab descriptions will provide only the background information that is difficult to find on the internet. Also, we will go over difficult concepts in class. However, in order to complete the lab exercises, you will need to be resourceful. You will need to carefully study the provided documentation and to find answers to your questions on your own by searching web-sites such as stack-overflow, etc. The TAs will try to help you when you are completely stuck but they generally won’t answer questions that you should be able to answer for yourself. Also, try not to rely too much on other students. Try to become self-reliant. Ultimately, self-reliant engineers get paid more and have better job security.