Personal repository documenting my journey learning embedded systems development with ESP32 microcontrollers.
| Board | Architecture | Language | Framework |
|---|---|---|---|
| ESP32 (standard) | Xtensa LX6 | C | ESP-IDF |
| ESP32-C3 Rust Board | RISC-V 32-bit | Rust | esp-hal (no-std) / ESP-IDF (std) |
embedded-learning/
├── esp32-c/ # ESP32 Xtensa with C/ESP-IDF
│ ├── projects/ # C projects
│ └── docs/ # C/ESP-IDF notes
├── esp32-c3-rust/ # ESP32-C3 RISC-V with Rust
│ ├── no-std/ # Baremetal projects (esp-hal)
│ │ ├── blinky/ # LED blinking
│ │ ├── gpio/ # GPIO input/output
│ │ └── uart/ # Serial communication
│ └── std/ # ESP-IDF + FreeRTOS projects
└── docs/ # General embedded notes
- Blinky LED
- GPIO input (buttons)
- UART serial communication
- Timers and interrupts
- I2C sensors
- SPI displays
- FreeRTOS tasks
- WiFi connectivity
- HTTP client/server
- MQTT
- BLE
- Document previous Linux projects
- Port concepts from Rust to C
# Install espup (ESP Rust toolchain manager)
cargo install espup
espup install
# Add RISC-V target
rustup target add riscv32imc-unknown-none-elf
# Install flash tools
cargo install espflash
cargo install cargo-espflash
# Optional: probe-rs for debugging
cargo install probe-rs-tools# Install ESP-IDF via Homebrew
brew install cmake ninja dfu-util
# Then follow ESP-IDF installation guide- The Rust on ESP Book
- esp-rs/esp-hal - Hardware Abstraction Layer
- esp-rs/esp-template - Project templates
- Embedded Rust Book
Felix Figueroa - Leonobitech