Online courses · XEducation

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

  1. Welcome
  2. Embedded Systems and C
  3. From Source Code to a Running Program
  4. C Essentials for Embedded
  5. Pointers and Memory
  6. Bits and Registers
  7. Digital Input and Output
  8. Time
  9. Interrupts
  10. Analog Input
  11. Serial Communication
  12. Program Structure
  13. Reliability and Debugging
  14. Capstone

Instructor: Anis Koubaa