Fundamentals of Embedded & Real-Time Systems


Course Details

About this Course

In the first course, you'll build foundational knowledge, core development skills and the practices needed to develop programs for embedded and real-time systems. We'll provide code examples during instruction with the goal of helping you develop a complete bare-metal program by the end of the course. You'll gain hands-on experience in debugging techniques and embedded debugging techniques using a hardware JTAG-based debug interface as well as by leveraging and utilizing open-source embedded development tools. The language for the course is C and ARM assembly.

What You'll Learn

  • Introductory computer architecture and hardware concepts from a software perspective
  • How to install and configure embedded development tools (Eclipse, OpenOCD, GCC)
  • 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

Students must purchase a development kit for this course. See the cost details section of the certificate page for more information.

Program Overview

This course is part of the Certificate in Embedded & Real-Time Systems Programming .