GNU/Linux - Linux kernel memory access

User space memory access from the Linux kernel

An introduction to Linux memory and user space APIs

By M. Jones

10 August 2010

Archive date: 2023-08-31

虽然字节可能是 Linux 中内存的最低可寻址单位,但页面才是内存的可管理抽象。本文首先讨论 Linux 中的内存管理,然后探讨从内核操作用户地址空间的方法。

Although the byte may be the lowest addressable unit of memory within Linux, it's the page that serves as the managed abstraction of memory. This article begins with a discussion of memory management within Linux, and then explores the methods for manipulation of user address space from the kernel.

Linux memory

在 Linux 中,用户内存和内核内存是独立的,并在不同的地址空间中实现。地址空间是虚拟化的,也就是说,地址是从物理内存中抽象出来的(通过即将详述的过程)。由于地址空间是虚拟化的,因此可以存在很多地址空间。事实上,内核本身驻留在一个地址空间中,而每个进程都驻留在自己的地址空间中。这些地址空间由虚拟内存地址组成,允许许多具有独立地址空间的进程引用一个小得多的物理地址空间(机器中的物理内存)。这不仅方便,而且安全,因为每个地址空间都是独立和隔离的,因此是安全的。

In Linux, user memory and kernel memory are independent and implemented in separate address spaces. The address spaces are virtualized, meaning that the addresses are abstracted from physical memory (through a process detailed shortly). Because the address spaces are virtualized, many can exist. In fact, the kernel itself resides in one address space, and each process resides in its own address space. These address spaces consist of virtual memory addresses, permitting many processes with independent address spaces to refer to a considerably smaller physical address space (the physical memory in the machine). Not only is this convenient, but it's also secure, because each address space is independent and isolated and therefore secure.

但这种安全性也是有代价的。因为每个进程(和内核)都可能拥有指向不同物理内存区域的相同地址,所以无法立即共享内存。幸运的是,我们有一些解决方案。用户进程可以通过 UNIX® 便携式操作系统接口(POSIX)共享内存机制(shmem)共享内存,但需要注意的是,每个进程都可能拥有指向同一物理内存区域的不同虚拟地址。

But there's a cost associated with this security. Because each process (and the kernel) can have identical addresses that refer to different regions of physical memory, it's not immediately possible to share memory. Luckily, a few solutions exist. User processes can share memory through the Portable Operating System Interface for UNIX® (POSIX) shared memory mechanism (shmem), with the caveat that each process may have a different virtual address that refers to the same region of physical memory.

虚拟内存与物理内存的映射是通过页表进行的,页表在底层硬件中实现(见图 1)。硬件本身提供映射,但内核管理页表及其配置。请注意,如图所示,一个进程可能有一个很大的地址空间,但它是稀疏的,这意味着地址空间的小区域(页)通过页表指向物理内存。这样,进程就可以拥有一个庞大的地址空间,而这个地址空间只为特定时间所需的页定义。

The mapping of virtual memory to physical memory occurs through page tables, which are implemented in the underlying hardware (see Figure 1). The hardware itself provides the mapping, but the kernel manages the tables and their configuration. Note that as shown here, a process may have a large address space, but it is sparse, meaning that small regions (pages) of the address space refer to physical memory through the page tables. This permits a process to have a massive address space that is defined only for the pages that are needed at any given time.

Figure 1. Page tables provide the mapping from virtual addresses to physical addresses

图 1:页表提供了从虚拟地址到物理地址的映射

为进程稀疏定义内存的能力意味着底层物理内存可能会被过度占用。通过一个称为分页(在 Linux 中通常称为交换)的过程,较少使用的页面会被动态移动到速度较慢的存储设备(如磁盘)上,以容纳其他需要访问的页面(见图 2)。这种行为允许计算机中的物理内存提供应用程序更需要的页面,同时将不太需要的页面迁移到磁盘,以提高物理内存的利用率。需要注意的是,有些页面可能会指向文件,在这种情况下,如果数据较脏,可以(通过页面缓存)刷新,如果页面干净,则直接丢弃。

Having the ability to sparsely define memory for processes means that the underlying physical memory can be overcommitted. Through a process called paging (though in Linux, it's typically called swap), less-used pages are dynamically moved to a slower storage device (such as a disk) to accommodate other pages that need to be accessed (see Figure 2). This behavior allows the physical memory within the computer to serve pages that an application more readily needs while migrating less-needed pages to disk for improved utilization of the physical memory. Note that some pages can refer to files, in which case, the data can be flushed if di

* 正在执行任务: D:\Espressif\python_env\idf5.5_py3.11_env\Scripts\python.exe D:\Espressif\frameworks\esp-idf-v5.5\tools\idf.py -B c:\Users\Lenovo\esp_electronic_piano\build -DSDKCONFIG='c:\Users\Lenovo\esp_electronic_piano\sdkconfig' reconfigure Executing action: reconfigure Running cmake in directory C:\Users\Lenovo\esp_electronic_piano\build Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DPYTHON=D:\Espressif\python_env\idf5.5_py3.11_env\Scripts\python.exe -DESP_PLATFORM=1 -DSDKCONFIG='c:\Users\Lenovo\esp_electronic_piano\sdkconfig' -DCCACHE_ENABLE=1 C:\Users\Lenovo\esp_electronic_piano"... -- Minimal build - ON -- ccache will be used for faster recompilation -- git rev-parse returned 'fatal: not a git repository (or any of the parent directories): .git' -- Could not use 'git describe' to determine PROJECT_VER. -- Building ESP-IDF components for target esp32 NOTICE: Processing 2 dependencies: NOTICE: [1/2] espressif/led_strip (3.0.1~1) NOTICE: [2/2] idf (5.5.0) -- Project sdkconfig file C:/Users/Lenovo/esp_electronic_piano/sdkconfig Loading defaults file C:/Users/Lenovo/esp_electronic_piano/sdkconfig.defaults... Loading defaults file C:/Users/Lenovo/esp_electronic_piano/sdkconfig.defaults.esp32... -- Compiler supported targets: xtensa-esp-elf -- USING O3 -- App "esp_electronic_piano" version: 1 -- Adding linker script C:/Users/Lenovo/esp_electronic_piano/build/esp-idf/esp_system/ld/memory.ld -- Adding linker script C:/Users/Lenovo/esp_electronic_piano/build/esp-idf/esp_system/ld/sections.ld.in -- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.ld -- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.api.ld -- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld -- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.newlib-data.ld -- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.syscalls.ld -- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.libc-funcs.ld -- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.newlib-reent-funcs.ld -- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/ld/esp32.peripherals.ld -- Components: app_update bootloader bootloader_support buzzer cxx driver efuse esp_app_format esp_bootloader_format esp_common esp_driver_ana_cmpr esp_driver_bitscrambler esp_driver_dac esp_driver_gpio esp_driver_gptimer esp_driver_i2c esp_driver_i2s esp_driver_ledc esp_driver_mcpwm esp_driver_parlio esp_driver_pcnt esp_driver_rmt esp_driver_sdio esp_driver_sdm esp_driver_sdmmc esp_driver_sdspi esp_driver_spi esp_driver_tsens esp_driver_twai esp_driver_uart esp_driver_usb_serial_jtag esp_hw_support esp_mm esp_partition esp_pm esp_ringbuf esp_rom esp_security esp_system esp_timer espressif__led_strip esptool_py freertos hal heap log main mbedtls newlib oled partition_table pthread sdmmc soc spi_flash ttp229 ws2812b xtensa -- Component paths: D:/Espressif/frameworks/esp-idf-v5.5/components/app_update D:/Espressif/frameworks/esp-idf-v5.5/components/bootloader D:/Espressif/frameworks/esp-idf-v5.5/components/bootloader_support C:/Users/Lenovo/esp_electronic_piano/components/buzzer D:/Espressif/frameworks/esp-idf-v5.5/components/cxx D:/Espressif/frameworks/esp-idf-v5.5/components/driver D:/Espressif/frameworks/esp-idf-v5.5/components/efuse D:/Espressif/frameworks/esp-idf-v5.5/components/esp_app_format D:/Espressif/frameworks/esp-idf-v5.5/components/esp_bootloader_format D:/Espressif/frameworks/esp-idf-v5.5/components/esp_common D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_bitscrambler D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag D:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support D:/Espressif/frameworks/esp-idf-v5.5/components/esp_mm D:/Espressif/frameworks/esp-idf-v5.5/components/esp_partition D:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm D:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom D:/Espressif/frameworks/esp-idf-v5.5/components/esp_security D:/Espressif/frameworks/esp-idf-v5.5/components/esp_system D:/Espressif/frameworks/esp-idf-v5.5/components/esp_timer C:/Users/Lenovo/esp_electronic_piano/managed_components/espressif__led_strip D:/Espressif/frameworks/esp-idf-v5.5/components/esptool_py D:/Espressif/frameworks/esp-idf-v5.5/components/freertos D:/Espressif/frameworks/esp-idf-v5.5/components/hal D:/Espressif/frameworks/esp-idf-v5.5/components/heap D:/Espressif/frameworks/esp-idf-v5.5/components/log C:/Users/Lenovo/esp_electronic_piano/main D:/Espressif/frameworks/esp-idf-v5.5/components/mbedtls D:/Espressif/frameworks/esp-idf-v5.5/components/newlib C:/Users/Lenovo/esp_electronic_piano/components/oled D:/Espressif/frameworks/esp-idf-v5.5/components/partition_table D:/Espressif/frameworks/esp-idf-v5.5/components/pthread D:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc D:/Espressif/frameworks/esp-idf-v5.5/components/soc D:/Espressif/frameworks/esp-idf-v5.5/components/spi_flash C:/Users/Lenovo/esp_electronic_piano/components/ttp229 C:/Users/Lenovo/esp_electronic_piano/components/ws2812b D:/Espressif/frameworks/esp-idf-v5.5/components/xtensa -- Configuring done (12.3s) -- Generating done (0.5s) -- Build files have been written to: C:/Users/Lenovo/esp_electronic_piano/build * 正在执行任务: D:\Espressif\tools\ninja\1.12.1\ninja.EXE [3/19] Building C object esp-idf/ttp229/CMakeFiles/__idf_ttp229.dir/src/ttp229.c.obj FAILED: esp-idf/ttp229/CMakeFiles/__idf_ttp229.dir/src/ttp229.c.obj ccache D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.5-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/Lenovo/esp_electronic_piano/build/config -IC:/Users/Lenovo/esp_electronic_piano/components/ttp229/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/newlib/platform_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/esp_additions/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/dma/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/ldo/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/debug_probe/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/power_supply/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/. -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/tlsf -ID:/Espressif/frameworks/esp-idf-v5.5/components/log/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/register -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/platform_port/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/include/private -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/deprecated_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/deprecated -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/twai/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai/include -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/Lenovo/esp_electronic_piano=. -fmacro-prefix-map=D:/Espressif/frameworks/esp-idf-v5.5=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/ttp229/CMakeFiles/__idf_ttp229.dir/src/ttp229.c.obj -MF esp-idf\ttp229\CMakeFiles\__idf_ttp229.dir\src\ttp229.c.obj.d -o esp-idf/ttp229/CMakeFiles/__idf_ttp229.dir/src/ttp229.c.obj -c C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c:11:22: error: static declaration of 'key_map' follows non-static declaration 11 | static const uint8_t key_map[16] = {3,2,1,0,15,14,13,12,8,9,10,11,4,5,6,7}; | ^~~~~~~ In file included from C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c:1: C:/Users/Lenovo/esp_electronic_piano/components/ttp229/include/ttp229.h:17:22: note: previous declaration of 'key_map' with type 'const uint8_t[16]' {aka 'const unsigned char[16]'} 17 | extern const uint8_t key_map[16]; | ^~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c:13:15: error: redefinition of 'key_map' 13 | const uint8_t key_map[16] = {3,2,1,0,15,14,13,12,8,9,10,11,4,5,6,7}; | ^~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c:11:22: note: previous definition of 'key_map' with type 'const uint8_t[16]' {aka 'const unsigned char[16]'} 11 | static const uint8_t key_map[16] = {3,2,1,0,15,14,13,12,8,9,10,11,4,5,6,7}; | ^~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c: In function 'ttp229_init': C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c:38:1: error: control reaches end of non-void function [-Werror=return-type] 38 | } | ^ C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c: At top level: C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c:15:20: warning: 'TAG' defined but not used [-Wunused-variable] 15 | static const char *TAG = "TTP229_EXT_FIXED"; | ^~~ cc1.exe: some warnings being treated as errors [4/19] Building C object esp-idf/oled/CMakeFiles/__idf_oled.dir/src/oled.c.obj FAILED: esp-idf/oled/CMakeFiles/__idf_oled.dir/src/oled.c.obj ccache D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.5-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/Lenovo/esp_electronic_piano/build/config -IC:/Users/Lenovo/esp_electronic_piano/components/oled/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/newlib/platform_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/esp_additions/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/dma/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/ldo/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/debug_probe/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/power_supply/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/. -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/tlsf -ID:/Espressif/frameworks/esp-idf-v5.5/components/log/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/register -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/platform_port/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/include/private -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/deprecated_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/deprecated -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/twai/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai/include -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/Lenovo/esp_electronic_piano=. -fmacro-prefix-map=D:/Espressif/frameworks/esp-idf-v5.5=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/oled/CMakeFiles/__idf_oled.dir/src/oled.c.obj -MF esp-idf\oled\CMakeFiles\__idf_oled.dir\src\oled.c.obj.d -o esp-idf/oled/CMakeFiles/__idf_oled.dir/src/oled.c.obj -c C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:145:13: error: conflicting types for 'oled_send_data'; have 'void(const uint8_t *, size_t)' {aka 'void(const unsigned char *, unsigned int)'} 145 | static void oled_send_data(const uint8_t *data, size_t len) | ^~~~~~~~~~~~~~ In file included from C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:1: C:/Users/Lenovo/esp_electronic_piano/components/oled/include/oled.h:8:5: note: previous declaration of 'oled_send_data' with type 'int(const uint8_t *, size_t)' {aka 'int(const unsigned char *, unsigned int)'} 8 | int oled_send_data(const uint8_t *data, size_t len); | ^~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c: In function 'oled_send_data': C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:147:27: error: 'return' with a value, in function returning void [-Wreturn-mismatch] 147 | if (!spi_oled) return -1; | ^ C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:145:13: note: declared here 145 | static void oled_send_data(const uint8_t *data, size_t len) | ^~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:152:12: error: 'return' with a value, in function returning void [-Wreturn-mismatch] 152 | return spi_device_transmit(spi_oled, &t); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:145:13: note: declared here 145 | static void oled_send_data(const uint8_t *data, size_t len) | ^~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c: At top level: C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:170:13: error: conflicting types for 'oled_init'; have 'void(void)' 170 | static void oled_init(void) | ^~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/include/oled.h:6:5: note: previous declaration of 'oled_init' with type 'int(void)' 6 | int oled_init(void); | ^~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:227:13: error: static declaration of 'oled_draw_face_happy' follows non-static declaration 227 | static void oled_draw_face_happy(void) { | ^~~~~~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/include/oled.h:11:6: note: previous declaration of 'oled_draw_face_happy' with type 'void(void)' 11 | void oled_draw_face_happy(void); | ^~~~~~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:264:13: error: static declaration of 'oled_draw_music_symbol' follows non-static declaration 264 | static void oled_draw_music_symbol(void) { | ^~~~~~~~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/include/oled.h:12:6: note: previous declaration of 'oled_draw_music_symbol' with type 'void(void)' 12 | void oled_draw_music_symbol(void); | ^~~~~~~~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:270:13: error: conflicting types for 'oled_draw_menu'; have 'void(const char *, const char **, int)' 270 | static void oled_draw_menu(const char* title, const char* items[], int item_count) { | ^~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/include/oled.h:13:6: note: previous declaration of 'oled_draw_menu' with type 'void(void)' 13 | void oled_draw_menu(void); | ^~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:270:13: warning: 'oled_draw_menu' defined but not used [-Wunused-function] 270 | static void oled_draw_menu(const char* title, const char* items[], int item_count) { | ^~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:264:13: warning: 'oled_draw_music_symbol' defined but not used [-Wunused-function] 264 | static void oled_draw_music_symbol(void) { | ^~~~~~~~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:227:13: warning: 'oled_draw_face_happy' defined but not used [-Wunused-function] 227 | static void oled_draw_face_happy(void) { | ^~~~~~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:170:13: warning: 'oled_init' defined but not used [-Wunused-function] 170 | static void oled_init(void) | ^~~~~~~~~ [5/19] Building C object esp-idf/buzzer/CMakeFiles/__idf_buzzer.dir/src/buzzer.c.obj FAILED: esp-idf/buzzer/CMakeFiles/__idf_buzzer.dir/src/buzzer.c.obj ccache D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.5-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/Lenovo/esp_electronic_piano/build/config -IC:/Users/Lenovo/esp_electronic_piano/components/buzzer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/newlib/platform_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/esp_additions/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/dma/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/ldo/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/debug_probe/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/power_supply/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/. -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/tlsf -ID:/Espressif/frameworks/esp-idf-v5.5/components/log/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/register -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/platform_port/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/include/private -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/deprecated_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/deprecated -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/twai/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai/include -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/Lenovo/esp_electronic_piano=. -fmacro-prefix-map=D:/Espressif/frameworks/esp-idf-v5.5=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/buzzer/CMakeFiles/__idf_buzzer.dir/src/buzzer.c.obj -MF esp-idf\buzzer\CMakeFiles\__idf_buzzer.dir\src\buzzer.c.obj.d -o esp-idf/buzzer/CMakeFiles/__idf_buzzer.dir/src/buzzer.c.obj -c C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5598:13: error: conflicting types for 'buzzer_init'; have 'void(gpio_num_t)' 5598 | static void buzzer_init(gpio_num_t pin) | ^~~~~~~~~~~ In file included from C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:1: C:/Users/Lenovo/esp_electronic_piano/components/buzzer/include/buzzer.h:7:11: note: previous declaration of 'buzzer_init' with type 'esp_err_t(gpio_num_t)' {aka 'int(gpio_num_t)'} 7 | esp_err_t buzzer_init(gpio_num_t pin); | ^~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5620:13: error: conflicting types for 'buzzer_play_tone'; have 'void(uint32_t, uint32_t)' {aka 'void(long unsigned int, long unsigned int)'} 5620 | static void buzzer_play_tone(uint32_t freq_hz, uint32_t duration_ms) | ^~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/buzzer/include/buzzer.h:10:11: note: previous declaration of 'buzzer_play_tone' with type 'esp_err_t(uint32_t, uint32_t)' {aka 'int(long unsigned int, long unsigned int)'} 10 | esp_err_t buzzer_play_tone(uint32_t freq_hz, uint32_t duration_ms); | ^~~~~~~~~~~~~~~~ In file included from D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include/driver/gpio.h:12, from C:/Users/Lenovo/esp_electronic_piano/components/buzzer/include/buzzer.h:2: C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c: In function 'buzzer_play_tone': D:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include/esp_err.h:22:25: error: 'return' with a value, in function returning void [-Wreturn-mismatch] 22 | #define ESP_OK 0 /*!< esp_err_t value indicating success (no error) */ | ^ C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5625:16: note: in expansion of macro 'ESP_OK' 5625 | return ESP_OK; | ^~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5620:13: note: declared here 5620 | static void buzzer_play_tone(uint32_t freq_hz, uint32_t duration_ms) | ^~~~~~~~~~~~~~~~ D:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include/esp_err.h:22:25: error: 'return' with a value, in function returning void [-Wreturn-mismatch] 22 | #define ESP_OK 0 /*!< esp_err_t value indicating success (no error) */ | ^ C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5635:12: note: in expansion of macro 'ESP_OK' 5635 | return ESP_OK; | ^~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5620:13: note: declared here 5620 | static void buzzer_play_tone(uint32_t freq_hz, uint32_t duration_ms) | ^~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c: At top level: C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5639:13: error: conflicting types for 'buzzer_play_key'; have 'void(int)' 5639 | static void buzzer_play_key(int key) | ^~~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/buzzer/include/buzzer.h:13:11: note: previous declaration of 'buzzer_play_key' with type 'esp_err_t(int)' {aka 'int(int)'} 13 | esp_err_t buzzer_play_key(int key); | ^~~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c: In function 'buzzer_play_key': D:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include/esp_err.h:26:37: error: 'return' with a value, in function returning void [-Wreturn-mismatch] 26 | #define ESP_ERR_INVALID_ARG 0x102 /*!< Invalid argument */ | ^~~~~ C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5641:38: note: in expansion of macro 'ESP_ERR_INVALID_ARG' 5641 | if (key < 0 || key >= 16) return ESP_ERR_INVALID_ARG; | ^~~~~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5639:13: note: declared here 5639 | static void buzzer_play_key(int key) | ^~~~~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c: At top level: C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5639:13: warning: 'buzzer_play_key' defined but not used [-Wunused-function] C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5598:13: warning: 'buzzer_init' defined but not used [-Wunused-function] 5598 | static void buzzer_init(gpio_num_t pin) | ^~~~~~~~~~~ [6/19] Building C object esp-idf/ws2812b/CMakeFiles/__idf_ws2812b.dir/src/ws2812b.c.obj FAILED: esp-idf/ws2812b/CMakeFiles/__idf_ws2812b.dir/src/ws2812b.c.obj ccache D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.5-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/Lenovo/esp_electronic_piano/build/config -IC:/Users/Lenovo/esp_electronic_piano/components/ws2812b/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/newlib/platform_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/esp_additions/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/dma/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/ldo/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/debug_probe/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/power_supply/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/. -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/tlsf -ID:/Espressif/frameworks/esp-idf-v5.5/components/log/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/register -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/platform_port/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/include/private -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/deprecated_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/deprecated -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/twai/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai/include -IC:/Users/Lenovo/esp_electronic_piano/managed_components/espressif__led_strip/include -IC:/Users/Lenovo/esp_electronic_piano/managed_components/espressif__led_strip/interface -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/Lenovo/esp_electronic_piano=. -fmacro-prefix-map=D:/Espressif/frameworks/esp-idf-v5.5=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/ws2812b/CMakeFiles/__idf_ws2812b.dir/src/ws2812b.c.obj -MF esp-idf\ws2812b\CMakeFiles\__idf_ws2812b.dir\src\ws2812b.c.obj.d -o esp-idf/ws2812b/CMakeFiles/__idf_ws2812b.dir/src/ws2812b.c.obj -c C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.c C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.c:36:13: error: conflicting types for 'ws2812b_init'; have 'void(void)' 36 | static void ws2812b_init(void){ | ^~~~~~~~~~~~ In file included from C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.c:1: C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/include/ws2812b.h:7:5: note: previous declaration of 'ws2812b_init' with type 'int(void)' 7 | int ws2812b_init(void); | ^~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.c:115:5: error: conflicting types for 'ws2812b_init'; have 'int(void)' 115 | int ws2812b_init(void){ | ^~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.c:36:13: note: previous definition of 'ws2812b_init' with type 'void(void)' 36 | static void ws2812b_init(void){ | ^~~~~~~~~~~~ C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.c:36:13: warning: 'ws2812b_init' defined but not used [-Wunused-function] C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.c:21:21: error: 'tp_to_led_idx' defined but not used [-Werror=unused-const-variable=] 21 | static const int8_t tp_to_led_idx[16] = { | ^~~~~~~~~~~~~ cc1.exe: some warnings being treated as errors [7/19] Performing build step for 'bootloader' [1/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/log_timestamp.c.obj [2/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/util.c.obj [3/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/log_lock.c.obj [4/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_timestamp_common.c.obj [5/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/util.c.obj [6/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_crc.c.obj [7/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_print.c.obj [8/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_format_text.c.obj [9/118] Building ASM object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_longjmp.S.obj [10/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log.c.obj [11/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_uart.c.obj [12/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_sys.c.obj [13/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/buffer/log_buffers.c.obj [14/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_efuse.c.obj [15/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_gpio.c.obj [16/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/esp_memory_utils.c.obj [17/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/esp_cpu_intr.c.obj [18/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/cpu_region_protect.c.obj [19/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_print.c.obj [20/118] Building C object esp-idf/esp_common/CMakeFiles/__idf_esp_common.dir/src/esp_err_to_name.c.obj [21/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/cpu.c.obj [22/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32/esp_efuse_table.c.obj [23/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/chip_info.c.obj [24/118] Building C object esp-idf/esp_system/CMakeFiles/__idf_esp_system.dir/esp_err.c.obj [25/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_spiflash.c.obj [26/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_init.c.obj [27/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32/esp_efuse_fields.c.obj [28/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_time.c.obj [29/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_clk_init.c.obj [30/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_sleep.c.obj [31/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_fields.c.obj [32/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32/esp_efuse_utility.c.obj [33/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_efuse.c.obj [34/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random.c.obj [35/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_mem.c.obj [36/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/efuse_controller/keys/without_key_purposes/three_key_blocks/esp_efuse_api_key.c.obj [37/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_utility.c.obj [38/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_clk.c.obj [39/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_api.c.obj [40/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/secure_boot.c.obj [41/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_clock_init.c.obj [42/118] Linking C static library esp-idf\log\liblog.a [43/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random_esp32.c.obj [44/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_common.c.obj [45/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_common_loader.c.obj [46/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_encrypt.c.obj [47/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/flash_qio_mode.c.obj [48/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_partitions.c.obj [49/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_sha.c.obj [50/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32/bootloader_soc.c.obj [51/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_clock_loader.c.obj [52/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/bootloader_flash_config_esp32.c.obj [53/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/bootloader_flash.c.obj [54/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_console_loader.c.obj [55/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/mpu_hal.c.obj [56/118] Building C object esp-idf/esp_bootloader_format/CMakeFiles/__idf_esp_bootloader_format.dir/esp_bootloader_desc.c.obj [57/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_console.c.obj [58/118] Building C object esp-idf/spi_flash/CMakeFiles/__idf_spi_flash.dir/spi_flash_wrap.c.obj [59/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/hal_utils.c.obj [60/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/dport_access_common.c.obj [61/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/efuse_hal.c.obj [62/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/lldesc.c.obj [63/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/esp32/efuse_hal.c.obj [64/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/interrupts.c.obj [65/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_panic.c.obj [66/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/wdt_hal_iram.c.obj [67/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_init.c.obj [68/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/esp32/cache_hal_esp32.c.obj [69/118] Linking C static library esp-idf\esp_rom\libesp_rom.a [70/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_utility.c.obj [71/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32/bootloader_esp32.c.obj [72/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/dport_access.c.obj [73/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/gpio_periph.c.obj [74/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/uart_periph.c.obj [75/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp_image_format.c.obj [76/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/ledc_periph.c.obj [77/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/spi_periph.c.obj [78/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/emac_periph.c.obj [79/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/adc_periph.c.obj [80/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/pcnt_periph.c.obj [81/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/i2s_periph.c.obj [82/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/sdm_periph.c.obj [83/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/mmu_hal.c.obj [84/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/rmt_periph.c.obj [85/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/touch_sensor_periph.c.obj [86/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/wdt_periph.c.obj [87/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/lcd_periph.c.obj [88/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/i2c_periph.c.obj [89/118] Generating project_elf_src_esp32.c [90/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/mcpwm_periph.c.obj [91/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/sdmmc_periph.c.obj [92/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/mpi_periph.c.obj [93/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/twai_periph.c.obj [94/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/timer_periph.c.obj [95/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/dac_periph.c.obj [96/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/sdio_slave_periph.c.obj [97/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/power_supply_periph.c.obj [98/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/rtc_io_periph.c.obj [99/118] Building C object esp-idf/xtensa/CMakeFiles/__idf_xtensa.dir/eri.c.obj [100/118] Linking C static library esp-idf\esp_common\libesp_common.a [101/118] Building C object esp-idf/xtensa/CMakeFiles/__idf_xtensa.dir/xt_trax.c.obj [102/118] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/bootloader_start.c.obj [103/118] Building C object CMakeFiles/bootloader.elf.dir/project_elf_src_esp32.c.obj [104/118] Linking C static library esp-idf\esp_hw_support\libesp_hw_support.a [105/118] Building C object esp-idf/micro-ecc/CMakeFiles/__idf_micro-ecc.dir/uECC_verify_antifault.c.obj [106/118] Linking C static library esp-idf\esp_system\libesp_system.a [107/118] Linking C static library esp-idf\efuse\libefuse.a [108/118] Linking C static library esp-idf\bootloader_support\libbootloader_support.a [109/118] Linking C static library esp-idf\esp_bootloader_format\libesp_bootloader_format.a [110/118] Linking C static library esp-idf\spi_flash\libspi_flash.a [111/118] Linking C static library esp-idf\hal\libhal.a [112/118] Linking C static library esp-idf\micro-ecc\libmicro-ecc.a [113/118] Linking C static library esp-idf\soc\libsoc.a [114/118] Linking C static library esp-idf\xtensa\libxtensa.a [115/118] Linking C static library esp-idf\main\libmain.a [116/118] Linking C executable bootloader.elf [117/118] Generating binary image from built executable esptool.py v4.9.1 Creating esp32 image... Merged 2 ELF sections Successfully created esp32 image. Generated C:/Users/Lenovo/esp_electronic_piano/build/bootloader/bootloader.bin [118/118] C:\Windows\system32\cmd.exe /C "cd /D C:\Users\Lenovo\esp_electronic_piano\build\bootloader\esp-idf\esptool_py && D:\Espressif\python_env\idf5.5_py3.11_env\Scripts\python.exe D:/Espressif/frameworks/esp-idf-v5.5/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x1000 C:/Users/Lenovo/esp_electronic_piano/build/bootloader/bootloader.bin" Bootloader binary size 0x6680 bytes. 0x980 bytes (8%) free. ninja: build stopped: subcommand failed. * 终端进程“D:\Espressif\tools\ninja\1.12.1\ninja.EXE”已终止,退出代码: 1。
最新发布
10-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值