
#38: ULP Series - Detecting a ULP Crash
When the ULP crashes, your ESP32 doesn't reboot. So how are you supposed to handle it?

When the ULP crashes, your ESP32 doesn't reboot. So how are you supposed to handle it?

Overview I recently found a bug in the ESP32-S3 brownout detector. It is officially logged as Issue 17718. If you have enabled ESP_BROWNOUT_DET=y in your sdkconfig along with a corresponding brow...

This episode of the Production ESP32 series covers how to set up debugging an ESP32 project using QEMU and VSCode in less than 10 minutes. It relies on Docker dev containers within VSCode. I’ve b...

You thought part 1 was bad. The Stack Monster is far worse than you can imagine. What We’ll Cover You thought it was bad in Lesson 7 Hold my beer 🍺 To see all of the changes made and workin...

I was working on a project recently for a client where I suspected a race condition between threads accessing the same section of code. I came across this very simple logging macro which allows yo...

Hidden in the depths of your ULP program may lie a very scary beast; The Stack Monster. What We’ll Cover How stack growth can be catostrophic That’s basically it, the stack can truly kill you...

Espressif has released v5.5 as the latest stable release of IDF. The full changelog can be found here: https://github.com/espressif/esp-idf/releases/tag/v5.5 This release will be supported throug...

How the ULP stack works and why you need to understand it to ensure production quality releases. What We’ll Cover The RISC-V ULP Stack Spec ESP32 Implementation How to calculate your stack ...

What are shared variables in the ULP realm and how to use them. What We’ll Cover What are shared variables An example of two-way shared variables How do they work Limitations of shared va...

This post covers the guts of how the ULP works and will equip you to resolve issues when they arise. What We’ll Cover What processor architecture is used How your ULP application compiled W...