Modern Embedded Systems Programming Video 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.
Here you can find various resources for the course as well as links to all released videos and project downloads.
About the Course...
The course consists of focused, fast-paced, hands-on lessons that teach you how to program embedded microcontrollers in C. The course begins with the fundamentals, but gradually covers increasingly advanced concepts all the way to the contemporary modern embedded programming practice.
The course is specifically designed not just to be watched, but to be actively followed along on your own computer (Windows based PC) and a small, self-contained, very inexpensive evaluation board. This companion web-page provides the project downloads that you can open in a specific embedded toolchain and run on your PC at home.
The goal of the course is not just to teach C–other sources 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 a microcontroller.
So, starting from Lesson 1 you will actually see how the ARM Cortex-M processor executes your code, how it manipulates registers, and how an embedded microcontroller 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.
The course has been going from January 2013, but it is never too late to join. Stay tuned…
Course Resources
The following list provides links to useful resources about the embedded boards and the development toolchains used in the course.
Embedded Board: TivaC LaunchPad
The main embedded board used throughout the course is the EK-TM4C123GXL board from Texas Instruments, also known under the name TivaC LaunchPad. The board is based on the TM4C123GH6PM microcontroller (ARM Cortex-M4 CPU). The TM4C123GH6PM Data Sheet in PDF is available for download.
To be able to run the projects provided below, you need to use the exact board. No other board, even if based on the same ARM Cortex-M4 CPU, will allow you to run the projects prepared for the TivaC LaunchPad.
The TivaC LaunchPad board was previously called EK-LM4F120XL "Stellaris LaunchPad" and the first segment of lessons refers to the board by its old name. But the two boards (TivaC LaunchPad and Stellaris LaunchPad) are essentially equivalent and both are equally suitable for this course.
Troubleshooting TivaC LaunchPad
Application Note describing how to fix common problems with TivaC LaunchPad and related software.
Tiva™ TM4C123GH6PM Microcontroller Data Sheet
Documentation of the TM4C123GH6PM MCU on the TivaC LauchPad board. This is the most frequently referenced document is the video course.
Tiva TM4C123GXL LaunchPad User Manual
(applies also for Stellaris EK-LM4F120XL LaunchPad)
ARM Cortex™-M4 Users Guide
Describes ARM Cortex-M4 instruction set.
Tiva/Stellaris In-Circuit ICDI Manual
USB drivers installation instructions.
Tiva/Stellaris ICDI Drivers
Tiva/Stellaris USB drivers for Windows.
Tiva/Stellaris Extension for KEIL uVision
Extension for KEIL uVision to support the Stellaris ICDI debugger
CMSIS Pack Keil.TM4C_DFP v.1.1.0
TivaC Series CMSIS Pack for KEIL uVision
LM-FLASH programmer
The LM-FLASH tool can be used to recover an unresponsive TivaC Lauchpad board. Please see the "Troubleshooting TivaC LaunchPad" for details.
Embedded Board: STM32 NUCLEO-C031C6
The course downloads now also contain project versions for the STM32 NUCLEO-C031C6 board from ST Microelectronics. The board is based on the STM32C031C6T6 microcontroller (ARM Cortex-M0+ CPU). The STM32C031C6 Data Sheet in PDF is available for download.
To be able to run the projects provided below, you need to use the exact board. No other board, even if based on the same ARM Cortex-M0+ CPU, will allow you to run the projects prepared for the TivaC LaunchPad.
STM32 NUCLEO-C031C6 Board
Documentation of the STM32 NUCLEO-C031C6 board.
STM32C031x4/6 Reference Manual
Documentation of the MCU on the NUCLEO-C031C6 board.
ST-Link Drivers
ST-Link USB drivers for Windows.
CMSIS Pack Keil.STM32C0xx_DFP v.1.0.0
STM32C0xx Series CMSIS Pack for KEIL uVision
Logic Analyzer: USB Logic Analyzer (8ch, 24MHz)
Some of the lessons in the video course use a logic analyzer to demonstrate various aspects of real-time code execution. One, very inexpensive option, is a clone of the CWAV USBee AX-Pro, but without analog (only 8-channel digital) sampling capabilities. The device is available under various brand names and prices (from $5 to $12):
PulseView Software from sigrok
The generic USB Logic Analyzer works with the open-source PulseView software from sigrok.org, which has version for Windows, Linux and macOS.
Modern Embedded Systems Programming
Videos and Projects
All project downloads (lesson-xx.zip
files) are now self contained and you typically don't need to download any other software components to build and run the projects.