Week 4 — Embedded programming
This week’s topic: Embedded programming.
Group assignment
For this group assignment in Shenzhen Chaihuo, we compared practical embedded workflows instead of only listing chip specs. The goal was to understand what students can actually use from first compile to successful flashing and debugging in class conditions.
Work objective
We built a reproducible comparison between RP2040 and ESP32-C3 development paths, including SDK choice, build tools, flash methods, serial workflow, and common setup failures. The output is a practical decision guide for future weekly assignments.
- Map each board to its real toolchain path in our lab setup.
- Compare bring-up workflow from new project to hardware output.
- Record typical failure points and fast recovery actions.
- Summarize language and pre-flash tooling choices.
1) Case-study boards and architecture focus
We used two same-footprint boards as a fair baseline: Seeed XIAO RP2040 and XIAO ESP32-C3. RP2040 is strong for deterministic GPIO timing and USB-oriented tasks, while ESP32-C3 is better for networked prototypes with built-in Wi-Fi and BLE.
2) Capability baseline (datasheet-oriented)
| Topic | RP2040 | ESP32-C3 |
|---|---|---|
| Compute / focus | Dual-core MCU path with strong timing control and PIO flexibility. | RISC-V path with integrated Wi-Fi/BLE for connected devices. |
| Typical SDK path | Pico SDK (CMake + GCC), often combined with UF2 boot workflow. | ESP-IDF with integrated build/flash/monitor command flow. |
| Common “fast start” | Arduino core or MicroPython for fast early iteration. | Arduino core or IDF examples, especially for connectivity tests. |
| How to choose | Prefer when real-time GPIO behavior matters and radio is not needed. | Prefer when wireless communication is a core project requirement. |
3) Toolchain and workflow observations
- New project -> build -> flash -> serial monitor sequence for each board.
- Debug path differences: printf tracing versus SWD/JTAG style workflows.
- Typical failures: wrong port, boot mode mismatch, and package-version issues.
- Language impact on iteration speed (C/C++ vs MicroPython style prototyping).
Reference used for board-family context: Seeed Studio XIAO series introduction.