m5stack / M5Dial-UserDemo

M5Dial user demo for hardware evaluation.
MIT License
43 stars 16 forks source link

Demo doesn't compile with IDF v5.2.1 #13

Open lukas-principiot opened 4 months ago

lukas-principiot commented 4 months ago

I'm running ESP-IDF v5.2.1-dirty and I'm not able to get the demo to compile using idf.py build

Steps to repeat this:

Any ideas?

Compilation error output:

In file included from /home/user/M5Dial-UserDemo/main/apps/launcher/../../hal/utils/ESP32Encoder/src/ESP32Encoder.h:7,
                 from /home/user/M5Dial-UserDemo/main/apps/launcher/../../hal/hal.h:17,
                 from /home/user/M5Dial-UserDemo/main/apps/launcher/launcher.h:13,
                 from /home/user/M5Dial-UserDemo/main/apps/launcher/launcher.cpp:11:
/home/user/esp/esp-idf/components/driver/deprecated/driver/pcnt.h:15:2: warning: #warning "legacy pcnt driver is deprecated, please migrate to use driver/pulse_cnt.h" [-Wcpp]
   15 | #warning "legacy pcnt driver is deprecated, please migrate to use driver/pulse_cnt.h"
      |  ^~~~~~~
In file included from /home/user/M5Dial-UserDemo/main/apps/launcher/../../hal/hal.h:23:
/home/user/M5Dial-UserDemo/main/apps/launcher/../../hal/rtc/hal_rtc.hpp: In member function 'int PCF8563::PCF8563::setAlarmIRQ(int)':
/home/user/M5Dial-UserDemo/main/apps/launcher/../../hal/rtc/hal_rtc.hpp:166:22: error: 'uint8_t' is not a member of 'std'; did you mean 'wint_t'?
  166 |                 std::uint8_t reg_value = _data_buffer[0] & ~0x0C;
      |                      ^~~~~~~
      |                      wint_t
/home/user/M5Dial-UserDemo/main/apps/launcher/../../hal/rtc/hal_rtc.hpp:172:38: error: 'reg_value' was not declared in this scope
  172 |                     _write_reg(0x01, reg_value & ~0x01);
      |                                      ^~~~~~~~~
/home/user/M5Dial-UserDemo/main/apps/launcher/../../hal/rtc/hal_rtc.hpp:182:22: error: 'uint8_t' is not a member of 'std'; did you mean 'wint_t'?
  182 |                 std::uint8_t type_value = 0x82;
      |                      ^~~~~~~
      |                      wint_t
/home/user/M5Dial-UserDemo/main/apps/launcher/../../hal/rtc/hal_rtc.hpp:198:21: error: 'type_value' was not declared in this scope; did you mean 'typename'?
  198 |                     type_value = 0x83;
      |                     ^~~~~~~~~~
      |                     typename
/home/user/M5Dial-UserDemo/main/apps/launcher/../../hal/rtc/hal_rtc.hpp:202:34: error: 'type_value' was not declared in this scope; did you mean 'typename'?
  202 |                 _write_reg(0x0E, type_value);
      |                                  ^~~~~~~~~~
      |                                  typename
/home/user/M5Dial-UserDemo/main/apps/launcher/../../hal/rtc/hal_rtc.hpp:208:35: error: 'reg_value' was not declared in this scope
  208 |                 _write_reg(0x01, (reg_value | 0x01) & ~0x80);
      |                                   ^~~~~~~~~
In file included from /home/user/M5Dial-UserDemo/main/apps/launcher/../app_temp_demo/app_temp_demo.h:14,
                 from /home/user/M5Dial-UserDemo/main/apps/launcher/launcher.h:19:
/home/user/M5Dial-UserDemo/main/apps/launcher/../app_temp_demo/gui/gui_temp_demo.h: At global scope:
/home/user/M5Dial-UserDemo/main/apps/launcher/../app_temp_demo/gui/gui_temp_demo.h:40:39: warning: '_pic_button_list' defined but not used [-Wunused-variable]
   40 | static std::array<const uint16_t*, 2> _pic_button_list =
      |                                       ^~~~~~~~~~~~~~~~
/home/user/M5Dial-UserDemo/main/apps/launcher/../app_temp_demo/gui/gui_temp_demo.h:28:39: warning: '_pic_temp_list' defined but not used [-Wunused-variable]
   28 | static std::array<const uint16_t*, 9> _pic_temp_list =
      |                                       ^~~~~~~~~~~~~~
ninja: build stopped: subcommand failed.
ninja failed with exit code 1, output of the command is in the /home/user/M5Dial-UserDemo/build/log/idf_py_stderr_output_39890 and /home/user/M5Dial-UserDemo/build/log/idf_py_stdout_output_39890
lukas-principiot commented 4 months ago

I was able to successfully compile it under ESP-IDF v5.1.4-213-ge603747a5a so it's a versioning issue with ESP-IDF.

PaulskPt commented 2 days ago

Here tried to build on a Raspberry Pi 5B.

Version: ESP-IDF v5.4-dev-3201-g46acfdce96-dirty

idf.py set-target esp32s3 idf.py menuconfig (went OK) cd build cmake .. -G Ninja ninja

Build failed. (See below at the end)

paulsk@raspi5B-8GB:~/esp/M5Dial-UserDemo/build $ ninja
[13/1525] Generating ../../partition_table/partition-table.bin
Partition table binary generated. Contents:
*******************************************************************************
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
nvs,data,nvs,0x9000,24K,
phy_init,data,phy,0xf000,4K,
factory,app,factory,0x10000,1M,
*******************************************************************************
[381/1525] Performing configure step for 'bootloader'
-- Found Git: /usr/bin/git (found version "2.39.5")
-- The C compiler identification is GNU 14.2.0
-- The CXX compiler identification is GNU 14.2.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/paulsk/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20240906/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/paulsk/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20240906/xtensa-esp-elf/bin/xtensa-esp32s3-elf-                                                  gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/paulsk/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20240906/xtensa-esp-elf/bin/xtensa-esp32s3-el                                                  f-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building ESP-IDF components for target esp32s3
-- Project sdkconfig file /home/paulsk/esp/M5Dial-UserDemo/sdkconfig
-- Compiler supported targets: xtensa-esp-elf
-- Adding linker script /home/paulsk/esp/esp-idf/components/soc/esp32s3/ld/esp32s3.peripherals.ld
-- Bootloader project name: "bootloader" version: 1
-- Adding linker script /home/paulsk/esp/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ld
-- Adding linker script /home/paulsk/esp/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.api.ld
-- Adding linker script /home/paulsk/esp/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.libgcc.ld
-- Adding linker script /home/paulsk/esp/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.wdt.ld
-- Adding linker script /home/paulsk/esp/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.version.ld
-- Adding linker script /home/paulsk/esp/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld
-- Adding linker script /home/paulsk/esp/esp-idf/components/bootloader/subproject/main/ld/esp32s3/bootloader.ld
-- Adding linker script /home/paulsk/esp/esp-idf/components/bootloader/subproject/main/ld/esp32s3/bootloader.rom.ld
-- Components: bootloader bootloader_support efuse esp_app_format esp_bootloader_format esp_common esp_hw_support esp_rom esp_security e                                                  sp_system esptool_py freertos hal log main micro-ecc newlib partition_table soc spi_flash xtensa
-- Component paths: /home/paulsk/esp/esp-idf/components/bootloader /home/paulsk/esp/esp-idf/components/bootloader_support /home/paulsk/e                                                  sp/esp-idf/components/efuse /home/paulsk/esp/esp-idf/components/esp_app_format /home/paulsk/esp/esp-idf/components/esp_bootloader_format                                                   /home/paulsk/esp/esp-idf/components/esp_common /home/paulsk/esp/esp-idf/components/esp_hw_support /home/paulsk/esp/esp-idf/components/e                                                  sp_rom /home/paulsk/esp/esp-idf/components/esp_security /home/paulsk/esp/esp-idf/components/esp_system /home/paulsk/esp/esp-idf/componen                                                  ts/esptool_py /home/paulsk/esp/esp-idf/components/freertos /home/paulsk/esp/esp-idf/components/hal /home/paulsk/esp/esp-idf/components/l                                                  og /home/paulsk/esp/esp-idf/components/bootloader/subproject/main /home/paulsk/esp/esp-idf/components/bootloader/subproject/components/m                                                  icro-ecc /home/paulsk/esp/esp-idf/components/newlib /home/paulsk/esp/esp-idf/components/partition_table /home/paulsk/esp/esp-idf/compone                                                  nts/soc /home/paulsk/esp/esp-idf/components/spi_flash /home/paulsk/esp/esp-idf/components/xtensa
-- Configuring done
-- Generating done
-- Build files have been written to: /home/paulsk/esp/M5Dial-UserDemo/build/bootloader
[460/1525] Performing build step for 'bootloader'
[1/116] Generating project_elf_src_esp32s3.c

[...]

/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c: In function 'panel_io_i2c_tx_buffer':
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:187:5: error: unknown type name 'i2c_master_transmit_multi_buf                                                  fer_info_t'
  187 |     i2c_master_transmit_multi_buffer_info_t lcd_i2c_buffer[3] = {
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:188:9: warning: braces around scalar initializer
  188 |         {.write_buffer = &control_phase_byte, .buffer_size = control_phase_size},
      |         ^
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:188:9: note: (near initialization for 'lcd_i2c_buffer[0]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:188:10: error: field name not in record or union initializer
  188 |         {.write_buffer = &control_phase_byte, .buffer_size = control_phase_size},
      |          ^
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:188:10: note: (near initialization for 'lcd_i2c_buffer[0]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:188:26: error: initialization of 'int' from 'uint8_t *' {aka '                                                  unsigned char *'} makes integer from pointer without a cast [-Wint-conversion]
  188 |         {.write_buffer = &control_phase_byte, .buffer_size = control_phase_size},
      |                          ^
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:188:26: note: (near initialization for 'lcd_i2c_buffer[0]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:188:47: error: field name not in record or union initializer
  188 |         {.write_buffer = &control_phase_byte, .buffer_size = control_phase_size},
      |                                               ^
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:188:47: note: (near initialization for 'lcd_i2c_buffer[0]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:188:62: warning: excess elements in scalar initializer
  188 |         {.write_buffer = &control_phase_byte, .buffer_size = control_phase_size},
      |                                                              ^~~~~~~~~~~~~~~~~~
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:188:62: note: (near initialization for 'lcd_i2c_buffer[0]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:189:9: warning: braces around scalar initializer
  189 |         {.write_buffer = cmd_buffer, .buffer_size = cmd_buffer_size},
      |         ^
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:189:9: note: (near initialization for 'lcd_i2c_buffer[1]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:189:10: error: field name not in record or union initializer
  189 |         {.write_buffer = cmd_buffer, .buffer_size = cmd_buffer_size},
      |          ^
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:189:10: note: (near initialization for 'lcd_i2c_buffer[1]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:189:26: error: initialization of 'int' from 'uint8_t *' {aka '                                                  unsigned char *'} makes integer from pointer without a cast [-Wint-conversion]
  189 |         {.write_buffer = cmd_buffer, .buffer_size = cmd_buffer_size},
      |                          ^~~~~~~~~~
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:189:26: note: (near initialization for 'lcd_i2c_buffer[1]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:189:38: error: field name not in record or union initializer
  189 |         {.write_buffer = cmd_buffer, .buffer_size = cmd_buffer_size},
      |                                      ^
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:189:38: note: (near initialization for 'lcd_i2c_buffer[1]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:189:53: warning: excess elements in scalar initializer
  189 |         {.write_buffer = cmd_buffer, .buffer_size = cmd_buffer_size},
      |                                                     ^~~~~~~~~~~~~~~
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:189:53: note: (near initialization for 'lcd_i2c_buffer[1]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:190:9: warning: braces around scalar initializer
  190 |         {.write_buffer = lcd_buffer, .buffer_size = lcd_buffer_size},
      |         ^
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:190:9: note: (near initialization for 'lcd_i2c_buffer[2]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:190:10: error: field name not in record or union initializer
  190 |         {.write_buffer = lcd_buffer, .buffer_size = lcd_buffer_size},
      |          ^
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:190:10: note: (near initialization for 'lcd_i2c_buffer[2]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:190:26: error: initialization of 'int' from 'uint8_t *' {aka '                                                  unsigned char *'} makes integer from pointer without a cast [-Wint-conversion]
  190 |         {.write_buffer = lcd_buffer, .buffer_size = lcd_buffer_size},
      |                          ^~~~~~~~~~
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:190:26: note: (near initialization for 'lcd_i2c_buffer[2]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:190:38: error: field name not in record or union initializer
  190 |         {.write_buffer = lcd_buffer, .buffer_size = lcd_buffer_size},
      |                                      ^
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:190:38: note: (near initialization for 'lcd_i2c_buffer[2]')
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:190:53: warning: excess elements in scalar initializer
  190 |         {.write_buffer = lcd_buffer, .buffer_size = lcd_buffer_size},
      |                                                     ^~~~~~~~~~~~~~~
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:190:53: note: (near initialization for 'lcd_i2c_buffer[2]')
In file included from /home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:21:
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:193:23: error: implicit declaration of function 'i2c_master_mu                                                  lti_buffer_transmit' [-Wimplicit-function-declaration]
  193 |     ESP_GOTO_ON_ERROR(i2c_master_multi_buffer_transmit(i2c_panel_io->i2c_handle, lcd_i2c_buffer, sizeof(lcd_i2c_buffer) / sizeof                                                  (i2c_master_transmit_multi_buffer_info_t), -1), err, TAG, "i2c transaction failed");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/paulsk/esp/esp-idf/components/esp_common/include/esp_check.h:349:30: note: in definition of macro 'ESP_GOTO_ON_ERROR'
  349 |         esp_err_t err_rc_ = (x);                                                                \
      |                              ^
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:193:130: error: 'i2c_master_transmit_multi_buffer_info_t' unde                                                  clared (first use in this function)
  193 |     ESP_GOTO_ON_ERROR(i2c_master_multi_buffer_transmit(i2c_panel_io->i2c_handle, lcd_i2c_buffer, sizeof(lcd_i2c_buffer) / sizeof                                                  (i2c_master_transmit_multi_buffer_info_t), -1), err, TAG, "i2c transaction failed");
      |                                                                                                                                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/paulsk/esp/esp-idf/components/esp_common/include/esp_check.h:349:30: note: in definition of macro 'ESP_GOTO_ON_ERROR'
  349 |         esp_err_t err_rc_ = (x);                                                                \
      |                              ^
/home/paulsk/esp/esp-idf/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c:193:130: note: each undeclared identifier is reported only onc                                                  e for each function it appears in
  193 |     ESP_GOTO_ON_ERROR(i2c_master_multi_buffer_transmit(i2c_panel_io->i2c_handle, lcd_i2c_buffer, sizeof(lcd_i2c_buffer) / sizeof                                                  (i2c_master_transmit_multi_buffer_info_t), -1), err, TAG, "i2c transaction failed");
      |                                                                                                                                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/paulsk/esp/esp-idf/components/esp_common/include/esp_check.h:349:30: note: in definition of macro 'ESP_GOTO_ON_ERROR'
  349 |         esp_err_t err_rc_ = (x);                                                                \
      |                              ^
[927/1525] Building C object esp-idf/protobuf-c/CMakeFiles/__idf_protobuf-c.dir/protobuf-c/protobuf-c/protobuf-c.c.obj
ninja: build stopped: subcommand failed.
paulsk@raspi5B-8GB:~/esp/M5Dial-UserDemo/build $