From 5301eaf0d82585c451ad6f274d970d8c7c0e6022 Mon Sep 17 00:00:00 2001 From: Darian Leung <32921628+Dazza0@users.noreply.github.com> Date: Wed, 19 Feb 2025 18:39:18 +0800 Subject: [PATCH 1/3] fix(examples): Fix idf_as_lib for esp32p4 The build-esp32p4.sh and run-esp32p4.sh scripts are not symbolic links to the base scripts, leading to a "permission denied" error. This commit changes their types to symbolic links, in line with the other targets. --- .../cmake/idf_as_lib/build-esp32p4.sh | 18 +----------------- .../cmake/idf_as_lib/run-esp32p4.sh | 5 +---- 2 files changed, 2 insertions(+), 21 deletions(-) mode change 100644 => 120000 examples/build_system/cmake/idf_as_lib/build-esp32p4.sh mode change 100644 => 120000 examples/build_system/cmake/idf_as_lib/run-esp32p4.sh diff --git a/examples/build_system/cmake/idf_as_lib/build-esp32p4.sh b/examples/build_system/cmake/idf_as_lib/build-esp32p4.sh deleted file mode 100644 index 9a18dc76db01..000000000000 --- a/examples/build_system/cmake/idf_as_lib/build-esp32p4.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail -PARAM="" - -# Retrive the target from the current filename, if no target specified, -# the variable will be empty -TARGET=$(echo $0 | cut -s -f2 -d- | cut -s -f1 -d.) -if [[ -n $TARGET ]] -then - # Target is not null, specify the build parameters - PARAM="-DCMAKE_TOOLCHAIN_FILE=$IDF_PATH/tools/cmake/toolchain-${TARGET}.cmake -DTARGET=${TARGET} -GNinja" -fi - -rm -rf build && mkdir build && cd build -cmake .. $PARAM -cmake --build . diff --git a/examples/build_system/cmake/idf_as_lib/build-esp32p4.sh b/examples/build_system/cmake/idf_as_lib/build-esp32p4.sh new file mode 120000 index 000000000000..c07a74de4fb4 --- /dev/null +++ b/examples/build_system/cmake/idf_as_lib/build-esp32p4.sh @@ -0,0 +1 @@ +build.sh \ No newline at end of file diff --git a/examples/build_system/cmake/idf_as_lib/run-esp32p4.sh b/examples/build_system/cmake/idf_as_lib/run-esp32p4.sh deleted file mode 100644 index 3d9e0bfba5e5..000000000000 --- a/examples/build_system/cmake/idf_as_lib/run-esp32p4.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash -cd build -python $IDF_PATH/components/esptool_py/esptool/esptool.py -p $1 write_flash @flash_project_args -python -m esp_idf_monitor -p $1 idf_as_lib.elf diff --git a/examples/build_system/cmake/idf_as_lib/run-esp32p4.sh b/examples/build_system/cmake/idf_as_lib/run-esp32p4.sh new file mode 120000 index 000000000000..cde8585ed41a --- /dev/null +++ b/examples/build_system/cmake/idf_as_lib/run-esp32p4.sh @@ -0,0 +1 @@ +run-esp32.sh \ No newline at end of file From 0b6922405d7b0ad82e9a439f54bfb427ac15636b Mon Sep 17 00:00:00 2001 From: Darian Leung <32921628+Dazza0@users.noreply.github.com> Date: Sat, 15 Feb 2025 18:16:49 +0800 Subject: [PATCH 2/3] fix(examples): idf_as_lib move flash_ops.c to spi_flash stub library Example linux build of the example demonstrates "esp32" and "spi_flash" stub libraries (roughly analogous to "esp_system" and "spi_flash" components). This commit moves the "flash_ops.c" file to the "spi_flash" stub library as it is a flash related funciton. Also renamed the header to "esp_flash.h" (in order to match current header name in IDF). This is a prerequisite to fixing the linux build of this example. --- .../build_system/cmake/idf_as_lib/stubs/esp32/CMakeLists.txt | 2 +- .../cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt | 2 +- .../idf_as_lib/stubs/spi_flash/{esp_spi_flash.h => esp_flash.h} | 0 .../cmake/idf_as_lib/stubs/{esp32 => spi_flash}/flash_ops.c | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename examples/build_system/cmake/idf_as_lib/stubs/spi_flash/{esp_spi_flash.h => esp_flash.h} (100%) rename examples/build_system/cmake/idf_as_lib/stubs/{esp32 => spi_flash}/flash_ops.c (100%) diff --git a/examples/build_system/cmake/idf_as_lib/stubs/esp32/CMakeLists.txt b/examples/build_system/cmake/idf_as_lib/stubs/esp32/CMakeLists.txt index df694d2662c1..e3acaef6b3eb 100644 --- a/examples/build_system/cmake/idf_as_lib/stubs/esp32/CMakeLists.txt +++ b/examples/build_system/cmake/idf_as_lib/stubs/esp32/CMakeLists.txt @@ -1,4 +1,4 @@ -add_library(stub_esp32 STATIC system_api.c flash_ops.c cpu_start.c) +add_library(stub_esp32 STATIC system_api.c cpu_start.c) target_include_directories(stub_esp32 PUBLIC .) add_library(stub::esp32 ALIAS stub_esp32) diff --git a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt index c44bb82f1a29..199ac3ada2ba 100644 --- a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt +++ b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt @@ -1,3 +1,3 @@ -add_library(stub_spi_flash INTERFACE) +add_library(stub_spi_flash STATIC flash_ops.c) target_include_directories(stub_spi_flash INTERFACE .) add_library(stub::spi_flash ALIAS stub_spi_flash) diff --git a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/esp_spi_flash.h b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/esp_flash.h similarity index 100% rename from examples/build_system/cmake/idf_as_lib/stubs/spi_flash/esp_spi_flash.h rename to examples/build_system/cmake/idf_as_lib/stubs/spi_flash/esp_flash.h diff --git a/examples/build_system/cmake/idf_as_lib/stubs/esp32/flash_ops.c b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/flash_ops.c similarity index 100% rename from examples/build_system/cmake/idf_as_lib/stubs/esp32/flash_ops.c rename to examples/build_system/cmake/idf_as_lib/stubs/spi_flash/flash_ops.c From 3b28818ba4f1c0ace850ddd893cf28bcf71f2407 Mon Sep 17 00:00:00 2001 From: Darian Leung <32921628+Dazza0@users.noreply.github.com> Date: Sat, 15 Feb 2025 18:28:39 +0800 Subject: [PATCH 3/3] fix(examples): idf_as_lib linux build The Linux build was broken after IDF flash API was updated without updating the Linux stub library in the example. This commit updates the spi_flash stub library such that: - The API now matches same API as IDF's spi_flash component - Links the stub_esp32 library to pull in basic types and defines --- .../cmake/idf_as_lib/stubs/esp32/CMakeLists.txt | 2 -- .../cmake/idf_as_lib/stubs/esp32/esp_system.h | 4 ++++ .../cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt | 3 ++- .../cmake/idf_as_lib/stubs/spi_flash/esp_flash.h | 9 ++++++--- .../cmake/idf_as_lib/stubs/spi_flash/flash_ops.c | 9 ++++++--- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/examples/build_system/cmake/idf_as_lib/stubs/esp32/CMakeLists.txt b/examples/build_system/cmake/idf_as_lib/stubs/esp32/CMakeLists.txt index e3acaef6b3eb..ca45436572d2 100644 --- a/examples/build_system/cmake/idf_as_lib/stubs/esp32/CMakeLists.txt +++ b/examples/build_system/cmake/idf_as_lib/stubs/esp32/CMakeLists.txt @@ -1,5 +1,3 @@ add_library(stub_esp32 STATIC system_api.c cpu_start.c) target_include_directories(stub_esp32 PUBLIC .) add_library(stub::esp32 ALIAS stub_esp32) - -target_link_libraries(stub_esp32 stub::spi_flash) diff --git a/examples/build_system/cmake/idf_as_lib/stubs/esp32/esp_system.h b/examples/build_system/cmake/idf_as_lib/stubs/esp32/esp_system.h index a3d2143c5550..4a8e3af859fc 100644 --- a/examples/build_system/cmake/idf_as_lib/stubs/esp32/esp_system.h +++ b/examples/build_system/cmake/idf_as_lib/stubs/esp32/esp_system.h @@ -9,6 +9,10 @@ extern "C" { #endif +#define ESP_OK 0 /*!< esp_err_t value indicating success (no error) */ + +typedef int esp_err_t; + void esp_restart(void); #ifdef __cplusplus diff --git a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt index 199ac3ada2ba..60550ed7c131 100644 --- a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt +++ b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt @@ -1,3 +1,4 @@ add_library(stub_spi_flash STATIC flash_ops.c) -target_include_directories(stub_spi_flash INTERFACE .) +target_include_directories(stub_spi_flash PUBLIC .) add_library(stub::spi_flash ALIAS stub_spi_flash) +target_link_libraries(stub_spi_flash PUBLIC stub_esp32) diff --git a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/esp_flash.h b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/esp_flash.h index ede1cb373ea5..aa8584c4b3b4 100644 --- a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/esp_flash.h +++ b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/esp_flash.h @@ -1,18 +1,21 @@ /* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Unlicense OR CC0-1.0 */ #pragma once -#include +#include +#include "esp_system.h" #ifdef __cplusplus extern "C" { #endif -int spi_flash_get_chip_size(void); +typedef void * esp_flash_t; + +esp_err_t esp_flash_get_size(esp_flash_t *chip, uint32_t *out_size); #ifdef __cplusplus } diff --git a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/flash_ops.c b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/flash_ops.c index e44eb03361c8..faf0aec0c241 100644 --- a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/flash_ops.c +++ b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/flash_ops.c @@ -1,10 +1,13 @@ /* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Unlicense OR CC0-1.0 */ -int spi_flash_get_chip_size(void) +#include "esp_flash.h" + +esp_err_t esp_flash_get_size(esp_flash_t *chip, uint32_t *out_size) { - return (1024 * 1024 * 1024); + *out_size = 1024 * 1024 * 1024; + return ESP_OK; }