C for Embedded Systems
Write, build, run and debug C firmware for Arduino, Raspberry Pi Pico, ESP32 and Raspberry Pi, with no hardware to buy
Write, build, run and debug C firmware for Arduino, Raspberry Pi Pico, ESP32 and Raspberry Pi, with no hardware to buy. Anis Koubaa. 14 modules · 57 lessons · 7h 28m · Beginner. Audio in English, Arabic, French.
A beginner course in C for embedded systems: no prior C is needed. You learn to write firmware that reads inputs, drives outputs, keeps time and reacts to events on a microcontroller, and you see every step between the .c file and the chip. The course starts with what an embedded system is, the history and versions of C from K&R to C23 (the course uses C17), and how C runs on the hardware: compilation, cross-compiling, the memory map and startup code. It then covers the C essentials, pointers, volatile, bits and registers, GPIO, timers, PWM, interrupts, the ADC, UART, I2C and SPI, state machines, ring buffers, drivers, watchdogs, low power and debugging with gdb, and closes with a capstone sensor node. You do not need to buy a board: every demo runs on a virtual board (QEMU mps2-an385, an Arm Cortex-M3), cross-compiled with arm-none-eabi-gcc in VS Code, and the slides map every idea onto real boards: Arduino Uno, Raspberry Pi Pico, ESP32 and Raspberry Pi. 14 modules, 44 lectures and 13 VS Code demos, about 6 hours of video, in English with Arabic and French audio tracks.
What you will learn
- Explain how C source becomes firmware on a microcontroller: compilation, cross-compiling, linking, the memory map and startup code
- Control hardware from C with pointers, volatile, bitwise operations and register maps
- Write firmware that drives GPIO, keeps time with timers and PWM, handles interrupts safely, reads an ADC and talks over UART, I2C and SPI
- Structure, test and debug firmware with state machines, ring buffers, drivers, watchdogs, low power modes and gdb
Course content
- Welcome
- Embedded Systems and C
- From Source Code to a Running Program
- C Essentials for Embedded
- Pointers and Memory
- Bits and Registers
- Digital Input and Output
- Time
- Interrupts
- Analog Input
- Serial Communication
- Program Structure
- Reliability and Debugging
- Capstone
Instructor: Anis Koubaa