lovyan03 / LovyanGFX

SPI LCD graphics library for ESP32 (ESP-IDF/ArduinoESP32) / ESP8266 (ArduinoESP8266) / SAMD51(Seeed ArduinoSAMD51)
Other
1.12k stars 200 forks source link

Build failure with the latest framework-arduinoespressif32 (idf-release/v4.2 branch) #91

Closed estshorter closed 3 years ago

estshorter commented 3 years ago

Following compilation errors occur when using the latest framework-arduinoespressif32 (idf-release/v4.2 branch) and PlatformIO. I'll create a PR to fix this issue.

Error 1

.pio\libdeps\m5paper-test\LovyanGFX\src\lgfx\platforms\esp32_common.cpp: In function 'void lgfx::spi::init(int, int, int, int, int)':
.pio\libdeps\m5paper-test\LovyanGFX\src\lgfx\platforms\esp32_common.cpp:199:33: error: 'DPORT_SPI_DMA_CHAN_SEL_REG' was not declared in this scope
         DPORT_SET_PERI_REG_BITS(DPORT_SPI_DMA_CHAN_SEL_REG, 3, dma_channel, (spi_host * 2));
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
.pio\libdeps\m5paper-test\LovyanGFX\src\lgfx\platforms\esp32_common.cpp:199:33: note: suggested alternative: 'SOC_SPI_DMA_CHAN_NUM'
         DPORT_SET_PERI_REG_BITS(DPORT_SPI_DMA_CHAN_SEL_REG, 3, dma_channel, (spi_host * 2));
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
                                 SOC_SPI_DMA_CHAN_NUM
.pio\libdeps\m5paper-test\LovyanGFX\src\lgfx\platforms\esp32_common.cpp:199:9: error: 'DPORT_SET_PERI_REG_BITS' was not declared in this scope
         DPORT_SET_PERI_REG_BITS(DPORT_SPI_DMA_CHAN_SEL_REG, 3, dma_channel, (spi_host * 2));
         ^~~~~~~~~~~~~~~~~~~~~~~
.pio\libdeps\m5paper-test\LovyanGFX\src\lgfx\platforms\esp32_common.cpp:199:9: note: suggested alternative: 'SET_PERI_REG_BITS'
         DPORT_SET_PERI_REG_BITS(DPORT_SPI_DMA_CHAN_SEL_REG, 3, dma_channel, (spi_host * 2));
         ^~~~~~~~~~~~~~~~~~~~~~~
         SET_PERI_REG_BITS

Error2

In file included from .pio/libdeps/m5paper-test/LovyanGFX/src/LovyanGFX.hpp:65,
                 from src\main.cpp:2:
.pio/libdeps/m5paper-test/LovyanGFX/src/lgfx/platforms/LGFX_SPI_ESP32.hpp: In function 'void lgfx::spi_dma_transfer_active(int)':
.pio/libdeps/m5paper-test/LovyanGFX/src/lgfx/platforms/LGFX_SPI_ESP32.hpp:65:5: error: 'spicommon_dmaworkaround_transfer_active' was not declared in this scope
     spicommon_dmaworkaround_transfer_active(dmachan);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5paper-test/LovyanGFX/src/lgfx/platforms/LGFX_SPI_ESP32.hpp:65:5: note: suggested alternative: 'spi_dma_transfer_active'
     spicommon_dmaworkaround_transfer_active(dmachan);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     spi_dma_transfer_active
*** [.pio\build\m5paper-test\src\main.cpp.o] Error 1

Code example

platformio.ini

[platformio]
packages_dir = .pio/packages

[env:m5paper-test]
platform = espressif32
board = m5stack-fire
framework = arduino
platform_packages =
    toolchain-xtensa32 @ https://bintray.com/platformio/tool-packages/download_file?file_path=53bcf98-toolchain-xtensa32-windows-2.80400.2020.tar.gz
    framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#idf-release/v4.2
build_flags =
    -DESP32=1
    -DARDUINO_ARCH_ESP32=1
lib_deps =
  lovyan03/LovyanGFX

src/main.cpp

#define LGFX_AUTODETECT
#include <LovyanGFX.hpp>

void setup(void)
{
}

void loop(void)
{
}

Build log for pio run

PS C:\Users\estshorter\src\esp> pio run
Processing m5paper-test (platform: espressif32; board: m5stack-fire; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/m5stack-fire.html
PLATFORM: Espressif 32 (2.1.0) > M5Stack FIRE
HARDWARE: ESP32 240MHz, 6.25MB RAM, 16MB Flash
DEBUG: Current (esp-prog) External (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 0.0.0+sha.7d3f499
 - tool-esptoolpy 1.30000.201119 (3.0.0)
 - toolchain-xtensa32 2.80400.2020 (8.4.0)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 31 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <LovyanGFX> 0.3.5
|   |-- <SPI> 1.0
|   |-- <Wire> 1.0.1
Building in release mode
Compiling .pio\build\m5paper-test\lib64e\LovyanGFX\lgfx\platforms\esp32_common.cpp.o
Compiling .pio\build\m5paper-test\src\main.cpp.o
.pio\libdeps\m5paper-test\LovyanGFX\src\lgfx\platforms\esp32_common.cpp: In function 'void lgfx::spi::init(int, int, int, int, int)':
.pio\libdeps\m5paper-test\LovyanGFX\src\lgfx\platforms\esp32_common.cpp:199:33: error: 'DPORT_SPI_DMA_CHAN_SEL_REG' was not declared in this scope
         DPORT_SET_PERI_REG_BITS(DPORT_SPI_DMA_CHAN_SEL_REG, 3, dma_channel, (spi_host * 2));
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
.pio\libdeps\m5paper-test\LovyanGFX\src\lgfx\platforms\esp32_common.cpp:199:33: note: suggested alternative: 'SOC_SPI_DMA_CHAN_NUM'
         DPORT_SET_PERI_REG_BITS(DPORT_SPI_DMA_CHAN_SEL_REG, 3, dma_channel, (spi_host * 2));
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
                                 SOC_SPI_DMA_CHAN_NUM
.pio\libdeps\m5paper-test\LovyanGFX\src\lgfx\platforms\esp32_common.cpp:199:9: error: 'DPORT_SET_PERI_REG_BITS' was not declared in this scope
         DPORT_SET_PERI_REG_BITS(DPORT_SPI_DMA_CHAN_SEL_REG, 3, dma_channel, (spi_host * 2));
         ^~~~~~~~~~~~~~~~~~~~~~~
.pio\libdeps\m5paper-test\LovyanGFX\src\lgfx\platforms\esp32_common.cpp:199:9: note: suggested alternative: 'SET_PERI_REG_BITS'
         DPORT_SET_PERI_REG_BITS(DPORT_SPI_DMA_CHAN_SEL_REG, 3, dma_channel, (spi_host * 2));
         ^~~~~~~~~~~~~~~~~~~~~~~
         SET_PERI_REG_BITS
Compiling .pio\build\m5paper-test\FrameworkArduino\esp32-hal-matrix.c.o
Compiling .pio\build\m5paper-test\FrameworkArduino\esp32-hal-misc.c.o
Compiling .pio\build\m5paper-test\FrameworkArduino\esp32-hal-psram.c.o
Compiling .pio\build\m5paper-test\FrameworkArduino\esp32-hal-rmt.c.o
Compiling .pio\build\m5paper-test\FrameworkArduino\esp32-hal-sigmadelta.c.o
Compiling .pio\build\m5paper-test\FrameworkArduino\esp32-hal-spi.c.o
Compiling .pio\build\m5paper-test\FrameworkArduino\esp32-hal-time.c.o
Compiling .pio\build\m5paper-test\FrameworkArduino\esp32-hal-timer.c.o
Compiling .pio\build\m5paper-test\FrameworkArduino\esp32-hal-tinyusb.c.o
Compiling .pio\build\m5paper-test\FrameworkArduino\esp32-hal-touch.c.o
Compiling .pio\build\m5paper-test\FrameworkArduino\esp32-hal-uart.c.o
Compiling .pio\build\m5paper-test\FrameworkArduino\libb64\cdecode.c.o
Compiling .pio\build\m5paper-test\FrameworkArduino\libb64\cencode.c.o
Compiling .pio\build\m5paper-test\FrameworkArduino\main.cpp.o
*** [.pio\build\m5paper-test\lib64e\LovyanGFX\lgfx\platforms\esp32_common.cpp.o] Error 1
In file included from .pio/libdeps/m5paper-test/LovyanGFX/src/LovyanGFX.hpp:65,
                 from src\main.cpp:2:
.pio/libdeps/m5paper-test/LovyanGFX/src/lgfx/platforms/LGFX_SPI_ESP32.hpp: In function 'void lgfx::spi_dma_transfer_active(int)':
.pio/libdeps/m5paper-test/LovyanGFX/src/lgfx/platforms/LGFX_SPI_ESP32.hpp:65:5: error: 'spicommon_dmaworkaround_transfer_active' was not declared in this scope
     spicommon_dmaworkaround_transfer_active(dmachan);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.pio/libdeps/m5paper-test/LovyanGFX/src/lgfx/platforms/LGFX_SPI_ESP32.hpp:65:5: note: suggested alternative: 'spi_dma_transfer_active'
     spicommon_dmaworkaround_transfer_active(dmachan);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     spi_dma_transfer_active
*** [.pio\build\m5paper-test\src\main.cpp.o] Error 1
=============================================================================================================== [FAILED] Took 5.28 seconds ===============================================================================================================

Environment

lovyan03 commented 3 years ago

@estshorter Thanks for your pull request !