Skip to content

Firmware for ESP32-based LEDswarm controllers which use DWM3000 ultra-wideband for decimeter-level ranging

Notifications You must be signed in to change notification settings

vikasbidhuri1995/firmware-rust-esp32-uwb

 
 

Repository files navigation

firmware_rust_esp32_uwb

Make sure you always source clang's Xtensa environment variable using e.g.: source ~/rust-esp32/export-esp.sh beforehand or your build will fail!

Dev Containers

This repository offers Dev Containers supports for:

Note

In order to use Gitpod the project needs to be published in a GitLab, GitHub, or Bitbucket repository.

In order to use GitHub Codespaces the project needs to be published in a GitHub repository and the user needs to be part of the Codespaces beta or have the project under an organization.

If using VS Code or GitHub Codespaces, you can pull the image instead of building it from the Dockerfile by selecting the image property instead of build in .devcontainer/devcontainer.json. Further customization of the Dev Container can be achived, see .devcontainer.json reference.

When using Dev Containers, some tooling to facilitate building, flashing and simulating in Wokwi is also added.

Build

  • Terminal approach:

    scripts/build.sh  [debug | release]
    

    If no argument is passed, release will be used as default

  • UI approach:

    The default build task is already set to build the project, and it can be used in VS Code and Gitpod:

    • From the Command Palette (Ctrl-Shift-P or Cmd-Shift-P) run the Tasks: Run Build Task command.
    • Terminal-> Run Build Task in the menu.
    • With Ctrl-Shift-B or Cmd-Shift-B.
    • From the Command Palette (Ctrl-Shift-P or Cmd-Shift-P) run the Tasks: Run Task command and select Build.
    • From UI: Press Build on the left side of the Status Bar.

Flash

Note

When using GitHub Codespaces, we need to make the ports public, see instructions.

  • Terminal approach:

    • Using flash.sh script:

      scripts/flash.sh [debug | release]
      

      If no argument is passed, release will be used as default

  • UI approach:

    • From the Command Palette (Ctrl-Shift-P or Cmd-Shift-P) run the Tasks: Run Task command and select Build & Flash.
    • From UI: Press Build & Flash on the left side of the Status Bar.
  • Any alternative flashing method from host machine.

Wokwi Simulation

When using a custom Wokwi project, please change the WOKWI_PROJECT_ID in run-wokwi.sh. If no project id is specified, a DevKit for esp32 will be used.

Warning

ESP32-S3 is not available in Wokwi

  • Terminal approach:

    scripts/run-wokwi.sh [debug | release]
    

    If no argument is passed, release will be used as default

  • UI approach:

    The default test task is already set to build the project, and it can be used in VS Code and Gitpod:

    • From the Command Palette (Ctrl-Shift-P or Cmd-Shift-P) run the Tasks: Run Test Task command
    • With Ctrl-Shift-, or Cmd-Shift-,

      Note

      This Shortcut is not available in Gitpod by default.

    • From the Command Palette (Ctrl-Shift-P or Cmd-Shift-P) run the Tasks: Run Task command and select Build & Run Wokwi.
    • From UI: Press Build & Run Wokwi on the left side of the Status Bar.

Warning

The simulation will pause if the browser tab is in the background.This may affect the execution, specially when debuging.

Debuging with Wokwi

Wokwi offers debugging with GDB.

  • Terminal approach:

    $HOME/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gdb target/xtensa-esp32-espidf/debug/firmware_rust_esp32_uwb -ex "target remote localhost:9333"
    

    Wokwi Blog: List of common GDB commands for debugging.

  • UI approach:

    1. Run the Wokwi Simulation in debug profile
    2. Go to Run and Debug section of the IDE (Ctrl-Shift-D or Cmd-Shift-D)
    3. Start Debugging by pressing the Play Button or pressing F5
    4. Choose the proper user:
      • esp when using VS Code or GitHub Codespaces
      • gitpod when using Gitpod

About

Firmware for ESP32-based LEDswarm controllers which use DWM3000 ultra-wideband for decimeter-level ranging

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 54.6%
  • Shell 24.4%
  • Dockerfile 19.8%
  • Makefile 1.2%