I noticed you're not using the MALLOC_CAP_DMA flag for buffers that will be used for DMA transfers to a peripheral. e.g. NeoPixelBus/src/internal/NeoEsp32I2sMethod.h Line 231 in 13b7d2e _i2sBuffer = static_cast<uint8_t*>(malloc(_i2sBufferSize)); From the Espressif Docs for ...
If working on a PSRAM attached device, this is needed i2s MALLOC_CAP_DMA 8a76e13 Makuna merged commit 8161894 into master Feb 15, 2021 Makuna deleted the Esp32I2sPSRAM branch Feb 15, 2021 Makuna mentioned this pull request Feb 15, 2021 ESP32 I2S: With PSRAM present it should use...
else arm64_dma_phys_limit = PHYS_MASK + 1; reserve_crashkernel(); reserve_elfcorehdr...
My question is if my transfer buffer is a void *heap_caps_malloc(size_t size, uint32_t caps) where size is multiple of 4 bytes and caps is MALLOC_CAP_DMA) is the buffer address guaranteed by be on a 32 bit boundary? If not what can one do to guarantee the buffer address is on...
heap_caps_malloc(size, MALLOC_CAP_INTERNAL|MALLOC_CAP_DMA) return 0 --- heap_caps_malloc(size, MALLOC_CAP_INTERNAL) return OK but the memory caused Guru Meditation Error: Core 1 panic'ed (LoadStoreError). Exception was unhandled. -
Maybe, it should only look in pools with MALLOC_CAP_DEFAULT to avoid reserved pools. Actual Behavior The function is allocating inside the already reserved block (chasing its own tail). esp_spiram_reserve_dma_pool() can be called with a value larger than the amount of physical RAM (e.g...
zoKf~Pd?(QMFOA)ME zq1DmahMoaa3(NsUK`j+!Il(Qt?*em!yTPns-*-3!rB _2m zP&PnLim*-YBq lZa6{X7v=*9*MOK{Fm6T^Ztz|8f zRym$1QZ*oj=q`LWJd1d#^(Z>w_$)> w&T`!JlsE^68cq<5D-~MS>j?=4fs*X4JWoQ zGP}%T9RfpV1#Z1VEV};;fKUfK`5*G0?jtE^Q4}xeCc&j<0^>!9#NycPhHg7*...