Problems with ESP32-S3 and Neopxl8 library

Hi,
I try to build the strandtest example from Neopxl8 library using platformio in vscode and selected StampS3 as board. The example compiles in Arduino but not in platformio what is my favourite development platform.
I get errors while compiling “Adafruit_ZeroDMA.cpp”.

Anyone here facing the same problems? Any solutions available?

Thanks in advance

What is the compile error? Maybe it is a path or missing lib problem.

Here is my compilers output:


```Processing m5stack-stamps3 (platform: espressif32; board: m5stack-stamps3; framework: arduino)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/m5stack-stamps3.html
PLATFORM: Espressif 32 (6.5.0) > M5Stack StampS3
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-builtin, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 3.20014.231204 (2.0.14) 
 - tool-esptoolpy @ 1.40501.0 (4.5.1) 
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5 
 - toolchain-xtensa-esp32s3 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 45 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Adafruit NeoPXL8 @ 1.2.6
Building in release mode
Compiling .pio/build/m5stack-stamps3/libf74/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp.o
Compiling .pio/build/m5stack-stamps3/FrameworkArduino/MD5Builder.cpp.o
Compiling .pio/build/m5stack-stamps3/FrameworkArduino/Print.cpp.o
Compiling .pio/build/m5stack-stamps3/FrameworkArduino/Stream.cpp.o
In file included from .pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.h:25,
                 from .pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:29:
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/utility/dma.h:73:29: error: 'DMAC_CHCTRLB_TRIGACT_BLOCK_Val' was not declared in this scope
   DMA_TRIGGER_ACTON_BLOCK = DMAC_CHCTRLB_TRIGACT_BLOCK_Val,
                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/utility/dma.h:74:28: error: 'DMAC_CHCTRLB_TRIGACT_BEAT_Val' was not declared in this scope
   DMA_TRIGGER_ACTON_BEAT = DMAC_CHCTRLB_TRIGACT_BEAT_Val,
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/utility/dma.h:75:35: error: 'DMAC_CHCTRLB_TRIGACT_TRANSACTION_Val' was not declared in this scope
   DMA_TRIGGER_ACTON_TRANSACTION = DMAC_CHCTRLB_TRIGACT_TRANSACTION_Val,
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from .pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:29:
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.h:201:3: error: 'DmacDescriptor' does not name a type
   DmacDescriptor *
   ^~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.h:219:25: error: 'DmacDescriptor' has not been declared
   void changeDescriptor(DmacDescriptor *d, void *src = NULL, void *dst = NULL,
                         ^~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:46:41: error: 'DmacDescriptor' does not name a type
 __attribute__((__aligned__(16))) static DmacDescriptor ///< 128 bit alignment
                                         ^~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:53:34: error: 'DMAC_CH_NUM' was not declared in this scope
 static Adafruit_ZeroDMA *_dmaPtr[DMAC_CH_NUM] = {0}; // Init to NULL
                                  ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:53:34: note: suggested alternative: 'EMAC_CLK_OUT'
 static Adafruit_ZeroDMA *_dmaPtr[DMAC_CH_NUM] = {0}; // Init to NULL
                                  ^~~~~~~~~~~
                                  EMAC_CLK_OUT
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In function 'void cpu_irq_enter_critical()':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:62:9: error: '__get_PRIMASK' was not declared in this scope
     if (__get_PRIMASK() == 0) { // IRQ enabled?
         ^~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:63:7: error: '__disable_irq' was not declared in this scope
       __disable_irq();          // Disable it
       ^~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:64:7: error: '__DMB' was not declared in this scope
       __DMB();
       ^~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In function 'void cpu_irq_leave_critical()':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:85:7: error: '__DMB' was not declared in this scope
       __DMB();
       ^~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:86:7: error: '__enable_irq' was not declared in this scope
       __enable_irq();
       ^~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:86:7: note: suggested alternative: '_rename_r'
       __enable_irq();
       ^~~~~~~~~~~~
       _rename_r
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In function 'void DMAC_Handler()':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:128:21: error: 'DMAC' was not declared in this scope
   uint8_t channel = DMAC->INTPEND.bit.ID; // Channel # causing interrupt
                     ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:128:21: note: suggested alternative: 'DEPC'
   uint8_t channel = DMAC->INTPEND.bit.ID; // Channel # causing interrupt
                     ^~~~
                     DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:129:17: error: 'DMAC_CH_NUM' was not declared in this scope
   if (channel < DMAC_CH_NUM) {
                 ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:129:17: note: suggested alternative: 'EMAC_CLK_OUT'
   if (channel < DMAC_CH_NUM) {
                 ^~~~~~~~~~~
                 EMAC_CLK_OUT
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:131:16: error: '_dmaPtr' was not declared in this scope
     if ((dma = _dmaPtr[channel])) { // -> Channel's ZeroDMA object
                ^~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In member function 'void Adafruit_ZeroDMA::_IRQhandler(uint8_t)':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:159:15: error: 'DMAC_CHINTENCLR_TERR' was not declared in this scope
   if (flags & DMAC_CHINTENCLR_TERR) {
               ^~~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:164:5: error: 'DMAC' was not declared in this scope
     DMAC->CHINTFLAG.reg = DMAC_CHINTENCLR_TERR;
     ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:164:5: note: suggested alternative: 'DEPC'
     DMAC->CHINTFLAG.reg = DMAC_CHINTENCLR_TERR;
     ^~~~
     DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:169:22: error: 'DMAC_CHINTENCLR_TCMPL' was not declared in this scope
   } else if (flags & DMAC_CHINTENCLR_TCMPL) {
                      ^~~~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:174:5: error: 'DMAC' was not declared in this scope
     DMAC->CHINTFLAG.reg = DMAC_CHINTENCLR_TCMPL;
     ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:174:5: note: suggested alternative: 'DEPC'
     DMAC->CHINTFLAG.reg = DMAC_CHINTENCLR_TCMPL;
     ^~~~
     DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:179:22: error: 'DMAC_CHINTENCLR_SUSP' was not declared in this scope
   } else if (flags & DMAC_CHINTENCLR_SUSP) {
                      ^~~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:184:5: error: 'DMAC' was not declared in this scope
     DMAC->CHINTFLAG.reg = DMAC_CHINTENCLR_SUSP;
     ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:184:5: note: suggested alternative: 'DEPC'
     DMAC->CHINTFLAG.reg = DMAC_CHINTENCLR_SUSP;
     ^~~~
     DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In member function 'ZeroDMAstatus Adafruit_ZeroDMA::allocate()':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:197:17: error: 'DMAC_CH_NUM' was not declared in this scope
   if (channel < DMAC_CH_NUM)
                 ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:197:17: note: suggested alternative: 'EMAC_CLK_OUT'
   if (channel < DMAC_CH_NUM)
                 ^~~~~~~~~~~
                 EMAC_CLK_OUT
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:208:32: error: 'DMAC_CH_NUM' was not declared in this scope
   for (channel = 0; (channel < DMAC_CH_NUM) && (_channelMask & (1 << channel));
                                ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:208:32: note: suggested alternative: 'EMAC_CLK_OUT'
   for (channel = 0; (channel < DMAC_CH_NUM) && (_channelMask & (1 << channel));
                                ^~~~~~~~~~~
                                EMAC_CLK_OUT
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:217:18: error: 'DMAC_CH_NUM' was not declared in this scope
   if (channel >= DMAC_CH_NUM) // No free channel!
                  ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:217:18: note: suggested alternative: 'EMAC_CLK_OUT'
   if (channel >= DMAC_CH_NUM) // No free channel!
                  ^~~~~~~~~~~
                  EMAC_CLK_OUT
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:229:5: error: 'PM' was not declared in this scope
     PM->AHBMASK.bit.DMAC_ = 1; // Initialize DMA clocks
     ^~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:229:5: note: suggested alternative: 'PI'
     PM->AHBMASK.bit.DMAC_ = 1; // Initialize DMA clocks
     ^~
     PI
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:232:5: error: 'DMAC' was not declared in this scope
     DMAC->CTRL.bit.DMAENABLE = 0; // Disable DMA controller
     ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:232:5: note: suggested alternative: 'DEPC'
     DMAC->CTRL.bit.DMAENABLE = 0; // Disable DMA controller
     ^~~~
     DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:236:45: error: '_descriptor' was not declared in this scope
     DMAC->BASEADDR.bit.BASEADDR = (uint32_t)_descriptor;
                                             ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:236:45: note: suggested alternative: 'hasDescriptors'
     DMAC->BASEADDR.bit.BASEADDR = (uint32_t)_descriptor;
                                             ^~~~~~~~~~~
                                             hasDescriptors
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:237:43: error: '_writeback' was not declared in this scope
     DMAC->WRBADDR.bit.WRBADDR = (uint32_t)_writeback;
                                           ^~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:237:43: note: suggested alternative: '_write_r'
     DMAC->WRBADDR.bit.WRBADDR = (uint32_t)_writeback;
                                           ^~~~~~~~~~
                                           _write_r
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:242:22: error: 'DMAC_CTRL_DMAENABLE' was not declared in this scope
     DMAC->CTRL.reg = DMAC_CTRL_DMAENABLE | DMAC_CTRL_LVLEN(0xF);
                      ^~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:242:22: note: suggested alternative: 'EMAC_CLK_DEFAULT'
     DMAC->CTRL.reg = DMAC_CTRL_DMAENABLE | DMAC_CTRL_LVLEN(0xF);
                      ^~~~~~~~~~~~~~~~~~~
                      EMAC_CLK_DEFAULT
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:242:44: error: 'DMAC_CTRL_LVLEN' was not declared in this scope
     DMAC->CTRL.reg = DMAC_CTRL_DMAENABLE | DMAC_CTRL_LVLEN(0xF);
                                            ^~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:254:20: error: 'DMAC_IRQn' was not declared in this scope
     NVIC_EnableIRQ(DMAC_IRQn);
                    ^~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:254:5: error: 'NVIC_EnableIRQ' was not declared in this scope
     NVIC_EnableIRQ(DMAC_IRQn);
     ^~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:255:39: error: '__NVIC_PRIO_BITS' was not declared in this scope
     NVIC_SetPriority(DMAC_IRQn, (1 << __NVIC_PRIO_BITS) - 1);
                                       ^~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:255:5: error: 'NVIC_SetPriority' was not declared in this scope
     NVIC_SetPriority(DMAC_IRQn, (1 << __NVIC_PRIO_BITS) - 1);
     ^~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:255:5: note: suggested alternative: 'setPriority'
     NVIC_SetPriority(DMAC_IRQn, (1 << __NVIC_PRIO_BITS) - 1);
     ^~~~~~~~~~~~~~~~
     setPriority
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:260:3: error: '_dmaPtr' was not declared in this scope
   _dmaPtr[channel] = this;      // Channel-index-to-object pointer
   ^~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:267:3: error: 'DMAC' was not declared in this scope
   DMAC->CHID.bit.ID = channel;
   ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:267:3: note: suggested alternative: 'DEPC'
   DMAC->CHID.bit.ID = channel;
   ^~~~
   DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In member function 'void Adafruit_ZeroDMA::setPriority(dma_priority)':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:297:3: error: 'DMAC' was not declared in this scope
   DMAC->CHCTRLB.bit.LVL = pri;
   ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:297:3: note: suggested alternative: 'DEPC'
   DMAC->CHCTRLB.bit.LVL = pri;
   ^~~~
   DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In member function 'ZeroDMAstatus Adafruit_ZeroDMA::free()':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:311:25: error: 'DMAC_CH_NUM' was not declared in this scope
   } else if ((channel < DMAC_CH_NUM) && (_channelMask & (1 << channel))) {
                         ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:311:25: note: suggested alternative: 'EMAC_CLK_OUT'
   } else if ((channel < DMAC_CH_NUM) && (_channelMask & (1 << channel))) {
                         ^~~~~~~~~~~
                         EMAC_CLK_OUT
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:320:23: error: 'DMAC_IRQn' was not declared in this scope
       NVIC_DisableIRQ(DMAC_IRQn);   // Disable DMA interrupt
                       ^~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:320:7: error: 'NVIC_DisableIRQ' was not declared in this scope
       NVIC_DisableIRQ(DMAC_IRQn);   // Disable DMA interrupt
       ^~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:321:7: error: 'DMAC' was not declared in this scope
       DMAC->CTRL.bit.DMAENABLE = 0; // Disable DMA
       ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:321:7: note: suggested alternative: 'DEPC'
       DMAC->CTRL.bit.DMAENABLE = 0; // Disable DMA
       ^~~~
       DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:322:7: error: 'PM' was not declared in this scope
       PM->APBBMASK.bit.DMAC_ = 0;   // Disable DMA clocks
       ^~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:322:7: note: suggested alternative: 'PI'
       PM->APBBMASK.bit.DMAC_ = 0;   // Disable DMA clocks
       ^~
       PI
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:326:5: error: '_dmaPtr' was not declared in this scope
     _dmaPtr[channel] = NULL;
     ^~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In member function 'ZeroDMAstatus Adafruit_ZeroDMA::startJob()':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:346:25: error: 'DMAC_CH_NUM' was not declared in this scope
   } else if (channel >= DMAC_CH_NUM) {
                         ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:346:25: note: suggested alternative: 'EMAC_CLK_OUT'
   } else if (channel >= DMAC_CH_NUM) {
                         ^~~~~~~~~~~
                         EMAC_CLK_OUT
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:348:34: error: '_descriptor' was not declared in this scope
   } else if (!hasDescriptors || (_descriptor[channel].BTCNT.reg <= 0)) {
                                  ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:348:34: note: suggested alternative: 'hasDescriptors'
   } else if (!hasDescriptors || (_descriptor[channel].BTCNT.reg <= 0)) {
                                  ^~~~~~~~~~~
                                  hasDescriptors
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:363:5: error: 'DMAC' was not declared in this scope
     DMAC->CHID.bit.ID = channel;
     ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:363:5: note: suggested alternative: 'DEPC'
     DMAC->CHID.bit.ID = channel;
     ^~~~
     DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:364:28: error: 'DMAC_CHINTENSET_MASK' was not declared in this scope
     DMAC->CHINTENSET.reg = DMAC_CHINTENSET_MASK & interruptMask;
                            ^~~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:364:28: note: suggested alternative: 'DMA_STEPSEL_DST'
     DMAC->CHINTENSET.reg = DMAC_CHINTENSET_MASK & interruptMask;
                            ^~~~~~~~~~~~~~~~~~~~
                            DMA_STEPSEL_DST
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:365:28: error: 'DMAC_CHINTENCLR_MASK' was not declared in this scope
     DMAC->CHINTENCLR.reg = DMAC_CHINTENCLR_MASK & ~interruptMask;
                            ^~~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:365:28: note: suggested alternative: 'XCHAL_INTLEVEL9_MASK'
     DMAC->CHINTENCLR.reg = DMAC_CHINTENCLR_MASK & ~interruptMask;
                            ^~~~~~~~~~~~~~~~~~~~
                            XCHAL_INTLEVEL9_MASK
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In member function 'void Adafruit_ZeroDMA::suspend()':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:389:3: error: 'DMAC' was not declared in this scope
   DMAC->CHID.bit.ID = channel;
   ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:389:3: note: suggested alternative: 'DEPC'
   DMAC->CHID.bit.ID = channel;
   ^~~~
   DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:390:24: error: 'DMAC_CHCTRLB_CMD_SUSPEND' was not declared in this scope
   DMAC->CHCTRLB.reg |= DMAC_CHCTRLB_CMD_SUSPEND;
                        ^~~~~~~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:390:24: note: suggested alternative: 'DMA_STATUS_SUSPEND'
   DMAC->CHCTRLB.reg |= DMAC_CHCTRLB_CMD_SUSPEND;
                        ^~~~~~~~~~~~~~~~~~~~~~~~
                        DMA_STATUS_SUSPEND
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In member function 'void Adafruit_ZeroDMA::resume()':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:404:5: error: 'DMAC' was not declared in this scope
     DMAC->CHID.bit.ID = channel;
     ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:404:5: note: suggested alternative: 'DEPC'
     DMAC->CHID.bit.ID = channel;
     ^~~~
     DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:405:26: error: 'DMAC_CHCTRLB_CMD_RESUME' was not declared in this scope
     DMAC->CHCTRLB.reg |= DMAC_CHCTRLB_CMD_RESUME;
                          ^~~~~~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In member function 'void Adafruit_ZeroDMA::abort()':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:421:18: error: 'DMAC_CH_NUM' was not declared in this scope
   if (channel <= DMAC_CH_NUM) {
                  ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:421:18: note: suggested alternative: 'EMAC_CLK_OUT'
   if (channel <= DMAC_CH_NUM) {
                  ^~~~~~~~~~~
                  EMAC_CLK_OUT
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:426:5: error: 'DMAC' was not declared in this scope
     DMAC->CHID.bit.ID = channel; // Select channel
     ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:426:5: note: suggested alternative: 'DEPC'
     DMAC->CHID.bit.ID = channel; // Select channel
     ^~~~
     DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In member function 'void Adafruit_ZeroDMA::setTrigger(uint8_t)':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:441:17: error: 'DMAC_CH_NUM' was not declared in this scope
   if (channel < DMAC_CH_NUM) {
                 ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:441:17: note: suggested alternative: 'EMAC_CLK_OUT'
   if (channel < DMAC_CH_NUM) {
                 ^~~~~~~~~~~
                 EMAC_CLK_OUT
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:446:5: error: 'DMAC' was not declared in this scope
     DMAC->CHID.bit.ID = channel;
     ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:446:5: note: suggested alternative: 'DEPC'
     DMAC->CHID.bit.ID = channel;
     ^~~~
     DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In member function 'void Adafruit_ZeroDMA::setAction(dma_transfer_trigger_action)':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:460:17: error: 'DMAC_CH_NUM' was not declared in this scope
   if (channel < DMAC_CH_NUM) {
                 ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:460:17: note: suggested alternative: 'EMAC_CLK_OUT'
   if (channel < DMAC_CH_NUM) {
                 ^~~~~~~~~~~
                 EMAC_CLK_OUT
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:465:5: error: 'DMAC' was not declared in this scope
     DMAC->CHID.bit.ID = channel;
     ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:465:5: note: suggested alternative: 'DEPC'
     DMAC->CHID.bit.ID = channel;
     ^~~~
     DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In member function 'void Adafruit_ZeroDMA::trigger()':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:474:19: error: 'DMAC_CH_NUM' was not declared in this scope
   if ((channel <= DMAC_CH_NUM) & hasDescriptors)
                   ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:474:19: note: suggested alternative: 'EMAC_CLK_OUT'
   if ((channel <= DMAC_CH_NUM) & hasDescriptors)
                   ^~~~~~~~~~~
                   EMAC_CLK_OUT
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:475:5: error: 'DMAC' was not declared in this scope
     DMAC->SWTRIGCTRL.reg |= (1 << channel);
     ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:475:5: note: suggested alternative: 'DEPC'
     DMAC->SWTRIGCTRL.reg |= (1 << channel);
     ^~~~
     DEPC
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: At global scope:
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:487:1: error: 'DmacDescriptor' does not name a type
 DmacDescriptor *Adafruit_ZeroDMA::addDescriptor(void *src, void *dst,
 ^~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:580:41: error: variable or field 'changeDescriptor' declared void
 void Adafruit_ZeroDMA::changeDescriptor(DmacDescriptor *desc, void *src,
                                         ^~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:580:41: error: 'DmacDescriptor' was not declared in this scope
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:580:57: error: 'desc' was not declared in this scope
 void Adafruit_ZeroDMA::changeDescriptor(DmacDescriptor *desc, void *src,
                                                         ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:580:57: note: suggested alternative: 'getc'
 void Adafruit_ZeroDMA::changeDescriptor(DmacDescriptor *desc, void *src,
                                                         ^~~~
                                                         getc
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:580:63: error: expected primary-expression before 'void'
 void Adafruit_ZeroDMA::changeDescriptor(DmacDescriptor *desc, void *src,
                                                               ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:581:41: error: expected primary-expression before 'void'
                                         void *dst, uint32_t count) {
                                         ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:581:61: error: expected primary-expression before 'count'
                                         void *dst, uint32_t count) {
                                                             ^~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In member function 'void Adafruit_ZeroDMA::loop(boolean)':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:654:5: error: 'DmacDescriptor' was not declared in this scope
     DmacDescriptor *desc = &_descriptor[channel];
     ^~~~~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:654:5: note: suggested alternative: 'hasDescriptors'
     DmacDescriptor *desc = &_descriptor[channel];
     ^~~~~~~~~~~~~~
     hasDescriptors
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:654:21: error: 'desc' was not declared in this scope
     DmacDescriptor *desc = &_descriptor[channel];
                     ^~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:654:21: note: suggested alternative: 'getc'
     DmacDescriptor *desc = &_descriptor[channel];
                     ^~~~
                     getc
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:654:29: error: '_descriptor' was not declared in this scope
     DmacDescriptor *desc = &_descriptor[channel];
                             ^~~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:654:29: note: suggested alternative: 'hasDescriptors'
     DmacDescriptor *desc = &_descriptor[channel];
                             ^~~~~~~~~~~
                             hasDescriptors
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:657:31: error: expected primary-expression before ')' token
       desc = (DmacDescriptor *)desc->DESCADDR.reg;
                               ^
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp: In member function 'bool Adafruit_ZeroDMA::isActive()':
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:706:10: error: '_writeback' was not declared in this scope
   return _writeback[channel].BTCTRL.bit.VALID;
          ^~~~~~~~~~
.pio/libdeps/m5stack-stamps3/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp:706:10: note: suggested alternative: '_write_r'
   return _writeback[channel].BTCTRL.bit.VALID;
          ^~~~~~~~~~
          _write_r
*** [.pio/build/m5stack-stamps3/libf74/Adafruit Zero DMA Library/Adafruit_ZeroDMA.cpp.o] Error 1
====================================================================== [FAILED] Took 9.64 seconds ======================================================================

The Adafruit Zero DMA Library (which is installed as a dependency beside of the other of tons of depenencies this library comes with) is for architecture samd (see library.properties).

After adding a few lines to the beginning of the example code:

#include <Arduino.h>
#define LED_BUILTIN -1
uint32_t rain(uint32_t now, uint8_t row, int pixelNum);

and to the platformio.ini:

lib_ignore =
  Adafruit Zero DMA Library

I was able to compile the example successfully…with tons of warnings.

Personally: I try to avoid using Adafruit libraries whenever I can.

Wut? The Zero DMA library is intended for SAMD21 chips (https://github.com/adafruit/Adafruit_ZeroDMA/). You are compiling for an ESP32S3.

PlatformIO is picking up the wrong library dependencies. If Neopxl8 hard-depends on the Zero DMA library, you won’T be able to use it as-is. If it can work without that library, use lib_ldf_mode — PlatformIO v6.1 documentation with deep+ to hopefully correct the dependency tree.

Hi max!
Unfortunately lib_ldf_mode = deep+ doesn’t fix the issue.

I had the same word in mind when I saw all those dependencies NeoPXL8 comes with:
image

All those libraries have been installed by a single line: lib_deps = Adafruit NeoPXL8

This is faithfull to the library.properties though.

It seems to need much less though.

Worst case, it’ll be lots of

lib_ignore = 
   lib1
   lib2
   ...
[env:m5stack-stamps3]
platform = espressif32
board = m5stack-stamps3
framework = arduino
lib_deps =
  adafruit/Adafruit NeoPXL8@^1.2.6
lib_ignore =
  Adafruit Zero DMA Library
  Adafruit TinyUSB Library
  SdFat - Adafruit Fork

works just fine with strandtest.ino properly converted to .cpp.

1 Like

Works for me too. Thank you all very much