In this lecture, we are programming a microcontroller using bare metal, which means without library or tool. However:

  • In practice, we of course use libraries for most applications
  • For each microcontroller, toolchain and flashing software are specific!

PlatformIO is a swiss-knife allowing you to install automatically cross-compilation toolchains, libraries, and the flashing tools.


  • Platforms: a processor architecture (ARM, AVR, ESP32...)
  • Frameworks: software environment (for example Arduino or mbed)
  • Boards: development boards supported
  • Libraries: allowing you to support extra hardware or features


  • Centralizing installation of toolchain and development tools
  • Working on embedded system project mixing multiple target platforms for same codebase
  • Sharing your dependencies using a configuration file platformio.ini

Getting started

PlatformIO comes with a command line tool (PlatformIO core) and a VSCode integration.