Hosted by Dag Bjørndal in Oslo on December 9th 2025
The accompanying firmware code from this workshop illustrates use of the Embassy framework. It is intended as a bare skeleton demonstration of cooperative multitasking. The following devices are featured:
- Raspberry Pi Pico W (ARM)
- Esp32c3 OLED (Risc-V)
![]() |
![]() |
|---|
Both devices do the following:
- The device is initialized in Embassy and tasks are started
- The device connects to Wi-Fi using SSID and PSK read from src directory
- The onboard LED is blinked every second
- A small web page is retrieved from the the Internet every 10 seconds, and its content is logged
- Logging information is continously sent to the host computer
The Esp32 device has a small OLED screen which is activated and written to. Dynamic memory allocation using heap is demonstrated on this device. The Esp32 device is connected directly to the host computer via USB. The Pico W device demonstrates using stack memory allocation only. This approach might be considered best practice. The Pico W is connected to the host computer via a programming probe (Picoprobe, ST-Link or Segger). The device uses defmt to minimize bandwidth demand when logging to the host computer.
- Install Rust. Follow the instructions on The Rust Programming Language.
- Install espflash with 'cargo install espflash --locked'.
- Connect device to host computer via USB cable.
- Install Rust. Follow the instructions on The Rust Programming Language.
- Install probe-rs. Follow the instructions on probe-rs.
- Connect device to programming probe (Picoprobe, ST-Link or segger). Typically SWCLK, SWDIO, 5V and GND are needed. Connect programming probe to host computer.

