Modern Embedded Systems Programming Course

This is the companion web-page to the YouTube video course about programming embedded systems the modern way. The course is taught by Quantum Leaps' Miro Samek.

The course is intended for newcomers to the embedded software field and is structured as a series of short, focused, hands-on lessons that teach you how to program embedded micro-controllers in the C programming language. But the goal is not just to teach you C—other courses and books do it already quite well. But there are virtually no courses that would step down to the machine level and show you exactly what happens inside the embedded processor.

So, starting from lesson-one you will actually see how the ARM Cortex-M processor executes your code, how it manipulates registers, and how a computer can "do" things in the real world, such as turn on and off an LED.

This deeper understanding will allow you to use the C language more efficiently and with greater confidence. You will gain understanding not just what your program does, but also how the C statements translate to machine instructions and get a sense for how fast the processor can execute them. Also, you will get some familiarity with the ARM Cortex-M core, which will look really good on your resume.

Course Resources

The following table provides links to useful resources about the development toolsets and the board used in the course.

Texas Instruments, the manufacturer of the board, has re-named it from "Stellaris LaunchPad" (EK-LM4F120XL) to "TivaC LaunchPad" (EK-TM4C123GXL). These two boards are equivalent, and both are equally useful for this course.
ARM-KEIL MDK (Microcontroller Development Kit)
(scroll down to MDK Editions and choose the MDK-Lite, size-limited evaluation)
The ARM-KEIL MDK is used staring from Lesson 21.
TI Code Composer Studio
(choose the Windows version and make sure to select the ARM GCC compiler during installation)
The CCS toolset and GNU-ARM compiler is used staring from Lesson 19.
IAR Embedded Workbench for ARM
(choose Kickstart, size-limited evaluation)
The IAR toolset is used up to Lesson 18.
Tiva TM4C123GXL LaunchPad User Manual
(applies also for Stellaris EK-LM4F120XL LaunchPad)
Tiva TM4C123GH6PM Data Sheet
(also applies to LM4F120H5QR)
Tiva/Stellaris In-Circuit ICDI Manual
(USB drivers installation instructions)
Course Playlist

Course Videos

The following table lists all lessons released so far together with the accompanying notes (transcripts) and project files (for IAR EWARM). The complete Playlist of this course is available on YouTube.