Fab Lab Rwanda · Group work
Embedded Programming
We are comparing how source code becomes a running program on different microcontroller families. Our comparison uses AVR and ESP32 as two distinct workflows, with the board, compiler, upload method and observed behaviour recorded separately.
Architectures and toolchains
| Option | Architecture and build workflow | What the comparison should reveal |
|---|---|---|
| Arduino Uno R3 / ATmega328P | 8-bit AVR; 16 MHz on the Uno R3. Arduino AVR core, avr-gcc, and an upload tool such as avrdude. | A compact build and bootloader workflow; limited memory and board-specific pin mapping. |
| Classic ESP32 | 32-bit Xtensa LX6. ESP-IDF uses its target compiler with CMake/Ninja and ESP flashing tools. | Target configuration, build/flash/monitor stages, and the role of the SDK. |
These are the selected comparison paths, not a measured benchmark. An editor or IDE is only the front end: the compiler, framework and upload tools determine the toolchain. Other ESP32 models can use different CPU architectures, so we must identify the exact device before applying this comparison.


A fair programming exercise
Our proposed shared exercise is a non-blocking LED output with a serial command that changes its interval. Each implementation should use the same observable behaviour, while adapting pin definitions, serial initialization and timing APIs to its board.
- Identify each board and MCU, logic voltage, programming connection and output pin.
- Install the matching board support and toolchain; save the version and target settings.
- Build the program, inspect memory use, then upload it to the physical board.
- Send the same commands to each board and observe the output.
- Change one setting or introduce a controlled code error to compare the diagnostic and recovery workflow.
The assessment requires physical programming of at least two MCU families with different toolchains. A specification table or a successful compilation alone cannot demonstrate that result.
How we will compare the outcomes
We will compare installation effort, target selection, compile diagnostics, memory reports, upload steps and serial debugging using the saved projects and console output. Build time only makes sense when the host computer and clean/incremental build conditions are recorded.
The plotter's RP2040 controller documentation is a separate firmware build record. It does not establish that either comparison board was physically programmed.