Fundamentals of Embedded & Real-Time Systems

About this Course


In this first course, students build foundation knowledge, core development skills, and practices needed to develop programs for embedded and real-time systems. Code examples are provided during instruction with the goal of developing complete a bare-metal program by the student at the end of the course. Students will gain hands-on experience in debugging techniques and embedded debugging techniques using a hardware JTAG based debug interface as well as leveraging and utilizing open source embedded development tools used throughout the certificate program. The language for the course is C and ARM assembly.

Topics include:

  • Introduction to computer architecture and hardware concepts from a software perspective
  • Installation and configuration of embedded development tools (Eclipse, OpenOCD, GCC)
  • Implementing memory sub-system performance benchmarking
  • How software interacts with hardware using registers and I/O, including a review of C pointers, bitwise operators, effects of endianness in C, and areas of memory available in C
  • Assembly language and ARM assembly language including: hand-optimizing assembly, debugging with source and disassembly
  • Interrupts: what they are and why they’re used, writing and debugging interrupt service routines including rules of thumb, handling multiple interrupts
  • Embedded system boot-up from power-on reset to the C-runtime initialization and into main

The purchase of a development kit is required for this course. See the Cost Details section of the certificate page for more information.