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.
- 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.