Slide 1

I made a 64x64 neopixel array, 4096 pixels in 3 byte color, 12KB. Everything worked except one demo that crashed and I couldn’t find the bug in

I wanted to re-use all my code written for FastLED::NeoMatrix, on top of SmartMatrix

Once I had Framebuffer::GFX, I wrote other driver frontends

My new 96x64 RGBPanel outfit uses RGBPanels, which require multiple pre-computed bitmap planes that are used for DMA

RGBPanels 96x64 and TFTs at 320x240 blew up memory on ESP32

https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/system/mem_alloc.html

https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/system/mem_alloc.html

https://github.com/espressif/esp-idf/issues/3497 “Statically allocated DRAM is limited to 160KB”

https://github.com/espressif/arduino-esp32/issues/2567 “Compiler/linker should do a better job handling global arrays instead of crashing at runtime before setup() runs”

https://github.com/espressif/arduino-esp32/issues/2567#issuecomment-475057527

The most annoying parts are: having to change working code, checking for malloc success, and dealing with multi dimensional arrays.

If you don’t want to rewrite multi dimensional arrays, you can use a malloc loop

Slide 17

Slide 19