Post

#26: Introducing the ESP32 ULP Series

A deep dive on the nuts and bolts operation of the RISC-V ULP coprocessor on the ESP32.

After running into some issues working with the ULP on the ESP32 I was inspired to crawl very deep down the rabbit hole. Along the way I learned a ton that can be useful to anyone working on a project involving the ULP.

The entire 12 lesson series is available now on Github. I plan to cross post a version of each lesson here on ProductionESP32 for those that don’t wish to access the lessons via a code checkout flow. I also plan to sprinkle a few videos in as well.

The series focuses on the low level details of how the RISC-V ULP works and how to program it, debug it and pitfalls to watch out for. It’s primary focus is on the production aspects of writing code for the coprocessor. The lesson flow is as follows:

  1. Setting Up the Dev Environment
  2. Your First ULP Program
  3. Wake Up the Main CPU
  4. Under the Hood
  5. Shared Variables
  6. The ULP Stack
  7. The Stack Monster 🧟
  8. The Stack Monster: Part Deux 🧟 🧟
  9. Detecting a ULP Crash
  10. Reducing App Size
  11. Make Your ULP App a Custom CMake Project
  12. Static Analysis- Stack Usage and Call Graphs

Join the community and get the weekly Production ESP32 newsletter. Concise, relevant content about ESP32 development right in your inbox.

© Kevin Sidwar

Comments powered by Disqus.