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.