Tasmota on ESP32-P4 with MIPI-DSI: performance notes + sdkconfig/LVGL tips #24448
TheHexaMaster
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Last few days I’ve been playing with a few ESP32-P4 dev boards (mostly Guiton display boards with MIPI-DSI panels), and I’d like to share a couple of observations for people trying to squeeze out maximum performance. If you found something interesting as well, feel free to share your findings.
Default IDF builds for ESP32-P4 in Tasmota
Because Tasmota support for ESP32-P4 is still evolving (and some features may not be fully enabled/integrated yet, such as DMA2D or L2-cache-related tuning), I ended up using a small set of custom sdkconfig options when building P4 binaries:
This makes the binary slightly larger, but in my tests it improved overall UI/display responsiveness (DSI use case).
Note: with framework-arduinoespressif32 3.3.6 I hit a linker issue when compiling in PERF mode (orphan sections ending up as separate binary segments), so I had to patch the linker script (e.g., sections.ld) to catch “orphan” .text* sections. I can share the patch/script later, or you can check my Tasmota fork (HexaOS-DEV branch).
For me this was crucial to prevent visible display glitches during internal flash operations (when cache can be temporarily unavailable). Keeping the relevant ISR paths IRAM-safe/cache-safe helped.
In my current setup, a larger default L2 cache size didn’t bring noticeable benefits, but it did reduce the amount of internal RAM available for other allocations (e.g., DMA-capable buffers). Reducing L2 cache to 128 KB freed up additional internal memory (roughly ~128 KB in my builds), without a measurable performance drop in my UI workload. Your mileage may vary — measure with your specific workload.
Not strictly required, but I occasionally saw flaky behavior on a shared I²C bus (touch + other devices like an RTC). Moving the touch/I²C ISR code paths to IRAM-safe sometimes improved stability.
LVGL settings (tasmota_lv_conf.h)
ESP32-P4 boards often have plenty of PSRAM, so buffer sizes are usually not the first bottleneck. Still, increasing these helped me with smoothness (less stutter, better perceived responsiveness/FPS):
If you’re also experimenting with ESP32-P4 and MIPI-DSI and you’ve found any useful tweaks (sdkconfig, LVGL, DMA buffers, stability fixes, etc.), please share your observations — I’d love to compare results.
Beta Was this translation helpful? Give feedback.
All reactions