SoC and Embedded Linux

© All rights reserved


Schedule 2023

  1. FPGA

Course objectives

  1. Formulate solutions that meet hardware and software requirements for projects with FPGA-SoC (System-on-a-chip)
  2. Integrate a prototype solution for an embedded system with processing and/or real-time requirements via FPGA-SoC
  3. Interface different modules in an embedded system (processors, firmware, and operating systems)

Course

The course is based on tutorials where theoretical and practical concepts are presented. The student must follow the material as presented (in sequence) as it was designed incrementally. Each tutorial (or series of tutorials) has an assignment (APS) to be done, and the tutorial is the entry point for the assignment, but it also goes beyond in understanding and concepts.

If you're an external visitor, you can use this course material in different ways. Consider that all examples were created for the DE0-Standard board but can easily be adapted to other development boards with an Intel SoC FPGA.

If you're specifically interested in learning about ARM and embedded Linux, you can access the HPS material. On the other hand, if you want to explore FPGA and hardware topics, including the NIOS soft processor and IP development, you should start by looking at the FPGA section.

The HPS + FPGA section discusses the connection between these two subjects. You can also find material on the basics of hardware acceleration using HLS or OpenCL in the Acceleration section. Lastly, the Students section contains tutorials created by students from the previous semester.

Motivation

Evaluation

The evaluation consists of assignments throughout the semester (each series of tutorials has an assignment with a grade) and a tutorial that must be created throughout the course and integrated into the course page. The tutorial is a free theme within the objectives of the course and has some intermediate assignments that will compose the final grade.

Bibliography

Many of the books are available in the Computer Architecture Laboratory.

Basic:

  • [HALLINAN, 2007] HALLINAN, C. Embedded Linux primer: a practical, real-world approach. Pearson Education India, 2007.
  • [DESCHAMPS, 2012] DESCHAMPS, J. P.; SUTTER, G. D.; CANTÓ E. Guide to FPGA implementation of arithmetic functions. Springer Science & Business Media; 2012, Apr 5.
  • [CHU, 2011] CHU, PONG P. Embedded SoPC design with Nios II processor and VHDL examples. John Wiley & Sons, 2011.

Complementary:

  • [SASS, 2010] SASS, R., SCHMIDT, A.G.; Embedded Systems Design with Platform FPGAs: Principles and Practices. Elsevier, 2010.
  • [BOVET, 2005] Bovet, Daniel P., and Marco Cesati. Understanding the Linux Kernel: from I/O ports to process management. " O'Reilly Media, Inc.", 2005.
  • [SIMPSON, 2015] Simpson, Philip Andrew; FPGA Design: Best Practices for Team-based Reuse 2nd ed. Springer, 2015 Edition.
  • [KOOPMAN, 2010] Koopman, Philip. Better Embedded System Software. Drumnadrochit Education, 2010.
  • [VENKATESWARAN, 2008] Venkateswaran, Sreekrishnan. Essential Linux device drivers. Prentice Hall Press, 2008.

To get started

  1. Have a Linux machine (can be VM)
  2. Create a repository on Github by clicking here
  3. Think a little about a theme to delve into (for tutorial)
    • 👉 Tips
    • Take a look at past tutorials:
  4. Recommended reading: