From 13063c83567ab468814b7a31c313ec7470e864d4 Mon Sep 17 00:00:00 2001 From: Michael O'Cleirigh Date: Mon, 4 Sep 2023 12:17:52 -0400 Subject: [PATCH 01/13] Remove git submodules in favour of shallow checkout approach Instead of using submodules create a script that will make a shallow git clone of the dependency repos: 1. ulab 2. micropython 3. tflite-micro-esp-examples 4. tflite-micro (for non esp32 boards) Pin the versions to the latest releases of each dependency. ulab: 6.0.12 micropython: master esp32-tflite: v1.0.0 tflite-micro: tflite-micro doesn't tag releases so its undefined to be the latest commit on the tip of the main branch. use latest micropython to get upgrade to idf 5.0.2 --- .github/workflows/build_esp32.yml | 2 +- .gitignore | 2 + .gitmodules | 15 -- .vscode/settings.json | 3 +- boards/esp32/MICROLITE/CMakeLists.txt | 8 +- boards/esp32/MICROLITE/main/CMakeLists.txt | 4 +- micropython | 1 - .../microlite/micropython-error-reporter.cpp | 57 -------- .../microlite/micropython-error-reporter.h | 57 -------- .../microlite/micropython_esp.cmake | 137 ++++++++++-------- ...icropython.cmake => micropython_rp2.cmake} | 0 .../microlite/openmv-libtf-updated.cpp | 116 --------------- .../microlite/openmv-libtf.cpp | 32 ++-- micropython-modules/micropython.cmake | 18 ++- micropython-ulab | 1 - .../assemble-unified-image-esp.sh | 0 scripts/build.sh | 39 +++++ .../microlite => scripts}/prepare-tflm-esp.sh | 0 .../microlite => scripts}/prepare-tflm-rp2.sh | 0 .../prepare-tflm-stm32.sh | 0 .../prepare-tflm-unix.sh | 0 tensorflow | 1 - tflm_esp_kernels | 1 - 23 files changed, 154 insertions(+), 340 deletions(-) delete mode 100644 .gitmodules delete mode 160000 micropython delete mode 100644 micropython-modules/microlite/micropython-error-reporter.cpp delete mode 100644 micropython-modules/microlite/micropython-error-reporter.h rename micropython-modules/microlite/{micropython.cmake => micropython_rp2.cmake} (100%) delete mode 100644 micropython-modules/microlite/openmv-libtf-updated.cpp delete mode 160000 micropython-ulab rename {micropython-modules/microlite => scripts}/assemble-unified-image-esp.sh (100%) create mode 100644 scripts/build.sh rename {micropython-modules/microlite => scripts}/prepare-tflm-esp.sh (100%) rename {micropython-modules/microlite => scripts}/prepare-tflm-rp2.sh (100%) rename {micropython-modules/microlite => scripts}/prepare-tflm-stm32.sh (100%) rename {micropython-modules/microlite => scripts}/prepare-tflm-unix.sh (100%) delete mode 160000 tensorflow delete mode 160000 tflm_esp_kernels diff --git a/.github/workflows/build_esp32.yml b/.github/workflows/build_esp32.yml index d960a7e..79e0ea4 100644 --- a/.github/workflows/build_esp32.yml +++ b/.github/workflows/build_esp32.yml @@ -49,7 +49,7 @@ jobs: - name: Setup IDF # if: steps.cache-esp-idf.outputs.cache-hit != 'true' run: | - source ./micropython/tools/ci.sh && ci_esp32_setup_helper v4.3.1 + source ./micropython/tools/ci.sh && ci_esp32_idf50_setup - name: Cache tflm id: cache-tflm uses: actions/cache@v2 diff --git a/.gitignore b/.gitignore index de6aeae..7ae117f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ build lib/*.a micropython-modules/microlite/tflm +dependencies +esp-idf diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 64a9d87..0000000 --- a/.gitmodules +++ /dev/null @@ -1,15 +0,0 @@ -[submodule "micropython"] - path = micropython - url = https://github.com/micropython/micropython.git -[submodule "tensorflow"] - path = tensorflow - url = https://github.com/mocleiri/tflite-micro.git -# branch = main -[submodule "micropython-ulab"] - path = micropython-ulab - url = https://github.com/v923z/micropython-ulab.git -# branch = master -[submodule "tflm_esp_kernels"] - path = tflm_esp_kernels - url = https://github.com/espressif/tflite-micro-esp-examples.git -# branch = master diff --git a/.vscode/settings.json b/.vscode/settings.json index 49f12c1..2985c52 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -63,5 +63,6 @@ } ], "cortex-debug.variableUseNaturalFormat": false, - "cmake.configureOnOpen": false + "cmake.configureOnOpen": false, + "git.ignoreLimitWarning": true } \ No newline at end of file diff --git a/boards/esp32/MICROLITE/CMakeLists.txt b/boards/esp32/MICROLITE/CMakeLists.txt index 1fdbb5e..f9289ed 100644 --- a/boards/esp32/MICROLITE/CMakeLists.txt +++ b/boards/esp32/MICROLITE/CMakeLists.txt @@ -1,17 +1,19 @@ # Top-level cmake file for building MicroPython on ESP32. # Nothing in here needs to be customised, it will work for any board. -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.16) # Set the location of MicroPython, the esp32 port, and the board directory. get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) +set(MICROPY_PORT_DIR ${PROJECT_DIR}/dependencies/micropython/ports/esp32) get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) message (STATUS "PROJECT_DIR=${PROJECT_DIR}") message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") +set(EXTRA_COMPONENT_DIRS ../../../dependencies/tflite-micro-esp-examples/components) + # Define the output sdkconfig so it goes in the build directory. set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) @@ -29,4 +31,4 @@ set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) # Include main IDF cmake file and define the project. include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file +project(micropython) diff --git a/boards/esp32/MICROLITE/main/CMakeLists.txt b/boards/esp32/MICROLITE/main/CMakeLists.txt index b8bec33..d663215 100644 --- a/boards/esp32/MICROLITE/main/CMakeLists.txt +++ b/boards/esp32/MICROLITE/main/CMakeLists.txt @@ -4,10 +4,10 @@ get_filename_component(CURRENT_DIR "." ABSOLUTE) message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) +get_filename_component(MICROPY_DIR "../../../../dependencies/micropython" ABSOLUTE) message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file +include(${PROJECT_DIR}/main_esp32/CMakeLists.txt) diff --git a/micropython b/micropython deleted file mode 160000 index 9b48634..0000000 --- a/micropython +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9b486340da22931cde82872f79e1c34db959548b diff --git a/micropython-modules/microlite/micropython-error-reporter.cpp b/micropython-modules/microlite/micropython-error-reporter.cpp deleted file mode 100644 index f5819da..0000000 --- a/micropython-modules/microlite/micropython-error-reporter.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file is part of the Tensorflow Micropython Examples Project. - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Michael O'Cleirigh - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#include "micropython-error-reporter.h" - -#include - -namespace microlite { - -int MicropythonErrorReporter::Report(const char* format, ...) { - - va_list args; - va_start(args, format); - MicropythonErrorReporter::Report(format, args); - va_end(args); - - return 0; - -} - -int MicropythonErrorReporter::Report(const char* format, va_list args) { - - static constexpr int kMaxLogLen = 256; - char log_buffer[kMaxLogLen]; - - MicroVsnprintf(log_buffer, kMaxLogLen, format, args); - - mp_printf(MP_PYTHON_PRINTER, log_buffer); - mp_printf(MP_PYTHON_PRINTER, "\n"); - - return 0; - -} - -} // end microlite diff --git a/micropython-modules/microlite/micropython-error-reporter.h b/micropython-modules/microlite/micropython-error-reporter.h deleted file mode 100644 index 900746c..0000000 --- a/micropython-modules/microlite/micropython-error-reporter.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file is part of the Tensorflow Micropython Examples Project. - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Michael O'Cleirigh - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#ifndef MICROPYTHON__ERROR_REPORTER_H_ -#define MICROPYTHON__ERROR_REPORTER_H_ - -#include - -#include "tensorflow/lite/core/api/error_reporter.h" -#include "tensorflow/lite/micro/compatibility.h" -#include "tensorflow/lite/micro/micro_string.h" - -namespace microlite { - -class MicropythonErrorReporter : public tflite::ErrorReporter { - public: - ~MicropythonErrorReporter() override {} - int Report(const char* format, va_list args) override; - int Report(const char* format, ...); - - private: - TF_LITE_REMOVE_VIRTUAL_DELETE -}; - -} // namespace tflite - -extern "C" { - // added the micropython functions used by MicropythonErrorReporter implementation here to prevent the c++ compiler - // from mangling the names which then prevents the linker from working properly. -#include "py/mpprint.h" -int mp_printf(const mp_print_t *print, const char *fmt, ...); -int mp_vprintf(const mp_print_t *print, const char *fmt, va_list args); -} - -#endif diff --git a/micropython-modules/microlite/micropython_esp.cmake b/micropython-modules/microlite/micropython_esp.cmake index 8fc3527..469e0e7 100644 --- a/micropython-modules/microlite/micropython_esp.cmake +++ b/micropython-modules/microlite/micropython_esp.cmake @@ -1,67 +1,82 @@ -# File to contain all the source list for Espressif boards to build +# +# This file is part of the Tensorflow Micropython Examples Project. +# +# The MIT License (MIT) +# +# Copyright (c) 2021 Michael O'Cleirigh +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +#/ -if(IDF_TARGET STREQUAL "esp32") - set(MICROLITE_PLATFORM "ESP32") -endif() +add_library(microlite INTERFACE) -if(IDF_TARGET STREQUAL "esp32s2") - set(MICROLITE_PLATFORM "ESP32S2") -endif() +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++") -if(IDF_TARGET STREQUAL "esp32s3") - set(MICROLITE_PLATFORM "ESP32S3") -endif() +set (COMPONENTS esp-tflite-micro) -if(IDF_TARGET STREQUAL "esp32c3") - set(MICROLITE_PLATFORM "ESP32C3") -endif() +target_sources(microlite INTERFACE +# microlite micropython module sources + ${CMAKE_CURRENT_LIST_DIR}/tensorflow-microlite.c + ${CMAKE_CURRENT_LIST_DIR}/audio_frontend.c + ${CMAKE_CURRENT_LIST_DIR}/openmv-libtf.cpp +) -if (MICROLITE_PLATFORM STREQUAL "ESP32" OR - MICROLITE_PLATFORM STREQUAL "ESP32S3" OR - MICROLITE_PLATFORM STREQUAL "ESP32C3" OR - MICROLITE_PLATFORM STREQUAL "ESP32S2") +get_filename_component(TENSORFLOW_DIR ${CMAKE_CURRENT_LIST_DIR}/../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro ABSOLUTE) +get_filename_component(TENSORFLOW_THIRD_PARTY_DIR ${CMAKE_CURRENT_LIST_DIR}/../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro/third_party ABSOLUTE) + +set (FLATBUFFERS_DIR ${TENSORFLOW_THIRD_PARTY_DIR}/flatbuffers/include) +set (GEMMLOWP_DIR ${TENSORFLOW_THIRD_PARTY_DIR}/gemmlowp) +set (KISSFFT_DIR ${TENSORFLOW_THIRD_PARTY_DIR}/kissfft) +set (RUY_DIR ${TENSORFLOW_THIRD_PARTY_DIR}/ruy) + +# ESP32 +target_include_directories(microlite INTERFACE + ${CMAKE_CURRENT_LIST_DIR} + ${TENSORFLOW_DIR} + ${FLATBUFFERS_DIR} + ${GEMMLOWP_DIR} + ${KISSFFT_DIR} + ${RUY_DIR} +) + +target_compile_definitions(microlite INTERFACE + MODULE_MICROLITE_ENABLED=1 + TF_LITE_STATIC_MEMORY=1 + TF_LITE_MCU_DEBUG_LOG + NDEBUG +) + +target_compile_options(microlite INTERFACE + -Wno-error + -Wno-error=float-conversion + -Wno-error=nonnull + -Wno-error=double-promotion + -Wno-error=pointer-arith + -Wno-error=unused-const-variable + -Wno-error=sign-compare + -Wno-error=stringop-overflow + -fno-exceptions + -O3 + -Wno-error=maybe-uninitialized +) + + +target_link_libraries(usermod INTERFACE microlite) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++") - set(ESP_NN_DIR "${CMAKE_CURRENT_LIST_DIR}/../../tflm_esp_kernels/components/esp-nn") - set(ESP_NN_SRCS - "${ESP_NN_DIR}/src/activation_functions/esp_nn_relu_ansi.c" - "${ESP_NN_DIR}/src/basic_math/esp_nn_add_ansi.c" - "${ESP_NN_DIR}/src/basic_math/esp_nn_mul_ansi.c" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_ansi.c" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_opt.c" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_ansi.c" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_opt.c" - "${ESP_NN_DIR}/src/fully_connected/esp_nn_fully_connected_ansi.c" - "${ESP_NN_DIR}/src/softmax/esp_nn_softmax_ansi.c" - "${ESP_NN_DIR}/src/softmax/esp_nn_softmax_opt.c" - "${ESP_NN_DIR}/src/pooling/esp_nn_avg_pool_ansi.c" - "${ESP_NN_DIR}/src/pooling/esp_nn_max_pool_ansi.c" - ) - if(CONFIG_IDF_TARGET_ESP32S3) - list(APPEND ESP_NN_SRCS - "${ESP_NN_DIR}/src/common/esp_nn_common_functions_esp32s3.S" - "${ESP_NN_DIR}/src/common/esp_nn_multiply_by_quantized_mult_esp32s3.S" - "${ESP_NN_DIR}/src/common/esp_nn_multiply_by_quantized_mult_ver1_esp32s3.S" - "${ESP_NN_DIR}/src/activation_functions/esp_nn_relu_s8_esp32s3.S" - "${ESP_NN_DIR}/src/basic_math/esp_nn_add_s8_esp32s3.S" - "${ESP_NN_DIR}/src/basic_math/esp_nn_mul_s8_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_esp32s3.c" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s8_esp32s3.c" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_s16_mult8_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_s8_mult8_1x1_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_s16_mult4_1x1_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_s8_filter_aligned_input_padded_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s8_mult1_3x3_padded_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s16_mult1_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s16_mult1_3x3_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s16_mult1_3x3_no_pad_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s16_mult8_3x3_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s16_mult4_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s16_mult8_esp32s3.S" - "${ESP_NN_DIR}/src/fully_connected/esp_nn_fully_connected_s8_esp32s3.S" - "${ESP_NN_DIR}/src/pooling/esp_nn_max_pool_s8_esp32s3.S" - "${ESP_NN_DIR}/src/pooling/esp_nn_avg_pool_s8_esp32s3.S") - endif() - set(ESP_NN_INC ${ESP_NN_DIR}/include ${ESP_NN_DIR}/src/common) -endif() diff --git a/micropython-modules/microlite/micropython.cmake b/micropython-modules/microlite/micropython_rp2.cmake similarity index 100% rename from micropython-modules/microlite/micropython.cmake rename to micropython-modules/microlite/micropython_rp2.cmake diff --git a/micropython-modules/microlite/openmv-libtf-updated.cpp b/micropython-modules/microlite/openmv-libtf-updated.cpp deleted file mode 100644 index 8bc203e..0000000 --- a/micropython-modules/microlite/openmv-libtf-updated.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* This file is part of the OpenMV project. - * Copyright (c) 2013-2019 Ibrahim Abdelkader & Kwabena W. Agyeman - * This work is licensed under the MIT license, see the file LICENSE for details. - */ - -// Copied and modified for using with newer tflite-micro sources - -#include "python_ops_resolver.h" -#include "tensorflow/lite/micro/tflite_bridge/micro_error_reporter.h" -#include "tensorflow/lite/micro/micro_interpreter.h" -#include "tensorflow/lite/schema/schema_generated.h" - -#include "tensorflow-microlite.h" -#include "openmv-libtf.h" -#include "micropython-error-reporter.h" -#include - -extern "C" { - STATIC microlite::MicropythonErrorReporter micro_error_reporter; -/* - Return the index'th tensor - */ - TfLiteTensor *libtf_interpreter_get_input_tensor(microlite_interpreter_obj_t *microlite_interpreter, mp_uint_t index) { - - tflite::MicroInterpreter *interpreter = (tflite::MicroInterpreter *)microlite_interpreter->tf_interpreter; - - return interpreter->input((size_t)index); - } - - TfLiteTensor *libtf_interpreter_get_output_tensor(microlite_interpreter_obj_t *microlite_interpreter, mp_uint_t index) { - - tflite::MicroInterpreter *interpreter = (tflite::MicroInterpreter *)microlite_interpreter->tf_interpreter; - - return interpreter->output((size_t)index); - } - - // static int libtf_align_tensor_arena(uint8_t **tensor_arena, size_t *tensor_arena_size) - // { - // tflite::ErrorReporter *error_reporter = µ_error_reporter; - - // error_reporter->Report("Performing Alignment"); - // uint8_t alignment = ((uint8_t) (*tensor_arena)) % 16; - - // if (alignment) { - - // unsigned int fix = 16 - alignment; - - // if ((*tensor_arena_size) < fix) { - // return 1; - // } - - // (*tensor_arena) += fix; - // (*tensor_arena_size) -= fix; - // } - - // return 0; - // } - - - int libtf_interpreter_init(microlite_interpreter_obj_t *microlite_interpreter) { - - tflite::ErrorReporter *error_reporter = µ_error_reporter; - - const tflite::Model *model = tflite::GetModel(microlite_interpreter->model_data->items); - -// if (model->version() != TFLITE_SCHEMA_VERSION) { -// error_reporter->Report("Model provided is schema version is not equal to supported version!"); -// return 1; -// } - - // if (libtf_align_tensor_arena((uint8_t **)microlite_interpreter->tensor_area->items, µlite_interpreter->tensor_area->len)) { - // error_reporter->Report("Align failed!"); - // return 1; - // } - - - microlite_interpreter->tf_error_reporter = (mp_obj_t)error_reporter; - microlite_interpreter->tf_model = (mp_obj_t)model; - - - // tflite::MicroAllocator *allocator = tflite::MicroAllocator::Create( - // (uint8_t*)microlite_interpreter->tensor_area->items, - // microlite_interpreter->tensor_area->len, error_reporter); - - - tflite::PythonOpsResolver op_resolver; - tflite::MicroInterpreter *interpreter = new tflite::MicroInterpreter(model, - op_resolver, - (uint8_t*)microlite_interpreter->tensor_area->items, - microlite_interpreter->tensor_area->len); - - if (interpreter->AllocateTensors() != kTfLiteOk) { - MicroPrintf("AllocateTensors() failed!"); - return 1; - } - - microlite_interpreter->tf_interpreter = (mp_obj_t)interpreter; - - return 0; - } - - int libtf_interpreter_invoke(microlite_interpreter_obj_t *microlite_interpreter) - { - tflite::MicroInterpreter *interpreter = (tflite::MicroInterpreter *)microlite_interpreter->tf_interpreter; - - mp_call_function_1(microlite_interpreter->input_callback, microlite_interpreter); - - if (interpreter->Invoke() != kTfLiteOk) { - MicroPrintf("Invoke() failed!"); - return 1; - } - - mp_call_function_1(microlite_interpreter->output_callback, microlite_interpreter); - return 0; - } -} diff --git a/micropython-modules/microlite/openmv-libtf.cpp b/micropython-modules/microlite/openmv-libtf.cpp index dca0df3..404212b 100644 --- a/micropython-modules/microlite/openmv-libtf.cpp +++ b/micropython-modules/microlite/openmv-libtf.cpp @@ -3,22 +3,19 @@ * This work is licensed under the MIT license, see the file LICENSE for details. */ -#include "tensorflow/lite/micro/all_ops_resolver.h" +// Copied and modified for using with newer tflite-micro sources + +#include "python_ops_resolver.h" #include "tensorflow/lite/micro/tflite_bridge/micro_error_reporter.h" #include "tensorflow/lite/micro/micro_interpreter.h" #include "tensorflow/lite/schema/schema_generated.h" #include "tensorflow-microlite.h" #include "openmv-libtf.h" -#include "micropython-error-reporter.h" #include extern "C" { - STATIC microlite::MicropythonErrorReporter micro_error_reporter; - - - /* Return the index'th tensor */ @@ -27,11 +24,10 @@ extern "C" { tflite::MicroInterpreter *interpreter = (tflite::MicroInterpreter *)microlite_interpreter->tf_interpreter; return interpreter->input((size_t)index); - } TfLiteTensor *libtf_interpreter_get_output_tensor(microlite_interpreter_obj_t *microlite_interpreter, mp_uint_t index) { - + tflite::MicroInterpreter *interpreter = (tflite::MicroInterpreter *)microlite_interpreter->tf_interpreter; return interpreter->output((size_t)index); @@ -82,17 +78,18 @@ extern "C" { // tflite::MicroAllocator *allocator = tflite::MicroAllocator::Create( - // (uint8_t*)microlite_interpreter->tensor_area->items, + // (uint8_t*)microlite_interpreter->tensor_area->items, // microlite_interpreter->tensor_area->len, error_reporter); - tflite::AllOpsResolver resolver; - tflite::MicroInterpreter *interpreter = new tflite::MicroInterpreter(model, - resolver, - (uint8_t*)microlite_interpreter->tensor_area->items, + + tflite::PythonOpsResolver op_resolver; + tflite::MicroInterpreter *interpreter = new tflite::MicroInterpreter(model, + op_resolver, + (uint8_t*)microlite_interpreter->tensor_area->items, microlite_interpreter->tensor_area->len); if (interpreter->AllocateTensors() != kTfLiteOk) { - error_reporter->Report("AllocateTensors() failed!"); + MicroPrintf("AllocateTensors() failed!"); return 1; } @@ -103,21 +100,16 @@ extern "C" { int libtf_interpreter_invoke(microlite_interpreter_obj_t *microlite_interpreter) { - - tflite::ErrorReporter *error_reporter = (tflite::ErrorReporter *)microlite_interpreter->tf_error_reporter; - tflite::MicroInterpreter *interpreter = (tflite::MicroInterpreter *)microlite_interpreter->tf_interpreter; mp_call_function_1(microlite_interpreter->input_callback, microlite_interpreter); if (interpreter->Invoke() != kTfLiteOk) { - error_reporter->Report("Invoke() failed!"); + MicroPrintf("Invoke() failed!"); return 1; } mp_call_function_1(microlite_interpreter->output_callback, microlite_interpreter); - return 0; } - } diff --git a/micropython-modules/micropython.cmake b/micropython-modules/micropython.cmake index 656f0e2..9ab6489 100644 --- a/micropython-modules/micropython.cmake +++ b/micropython-modules/micropython.cmake @@ -24,14 +24,26 @@ # THE SOFTWARE. # -include(${CMAKE_CURRENT_LIST_DIR}/microlite/micropython.cmake) +include(CMakePrintHelpers) + +cmake_print_variables(CMAKE_CURRENT_LIST_DIR) + +if (PICO_SDK_PATH) + include(${CMAKE_CURRENT_LIST_DIR}/microlite/micropython_rp2.cmake) +endif() + +if(IDF_TARGET) + include(${CMAKE_CURRENT_LIST_DIR}/microlite/micropython_esp.cmake) +endif() + # disabled. will be incorporated into microlite in #36 # include(${CMAKE_CURRENT_LIST_DIR}/audio_frontend/micropython.cmake) -include(${CMAKE_CURRENT_LIST_DIR}/../micropython-ulab/code/micropython.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../dependencies/micropython-ulab/code/micropython.cmake) # the camera driver -include(${CMAKE_CURRENT_LIST_DIR}/micropython-camera-driver/micropython.cmake) +#include(${CMAKE_CURRENT_LIST_DIR}/../dependencies/micropython-camera-driver/src/micropython.cmake) + diff --git a/micropython-ulab b/micropython-ulab deleted file mode 160000 index 57de23c..0000000 --- a/micropython-ulab +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 57de23c1fb434ba99aaafe1d00bd77d5cdf5d66b diff --git a/micropython-modules/microlite/assemble-unified-image-esp.sh b/scripts/assemble-unified-image-esp.sh similarity index 100% rename from micropython-modules/microlite/assemble-unified-image-esp.sh rename to scripts/assemble-unified-image-esp.sh diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100644 index 0000000..2484276 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,39 @@ +#!bin/bash + +rm -rf dependencies + +mkdir dependencies + +cd dependencies + +ULAB_VERSION=6.0.12 +#MICRO_PYTHON_VERSION=v1.20.0 +MICRO_PYTHON_VERSION=master +MICROPYTHON_ESP32_CAMERA_DRIVER=master +ESP32_TFLITE_VERSION=v1.0.0 + +# ulab +git clone --depth 1 https://github.com/v923z/micropython-ulab --branch $ULAB_VERSION + +# micropython +git clone --depth 1 https://github.com/micropython/micropython --branch $MICRO_PYTHON_VERSION + +# esp32 - https://github.com/mocleiri/tensorflow-micropython-examples.git +git clone --depth 1 https://github.com/espressif/tflite-micro-esp-examples --branch $ESP32_TFLITE_VERSION + +# esp32-camera actually comes through esp package manager but we need it for the headers +git clone --depth 1 https://github.com/espressif/esp32-camera --branch master + +# micropypthon camera driver +git clone --depth 1 https://github.com/lemariva/micropython-camera-driver --branch $MICROPYTHON_ESP32_CAMERA_DRIVER + +# other platforms - get tflite-micro and run create_tflm_tree.py +# refer to +git clone --depth 1 https://github.com/tensorflow/tflite-micro + + +# build : +# $ cd dependencies/micropython/ports/esp32 +# $ idf.py -DUSER_C_MODULES=../../../../../micropython-modules/micropython.cmake +# + diff --git a/micropython-modules/microlite/prepare-tflm-esp.sh b/scripts/prepare-tflm-esp.sh similarity index 100% rename from micropython-modules/microlite/prepare-tflm-esp.sh rename to scripts/prepare-tflm-esp.sh diff --git a/micropython-modules/microlite/prepare-tflm-rp2.sh b/scripts/prepare-tflm-rp2.sh similarity index 100% rename from micropython-modules/microlite/prepare-tflm-rp2.sh rename to scripts/prepare-tflm-rp2.sh diff --git a/micropython-modules/microlite/prepare-tflm-stm32.sh b/scripts/prepare-tflm-stm32.sh similarity index 100% rename from micropython-modules/microlite/prepare-tflm-stm32.sh rename to scripts/prepare-tflm-stm32.sh diff --git a/micropython-modules/microlite/prepare-tflm-unix.sh b/scripts/prepare-tflm-unix.sh similarity index 100% rename from micropython-modules/microlite/prepare-tflm-unix.sh rename to scripts/prepare-tflm-unix.sh diff --git a/tensorflow b/tensorflow deleted file mode 160000 index 626501f..0000000 --- a/tensorflow +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 626501f6010ce6e073bed0cdec70b692e5d38e11 diff --git a/tflm_esp_kernels b/tflm_esp_kernels deleted file mode 160000 index 2690c7a..0000000 --- a/tflm_esp_kernels +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2690c7a7a27164eea6bd7d38e6fec979e7d1b4ec From bd91b476bc730137832db1a73a76572e3eec00cb Mon Sep 17 00:00:00 2001 From: Michael O'Cleirigh Date: Mon, 4 Sep 2023 12:22:28 -0400 Subject: [PATCH 02/13] [microlite] update for post micropython 1.20.0 module changes --- .../microlite/tensorflow-microlite.c | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/micropython-modules/microlite/tensorflow-microlite.c b/micropython-modules/microlite/tensorflow-microlite.c index 49f4d44..24d9da3 100644 --- a/micropython-modules/microlite/tensorflow-microlite.c +++ b/micropython-modules/microlite/tensorflow-microlite.c @@ -70,7 +70,7 @@ STATIC mp_obj_t tensor_get_tensor_type (mp_obj_t self_in, mp_obj_t index_obj) { TfLiteTensor * tensor = (TfLiteTensor *)self->tf_tensor; - char *type = TfLiteTypeGetName(tensor->type); + const char *type = TfLiteTypeGetName(tensor->type); return mp_obj_new_str(type, strlen(type)); @@ -212,13 +212,13 @@ STATIC const mp_rom_map_elem_t tensor_locals_dict_table[] = { STATIC MP_DEFINE_CONST_DICT(tensor_locals_dict, tensor_locals_dict_table); -const mp_obj_type_t microlite_tensor_type = { - { &mp_type_type }, - .name = MP_QSTR_tensor, - .print = tensor_print, - .locals_dict = (mp_obj_dict_t*)&tensor_locals_dict, -}; - +MP_DEFINE_CONST_OBJ_TYPE( + microlite_tensor_type, + MP_QSTR_tensor, + MP_TYPE_FLAG_NONE, + print, tensor_print, + locals_dict,&tensor_locals_dict +); // audio_frontend STATIC mp_obj_t af_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { @@ -261,13 +261,14 @@ STATIC const mp_rom_map_elem_t audio_frontend_locals_dict_table[] = { STATIC MP_DEFINE_CONST_DICT(audio_frontend_locals_dict, audio_frontend_locals_dict_table); -const mp_obj_type_t microlite_audio_frontend_type = { - { &mp_type_type }, - .name = MP_QSTR_audio_frontend, - .make_new = af_make_new, - .print = af_print, - .locals_dict = (mp_obj_dict_t*)&audio_frontend_locals_dict, -}; +MP_DEFINE_CONST_OBJ_TYPE( + microlite_audio_frontend_type, + MP_QSTR_audio_frontend, + MP_TYPE_FLAG_NONE, + make_new, af_make_new, + print, af_print, + locals_dict, &audio_frontend_locals_dict +); // - microlite interpreter @@ -411,14 +412,14 @@ STATIC const mp_rom_map_elem_t interpreter_locals_dict_table[] = { STATIC MP_DEFINE_CONST_DICT(interpreter_locals_dict, interpreter_locals_dict_table); -const mp_obj_type_t microlite_interpreter_type = { - { &mp_type_type }, - .name = MP_QSTR_interpreter, - .print = interpreter_print, - .make_new = interpreter_make_new, - .locals_dict = (mp_obj_dict_t*)&interpreter_locals_dict, -}; - +MP_DEFINE_CONST_OBJ_TYPE( + microlite_interpreter_type, + MP_QSTR_interpreter, + MP_TYPE_FLAG_NONE, + print, interpreter_print, + make_new, interpreter_make_new, + locals_dict, &interpreter_locals_dict +); // main microlite module @@ -451,4 +452,3 @@ const mp_obj_module_t microlite_cmodule = { MP_REGISTER_MODULE(MP_QSTR_microlite, microlite_cmodule); // #endif - From f57bad141ee9291b9f91b410d2225cf6e57d9e64 Mon Sep 17 00:00:00 2001 From: Michael O'Cleirigh Date: Mon, 4 Sep 2023 22:20:33 -0400 Subject: [PATCH 03/13] [esp32] update MICROLITE board config for latest micropython I copied the micropython board ESP32_GENERIC and replaced MICROLITE with minor adjustments to enable the microlite module and the name of the board. --- boards/esp32/MICROLITE/CMakeLists.txt | 34 ---------- boards/esp32/MICROLITE/board.json | 26 ++++++++ boards/esp32/MICROLITE/board.md | 9 +++ boards/esp32/MICROLITE/main/CMakeLists.txt | 13 ---- boards/esp32/MICROLITE/mpconfigboard.cmake | 63 ++++++++++++++---- boards/esp32/MICROLITE/mpconfigboard.h | 12 +++- boards/esp32/MICROLITE/sdkconfig.d2wd | 10 +++ boards/esp32/MICROLITE/sdkconfig.ota | 6 ++ boards/esp32/MICROLITE/sdkconfig.partition | 2 +- boards/esp32/MICROLITE/sdkconfig.unicore | 1 + .../microlite/micropython_esp.cmake | 3 +- .../microlite/openmv-libtf.cpp | 5 -- scripts/assemble-unified-image-esp.sh | 19 ++++-- scripts/build.sh | 64 +++++++++++-------- 14 files changed, 167 insertions(+), 100 deletions(-) delete mode 100644 boards/esp32/MICROLITE/CMakeLists.txt create mode 100644 boards/esp32/MICROLITE/board.json create mode 100644 boards/esp32/MICROLITE/board.md delete mode 100644 boards/esp32/MICROLITE/main/CMakeLists.txt create mode 100644 boards/esp32/MICROLITE/sdkconfig.d2wd create mode 100644 boards/esp32/MICROLITE/sdkconfig.ota create mode 100644 boards/esp32/MICROLITE/sdkconfig.unicore diff --git a/boards/esp32/MICROLITE/CMakeLists.txt b/boards/esp32/MICROLITE/CMakeLists.txt deleted file mode 100644 index f9289ed..0000000 --- a/boards/esp32/MICROLITE/CMakeLists.txt +++ /dev/null @@ -1,34 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.16) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/dependencies/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -set(EXTRA_COMPONENT_DIRS ../../../dependencies/tflite-micro-esp-examples/components) - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) diff --git a/boards/esp32/MICROLITE/board.json b/boards/esp32/MICROLITE/board.json new file mode 100644 index 0000000..0db38c2 --- /dev/null +++ b/boards/esp32/MICROLITE/board.json @@ -0,0 +1,26 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "BLE", + "External Flash", + "WiFi" + ], + "images": [ + "esp32_devkitc.jpg" + ], + "mcu": "esp32", + "product": "ESP32 / WROOM", + "thumbnail": "", + "url": "https://www.espressif.com/en/products/modules", + "variants": { + "IDF3": "Compiled with IDF 3.x", + "D2WD": "ESP32 D2WD", + "SPIRAM": "Support for SPIRAM / WROVER", + "UNICORE": "ESP32 Unicore", + "OTA": "Support for OTA" + }, + "vendor": "Espressif" +} diff --git a/boards/esp32/MICROLITE/board.md b/boards/esp32/MICROLITE/board.md new file mode 100644 index 0000000..8a66941 --- /dev/null +++ b/boards/esp32/MICROLITE/board.md @@ -0,0 +1,9 @@ +The following files are firmware that should work on most ESP32-based boards +with 4MiB of flash, including WROOM WROVER, SOLO, PICO, and MINI modules. + +If your board is based on a WROVER module, or otherwise has SPIRAM (also known +as PSRAM), then use the "spiram" variant. + +The "d2wd" variant is for ESP32-D2WD chips (with 2MiB flash), and "unicore" is +for single-core ESP32 chips (e.g. the "SOLO" modules). The "ota" variant sets +up the partition table to allow for Over-the-Air updates. diff --git a/boards/esp32/MICROLITE/main/CMakeLists.txt b/boards/esp32/MICROLITE/main/CMakeLists.txt deleted file mode 100644 index d663215..0000000 --- a/boards/esp32/MICROLITE/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../dependencies/micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main_esp32/CMakeLists.txt) diff --git a/boards/esp32/MICROLITE/mpconfigboard.cmake b/boards/esp32/MICROLITE/mpconfigboard.cmake index 645b46e..5daac41 100644 --- a/boards/esp32/MICROLITE/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE/mpconfigboard.cmake @@ -1,19 +1,58 @@ -set (IDF_TARGET esp32) - set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_BOARD_DIR}/sdkconfig.partition - + boards/sdkconfig.base + boards/sdkconfig.ble + ../../../../boards/esp32/ESP32_GENERIC/sdkconfig.partition ) -message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") +if(MICROPY_BOARD_VARIANT STREQUAL "D2WD") + set(SDKCONFIG_DEFAULTS + ${SDKCONFIG_DEFAULTS} + boards/ESP32_GENERIC/sdkconfig.d2wd + ) + + list(APPEND MICROPY_DEF_BOARD + MICROPY_HW_MCU_NAME="ESP32-D2WD" + ) +endif() + +if(MICROPY_BOARD_VARIANT STREQUAL "OTA") + set(SDKCONFIG_DEFAULTS + ${SDKCONFIG_DEFAULTS} + boards/ESP32_GENERIC/sdkconfig.ota + ) + + list(APPEND MICROPY_DEF_BOARD + MICROPY_HW_BOARD_NAME="Generic ESP32 module with OTA" + ) +endif() + +if(MICROPY_BOARD_VARIANT STREQUAL "SPIRAM") + set(SDKCONFIG_DEFAULTS + ${SDKCONFIG_DEFAULTS} + boards/sdkconfig.spiram + ) + + list(APPEND MICROPY_DEF_BOARD + MICROPY_HW_BOARD_NAME="Generic ESP32 module with SPIRAM" + ) +endif() + +if(MICROPY_BOARD_VARIANT STREQUAL "UNICORE") + set(SDKCONFIG_DEFAULTS + ${SDKCONFIG_DEFAULTS} + boards/ESP32_GENERIC/sdkconfig.unicore + ) + + list(APPEND MICROPY_DEF_BOARD + MICROPY_HW_MCU_NAME="ESP32-UNICORE" + ) +endif() + set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() +# set (COMPONENTS esp-tflite-micro) +# list(APPEND IDF_COMPONENTS esp-tflite-micro) +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) \ No newline at end of file diff --git a/boards/esp32/MICROLITE/mpconfigboard.h b/boards/esp32/MICROLITE/mpconfigboard.h index d768e7e..8278987 100644 --- a/boards/esp32/MICROLITE/mpconfigboard.h +++ b/boards/esp32/MICROLITE/mpconfigboard.h @@ -1,2 +1,10 @@ -#define MICROPY_HW_BOARD_NAME "ESP32 module (microlite)" -#define MICROPY_HW_MCU_NAME "ESP32" +// Both of these can be set by mpconfigboard.cmake if a BOARD_VARIANT is +// specified. + +#ifndef MICROPY_HW_BOARD_NAME +#define MICROPY_HW_BOARD_NAME "Microlite ESP32 module" +#endif + +#ifndef MICROPY_HW_MCU_NAME +#define MICROPY_HW_MCU_NAME "Microlite ESP32" +#endif diff --git a/boards/esp32/MICROLITE/sdkconfig.d2wd b/boards/esp32/MICROLITE/sdkconfig.d2wd new file mode 100644 index 0000000..11fd27e --- /dev/null +++ b/boards/esp32/MICROLITE/sdkconfig.d2wd @@ -0,0 +1,10 @@ +# Optimise using -Os to reduce size +CONFIG_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_COMPILER_OPTIMIZATION_PERF=n +CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y + +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions-4MiB.csv" diff --git a/boards/esp32/MICROLITE/sdkconfig.ota b/boards/esp32/MICROLITE/sdkconfig.ota new file mode 100644 index 0000000..4a164aa --- /dev/null +++ b/boards/esp32/MICROLITE/sdkconfig.ota @@ -0,0 +1,6 @@ +CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions-4MiB-ota.csv" + +# Reduce firmware size to fit in the OTA partition. +CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y diff --git a/boards/esp32/MICROLITE/sdkconfig.partition b/boards/esp32/MICROLITE/sdkconfig.partition index 19329a6..7bdf94a 100644 --- a/boards/esp32/MICROLITE/sdkconfig.partition +++ b/boards/esp32/MICROLITE/sdkconfig.partition @@ -4,4 +4,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE/custom-partitions.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/ESP32_GENERIC/custom-partitions.csv" diff --git a/boards/esp32/MICROLITE/sdkconfig.unicore b/boards/esp32/MICROLITE/sdkconfig.unicore new file mode 100644 index 0000000..f0b0b5e --- /dev/null +++ b/boards/esp32/MICROLITE/sdkconfig.unicore @@ -0,0 +1 @@ +CONFIG_FREERTOS_UNICORE=y diff --git a/micropython-modules/microlite/micropython_esp.cmake b/micropython-modules/microlite/micropython_esp.cmake index 469e0e7..0a4c69a 100644 --- a/micropython-modules/microlite/micropython_esp.cmake +++ b/micropython-modules/microlite/micropython_esp.cmake @@ -29,13 +29,14 @@ add_library(microlite INTERFACE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++") -set (COMPONENTS esp-tflite-micro) + target_sources(microlite INTERFACE # microlite micropython module sources ${CMAKE_CURRENT_LIST_DIR}/tensorflow-microlite.c ${CMAKE_CURRENT_LIST_DIR}/audio_frontend.c ${CMAKE_CURRENT_LIST_DIR}/openmv-libtf.cpp + ${CMAKE_CURRENT_LIST_DIR}/python_ops_resolver.cc ) get_filename_component(TENSORFLOW_DIR ${CMAKE_CURRENT_LIST_DIR}/../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro ABSOLUTE) diff --git a/micropython-modules/microlite/openmv-libtf.cpp b/micropython-modules/microlite/openmv-libtf.cpp index 404212b..3c2c6be 100644 --- a/micropython-modules/microlite/openmv-libtf.cpp +++ b/micropython-modules/microlite/openmv-libtf.cpp @@ -6,7 +6,6 @@ // Copied and modified for using with newer tflite-micro sources #include "python_ops_resolver.h" -#include "tensorflow/lite/micro/tflite_bridge/micro_error_reporter.h" #include "tensorflow/lite/micro/micro_interpreter.h" #include "tensorflow/lite/schema/schema_generated.h" @@ -15,7 +14,6 @@ #include extern "C" { - STATIC microlite::MicropythonErrorReporter micro_error_reporter; /* Return the index'th tensor */ @@ -58,8 +56,6 @@ extern "C" { int libtf_interpreter_init(microlite_interpreter_obj_t *microlite_interpreter) { - tflite::ErrorReporter *error_reporter = µ_error_reporter; - const tflite::Model *model = tflite::GetModel(microlite_interpreter->model_data->items); // if (model->version() != TFLITE_SCHEMA_VERSION) { @@ -73,7 +69,6 @@ extern "C" { // } - microlite_interpreter->tf_error_reporter = (mp_obj_t)error_reporter; microlite_interpreter->tf_model = (mp_obj_t)model; diff --git a/scripts/assemble-unified-image-esp.sh b/scripts/assemble-unified-image-esp.sh index bedc4c1..c73fb4c 100755 --- a/scripts/assemble-unified-image-esp.sh +++ b/scripts/assemble-unified-image-esp.sh @@ -1,17 +1,22 @@ #!/bin/bash BASE_DIR=$1 +BUILD_DIR=$2 if test -z "$BASE_DIR"; then - echo "USAGE: " + echo "USAGE: " exit 1 fi +if test -z "$BUILD_DIR"; then + echo "USAGE: " + exit 1 +fi python3 ${BASE_DIR}/makeimg.py \ -build/sdkconfig \ -build/bootloader/bootloader.bin \ -build/partition_table/partition-table.bin \ -build/micropython.bin \ -build/firmware.bin \ -build/micropython.uf2 +${BUILD_DIR}/sdkconfig \ +${BUILD_DIR}/bootloader/bootloader.bin \ +${BUILD_DIR}/partition_table/partition-table.bin \ +${BUILD_DIR}/micropython.bin \ +${BUILD_DIR}/firmware.bin \ +${BUILD_DIR}/micropython.uf2 diff --git a/scripts/build.sh b/scripts/build.sh index 2484276..1ae32e2 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,39 +1,53 @@ #!bin/bash -rm -rf dependencies +function prepare_dependencies { -mkdir dependencies + rm -rf dependencies -cd dependencies + mkdir dependencies -ULAB_VERSION=6.0.12 -#MICRO_PYTHON_VERSION=v1.20.0 -MICRO_PYTHON_VERSION=master -MICROPYTHON_ESP32_CAMERA_DRIVER=master -ESP32_TFLITE_VERSION=v1.0.0 + cd dependencies -# ulab -git clone --depth 1 https://github.com/v923z/micropython-ulab --branch $ULAB_VERSION + ULAB_VERSION=6.0.12 + #MICRO_PYTHON_VERSION=v1.20.0 + MICRO_PYTHON_VERSION=master + MICROPYTHON_ESP32_CAMERA_DRIVER=master + ESP32_TFLITE_VERSION=v1.0.0 -# micropython -git clone --depth 1 https://github.com/micropython/micropython --branch $MICRO_PYTHON_VERSION + # ulab + git clone --depth 1 https://github.com/v923z/micropython-ulab --branch $ULAB_VERSION -# esp32 - https://github.com/mocleiri/tensorflow-micropython-examples.git -git clone --depth 1 https://github.com/espressif/tflite-micro-esp-examples --branch $ESP32_TFLITE_VERSION + # micropython + git clone --depth 1 https://github.com/micropython/micropython --branch $MICRO_PYTHON_VERSION -# esp32-camera actually comes through esp package manager but we need it for the headers -git clone --depth 1 https://github.com/espressif/esp32-camera --branch master + # esp32 - https://github.com/mocleiri/tensorflow-micropython-examples.git + git clone --depth 1 https://github.com/espressif/tflite-micro-esp-examples --branch $ESP32_TFLITE_VERSION -# micropypthon camera driver -git clone --depth 1 https://github.com/lemariva/micropython-camera-driver --branch $MICROPYTHON_ESP32_CAMERA_DRIVER + # esp32-camera actually comes through esp package manager but we need it for the headers + git clone --depth 1 https://github.com/espressif/esp32-camera --branch master -# other platforms - get tflite-micro and run create_tflm_tree.py -# refer to -git clone --depth 1 https://github.com/tensorflow/tflite-micro + # micropypthon camera driver + git clone --depth 1 https://github.com/lemariva/micropython-camera-driver --branch $MICROPYTHON_ESP32_CAMERA_DRIVER + + # other platforms - get tflite-micro and run create_tflm_tree.py + # refer to + git clone --depth 1 https://github.com/tensorflow/tflite-micro + + # build : + # $ cd dependencies/micropython/ports/esp32 + # $ + cd micropython + git submodule init + git submodule update --recursive +} + +function build_esp32 { + + cd dependencies/micropython/ports/esp32 + make BOARD_DIR=../../../../boards/esp32/MICROLITE + # creates the build into dependencies/micropython/ports/esp32/build-MICROLITE + +} -# build : -# $ cd dependencies/micropython/ports/esp32 -# $ idf.py -DUSER_C_MODULES=../../../../../micropython-modules/micropython.cmake -# From 9662651bd1848aaea1773a73b57fb775b33dc536 Mon Sep 17 00:00:00 2001 From: Michael O'Cleirigh Date: Wed, 13 Sep 2023 22:49:35 -0400 Subject: [PATCH 04/13] [esp32] Update MICROLITE_C3 board configuration Also update ci for building esp32 MICROLITE using the new build scripts. --- .github/workflows/build_esp32.yml | 206 ++++-------- .github/workflows/build_esp32c3.yml | 136 ++------ .github/workflows/build_esp32s2.yml | 10 +- .github/workflows/build_esp32s3.yml | 10 +- .github/workflows/build_rp2.yml | 306 +++++++++--------- .github/workflows/build_stm32.yml | 13 +- .github/workflows/build_unix.yml | 10 +- boards/esp32/MICROLITE/mpconfigboard.cmake | 4 +- boards/esp32/MICROLITE/sdkconfig.partition | 2 +- boards/esp32/MICROLITE_C3/CMakeLists.txt | 32 -- .../board.json | 4 +- boards/esp32/MICROLITE_C3/board.md | 7 + boards/esp32/MICROLITE_C3/main/CMakeLists.txt | 13 - boards/esp32/MICROLITE_C3/mpconfigboard.cmake | 18 +- boards/esp32/MICROLITE_C3/mpconfigboard.h | 8 +- boards/esp32/MICROLITE_C3/sdkconfig.c3usb | 7 + boards/esp32/MICROLITE_C3/sdkconfig.partition | 2 +- boards/esp32/MICROLITE_C3_USB/CMakeLists.txt | 32 -- .../MICROLITE_C3_USB/custom-partitions.csv | 10 - .../MICROLITE_C3_USB/main/CMakeLists.txt | 13 - .../MICROLITE_C3_USB/mpconfigboard.cmake | 18 -- boards/esp32/MICROLITE_C3_USB/mpconfigboard.h | 8 - .../MICROLITE_C3_USB/sdkconfig.partition | 21 -- scripts/assemble-unified-image-esp.sh | 12 +- scripts/build.sh | 43 ++- 25 files changed, 335 insertions(+), 610 deletions(-) delete mode 100644 boards/esp32/MICROLITE_C3/CMakeLists.txt rename boards/esp32/{MICROLITE_C3_USB => MICROLITE_C3}/board.json (83%) create mode 100644 boards/esp32/MICROLITE_C3/board.md delete mode 100644 boards/esp32/MICROLITE_C3/main/CMakeLists.txt create mode 100644 boards/esp32/MICROLITE_C3/sdkconfig.c3usb delete mode 100644 boards/esp32/MICROLITE_C3_USB/CMakeLists.txt delete mode 100644 boards/esp32/MICROLITE_C3_USB/custom-partitions.csv delete mode 100644 boards/esp32/MICROLITE_C3_USB/main/CMakeLists.txt delete mode 100644 boards/esp32/MICROLITE_C3_USB/mpconfigboard.cmake delete mode 100644 boards/esp32/MICROLITE_C3_USB/mpconfigboard.h delete mode 100644 boards/esp32/MICROLITE_C3_USB/sdkconfig.partition diff --git a/.github/workflows/build_esp32.yml b/.github/workflows/build_esp32.yml index 79e0ea4..d175ae5 100644 --- a/.github/workflows/build_esp32.yml +++ b/.github/workflows/build_esp32.yml @@ -2,166 +2,100 @@ name: ESP32 # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule on: - push: pull_request: - paths-ignore: - - "examples/**" - - "README.md" - - "ci/*unix*.sh" - - ".github/workflows/build_unix.yml" + paths: + - ".github/workflows/build_esp32.yml" + - "micropython-modules/microlite/**" + - "micropython-modules/micropython-camera-driver/**" + jobs: tensorflow_micropython_esp32_build: runs-on: ubuntu-latest - steps: - name: Checkout repository - uses: actions/checkout@v2 - - name: Prepare to Build Tensorflow Micropython Firmware for ESP32 - run: | - git submodule init - git submodule update --recursive - cd micropython - git submodule update --init lib/axtls - git submodule update --init lib/berkeley-db-1.xx - cd ports/esp32 - make BOARD= submodules - cd ../../.. - cd tflm_esp_kernels - git submodule update --init components/esp32-camera - git submodule update --init components/esp-nn - - name: Get Cache Keys - # later get this like this: git ls-remote --heads https://github.com/espressif/esp-idf - # this commit is hard-coded in micropython/tools/ci.sh - run: | - IDF_COMMIT=142bb32c50fa9875b8b69fa539a2d59559460d72 - echo "esp-idf-commit=$IDF_COMMIT" >> $GITHUB_ENV - TFLM_COMMIT=$(git submodule status tensorflow | awk '{print ($1)}') - echo "tflm-commit=$TFLM_COMMIT" >> $GITHUB_ENV - # - name: Cache esp-idf - # id: cache-esp-idf - # uses: actions/cache@v2 - # env: - # cache-name: cache-esp-idf - # with: - # path: ./esp-idf - # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.esp-idf-commit }} - - name: Setup IDF - # if: steps.cache-esp-idf.outputs.cache-hit != 'true' - run: | - source ./micropython/tools/ci.sh && ci_esp32_idf50_setup - - name: Cache tflm - id: cache-tflm - uses: actions/cache@v2 - env: - cache-name: cache-tflm - with: - path: ./micropython-modules/microlite/tflm - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.tflm-commit }} - - name: Setup Build for Tensorflow -# if: steps.cache-tflm.outputs.cache-hit != 'true' - run: | + uses: actions/checkout@v4 - source ./esp-idf/export.sh - - pip3 install Pillow - pip3 install Wave - - echo "Regenerating microlite/tfm directory" - rm -rf ./micropython-modules/microlite/tflm - - cd ./tensorflow - - ../micropython-modules/microlite/prepare-tflm-esp.sh - - - name: Build micropython cross compiler + - name: Build ESP32-MICROLITE No SPIRAM - 4MB Flash run: | - source ./esp-idf/export.sh - cd ./micropython - echo "make -C mpy-cross V=1 clean all" - make -C mpy-cross V=1 clean all - - - name: Build standard non-psram 4MB Flash firmware - run: | - source ./esp-idf/export.sh - - echo "cd ./boards/esp32/MICROLITE" - cd ./boards/esp32/MICROLITE - - echo "Building MICROLITE" - rm -rf builds - idf.py clean build - - ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ - ../../../micropython/ports/esp32 - - - name: Archive ESP32-MICROLITE firmware - uses: actions/upload-artifact@v2 + mv * .. + cd .. + source ./scripts/build.sh && prepare_dependencies + source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + echo "BUILDING MICROLITE" + source ./scripts/build.sh && build_esp32 "MICROLITE" + TARGET=$(pwd)/dependencies/micropython/ports/esp32 + echo "TARGET=$TARGET" + ./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE" + ls $TARGET/build-MICROLITE + shell: bash + + - name: Archive ESP32-MICROLITE No SPIRAM - 4 MB Flash firmware + uses: actions/upload-artifact@v3 with: name: microlite-esp32-firmware - path: | - boards/esp32/MICROLITE/build/firmware.bin + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE/firmware.bin - - name: Build with psram support and 16MB Flash firmware - run: | - source ./esp-idf/export.sh + # - name: Build with psram support and 16MB Flash firmware + # run: | + # source ./esp-idf/export.sh - echo "cd ./boards/esp32/MICROLITE_SPIRAM_16M" - cd ./boards/esp32/MICROLITE_SPIRAM_16M + # echo "cd ./boards/esp32/MICROLITE_SPIRAM_16M" + # cd ./boards/esp32/MICROLITE_SPIRAM_16M - echo "Building MICROLITE_SPIRAM_16M" - rm -rf build - idf.py clean build + # echo "Building MICROLITE_SPIRAM_16M" + # rm -rf build + # idf.py clean build - ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ - ../../../micropython/ports/esp32 + # ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ + # ../../../micropython/ports/esp32 - - name: Archive ESP32-MICROLITE-SPIRAM-16M firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-spiram-16m-esp32-firmware - path: | - boards/esp32/MICROLITE_SPIRAM_16M/build/firmware.bin + # - name: Archive ESP32-MICROLITE-SPIRAM-16M firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-spiram-16m-esp32-firmware + # path: | + # boards/esp32/MICROLITE_SPIRAM_16M/build/firmware.bin - - name: Build with psram support - run: | - source ./esp-idf/export.sh + # - name: Build with psram support + # run: | + # source ./esp-idf/export.sh - echo "cd ./boards/esp32/MICROLITE_SPIRAM" - cd ./boards/esp32/MICROLITE_SPIRAM + # echo "cd ./boards/esp32/MICROLITE_SPIRAM" + # cd ./boards/esp32/MICROLITE_SPIRAM - echo "Building MICROLITE_SPIRAM" - rm -rf build - idf.py clean build + # echo "Building MICROLITE_SPIRAM" + # rm -rf build + # idf.py clean build - ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ - ../../../micropython/ports/esp32 + # ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ + # ../../../micropython/ports/esp32 - - name: Archive ESP32-MICROLITE-SPIRAM firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-spiram-esp32-firmware - path: | - boards/esp32/MICROLITE_SPIRAM/build/firmware.bin + # - name: Archive ESP32-MICROLITE-SPIRAM firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-spiram-esp32-firmware + # path: | + # boards/esp32/MICROLITE_SPIRAM/build/firmware.bin - - name: Build MICROLITE_SPIRAM_CAM - run: | + # - name: Build MICROLITE_SPIRAM_CAM + # run: | - source ./esp-idf/export.sh + # source ./esp-idf/export.sh - echo "cd ./boards/esp32/MICROLITE_SPIRAM_CAM" - cd ./boards/esp32/MICROLITE_SPIRAM_CAM + # echo "cd ./boards/esp32/MICROLITE_SPIRAM_CAM" + # cd ./boards/esp32/MICROLITE_SPIRAM_CAM - echo "Building MICROLITE_SPIRAM_CAM" - rm -rf builds - idf.py clean build + # echo "Building MICROLITE_SPIRAM_CAM" + # rm -rf builds + # idf.py clean build - ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ - ../../../micropython/ports/esp32 + # ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ + # ../../../micropython/ports/esp32 - - name: Archive ESP32-MICROLITE_SPIRAM_CAM firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-spiram-cam-esp32-firmware - path: | - boards/esp32/MICROLITE_SPIRAM_CAM/build/firmware.bin + # - name: Archive ESP32-MICROLITE_SPIRAM_CAM firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-spiram-cam-esp32-firmware + # path: | + # boards/esp32/MICROLITE_SPIRAM_CAM/build/firmware.bin diff --git a/.github/workflows/build_esp32c3.yml b/.github/workflows/build_esp32c3.yml index 3347f4c..93740c3 100644 --- a/.github/workflows/build_esp32c3.yml +++ b/.github/workflows/build_esp32c3.yml @@ -2,125 +2,35 @@ name: ESP32 C3 # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule on: - push: pull_request: - paths-ignore: - - "examples/**" - - "README.md" - - "ci/*unix*.sh" - - ".github/workflows/build_unix.yml" + paths: + - '.github/workflows/build_esp32c3.yml' + - "micropython-modules/microlite/**" + - "micropython-modules/micropython-camera-driver/**" jobs: - tensorflow_micropython_esp32_c3_build: + tensorflow_micropython_esp32c3_build: runs-on: ubuntu-latest - steps: - name: Checkout repository - uses: actions/checkout@v2 - - name: Prepare to Build Tensorflow Micropython Firmware for ESP32 - run: | - git submodule init - git submodule update --recursive - cd micropython - git submodule update --init lib/axtls - git submodule update --init lib/berkeley-db-1.xx - cd ports/esp32 - make BOARD= submodules - cd ../../.. - cd tflm_esp_kernels - git submodule update --init components/esp32-camera - git submodule update --init components/esp-nn - - name: Get Cache Keys - # later get this like this: git ls-remote --heads https://github.com/espressif/esp-idf - # this commit is hard-coded in micropython/tools/ci.sh - run: | - IDF_COMMIT=142bb32c50fa9875b8b69fa539a2d59559460d72 - echo "esp-idf-commit=$IDF_COMMIT" >> $GITHUB_ENV - TFLM_COMMIT=$(git submodule status tensorflow | awk '{print ($1)}') - echo "tflm-commit=$TFLM_COMMIT" >> $GITHUB_ENV - # - name: Cache esp-idf - # id: cache-esp-idf - # uses: actions/cache@v2 - # env: - # cache-name: cache-esp-idf - # with: - # path: ./esp-idf - # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.esp-idf-commit }} - - name: Setup IDF - # if: steps.cache-esp-idf.outputs.cache-hit != 'true' - run: | - source ./micropython/tools/ci.sh && ci_esp32_idf44_setup - - name: Cache tflm - id: cache-tflm - uses: actions/cache@v2 - env: - cache-name: cache-tflm - with: - path: ./micropython-modules/microlite/tflm - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.tflm-commit }} - - name: Setup Build for Tensorflow -# if: steps.cache-tflm.outputs.cache-hit != 'true' - run: | - - source ./esp-idf/export.sh - - pip3 install Pillow - pip3 install Wave - - echo "Regenerating microlite/tfm directory" - rm -rf ./micropython-modules/microlite/tflm - - cd ./tensorflow - - ../micropython-modules/microlite/prepare-tflm-esp.sh - - - name: Build micropython cross compiler - run: | - source ./esp-idf/export.sh - cd ./micropython - echo "make -C mpy-cross V=1 clean all" - make -C mpy-cross V=1 clean all + uses: actions/checkout@v4 - - name: Build ESP32-MICROLITE_C3 + - name: Build ESP32 MICROLITE_C3 No SPIRAM - 4MB Flash run: | - - source ./esp-idf/export.sh - - echo "cd ./boards/esp32/MICROLITE_C3" - cd ./boards/esp32/MICROLITE_C3 - - echo "Building ESP32-MICROLITE_C3" - rm -rf builds - idf.py clean build - - ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ - ../../../micropython/ports/esp32 - - - name: Archive ESP32-MICROLITE_C3 firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-esp32c3-firmware - path: | - boards/esp32/MICROLITE_C3/build/firmware.bin - - - name: Build ESP32-MICROLITE_C3_USB - run: | - - source ./esp-idf/export.sh - - echo "cd ./boards/esp32/MICROLITE_C3_USB" - cd ./boards/esp32/MICROLITE_C3_USB - - echo "Building ESP32 MICROLITE_C3_USB" - rm -rf builds - idf.py clean build - - ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ - ../../../micropython/ports/esp32 - - - name: Archive ESP32-MICROLITE_C3_USB firmware - uses: actions/upload-artifact@v2 + mv * .. + cd .. + source ./scripts/build.sh && prepare_dependencies + source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + echo "BUILDING MICROLITE_C3" + source ./scripts/build.sh && build_esp32 "MICROLITE_C3" + TARGET=$(pwd)/dependencies/micropython/ports/esp32 + echo "TARGET=$TARGET" + ./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_C3" + ls $TARGET/build-MICROLITE_C3 + shell: bash + + - name: Archive ESP32-MICROLITE_C3 No SPIRAM - 4 MB Flash firmware + uses: actions/upload-artifact@v3 with: - name: microlite-esp32c3-usb-firmware - path: | - boards/esp32/MICROLITE_C3_USB/build/firmware.bin + name: microlite-esp32-firmware + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_C3/firmware.bin diff --git a/.github/workflows/build_esp32s2.yml b/.github/workflows/build_esp32s2.yml index 251e750..9c0ef89 100644 --- a/.github/workflows/build_esp32s2.yml +++ b/.github/workflows/build_esp32s2.yml @@ -3,13 +3,11 @@ name: ESP32 S2 # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule on: - push: pull_request: - paths-ignore: - - 'examples/**' - - 'README.md' - - 'ci/*unix*.sh' - - '.github/workflows/build_unix.yml' + paths: + - '.github/workflows/build_esp32s2.yml' + - "micropython-modules/microlite/**" + - "micropython-modules/micropython-camera-driver/**" jobs: tensorflow_micropython_esp32_s2_build: diff --git a/.github/workflows/build_esp32s3.yml b/.github/workflows/build_esp32s3.yml index c14ec3b..1789e2e 100644 --- a/.github/workflows/build_esp32s3.yml +++ b/.github/workflows/build_esp32s3.yml @@ -3,13 +3,11 @@ name: ESP32 S3 # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule on: - push: pull_request: - paths-ignore: - - 'examples/**' - - 'README.md' - - 'ci/*unix*.sh' - - '.github/workflows/build_unix.yml' + paths: + - '.github/workflows/build_esp32s3.yml' + - "micropython-modules/microlite/**" + - "micropython-modules/micropython-camera-driver/**" jobs: tensorflow_micropython_esp32_s3_build: diff --git a/.github/workflows/build_rp2.yml b/.github/workflows/build_rp2.yml index 0f94610..334d113 100644 --- a/.github/workflows/build_rp2.yml +++ b/.github/workflows/build_rp2.yml @@ -3,20 +3,11 @@ name: RP2 # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule on: - push: - paths-ignore: - - 'examples/**' - - 'README.md' - - 'ci/*unix*.sh' - - '.github/workflows/build_unix.yml' - - '.github/workflows/build_esp32.yml' pull_request: - paths-ignore: - - 'examples/**' - - 'README.md' - - 'ci/*unix*.sh' - - '.github/workflows/build_unix.yml' - - '.github/workflows/build_esp32.yml' + paths: + - '.github/workflows/buildrp2.yml' + - "micropython-modules/microlite/**" + - "micropython-modules/micropython-camera-driver/**" jobs: tensorflow_micropython_rp2_build: @@ -27,12 +18,15 @@ jobs: uses: actions/setup-python@v1 with: python-version: 3.8 + - name: Install Pillow & Wave run: | pip install Pillow pip3 install Wave + - name: Checkout repository uses: actions/checkout@v2 + - name: Prepare to Build Tensorflow Micropython Firmware for RP2 run: | git submodule init @@ -40,10 +34,12 @@ jobs: cd micropython git submodule update --init lib/pico-sdk lib/tinyusb cd .. + - name: Get Cache Keys run: | TFLM_COMMIT=$(git submodule status tensorflow | awk '{print ($1)}') echo "tflm-commit=$TFLM_COMMIT" >> $GITHUB_ENV + - name: Setup GCC ARM run: | source ./micropython/tools/ci.sh && ci_rp2_setup @@ -56,6 +52,7 @@ jobs: # with: # path: ./micropython-modules/microlite/tflm # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.tflm-commit }} + - name: Setup Build for Tensorflow # if: steps.cache-tflm.outputs.cache-hit != 'true' run: | @@ -73,6 +70,7 @@ jobs: make -C ports/rp2 submodules echo "make -C mpy-cross V=1 clean all" make -C mpy-cross V=1 clean all + - name: Build RP2 run: | @@ -88,70 +86,70 @@ jobs: make cd .. - # ADAFRUIT_ITSYBITSY_RP2040 - cmake -S ports/rp2 -B build-ADAFRUIT_ITSYBITSY_RP2040 -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=ADAFRUIT_ITSYBITSY_RP2040 \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # ADAFRUIT_ITSYBITSY_RP2040 + # cmake -S ports/rp2 -B build-ADAFRUIT_ITSYBITSY_RP2040 -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=ADAFRUIT_ITSYBITSY_RP2040 \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-ADAFRUIT_ITSYBITSY_RP2040 - make - cd .. + # cd build-ADAFRUIT_ITSYBITSY_RP2040 + # make + # cd .. - # ADAFRUIT_QTPY_RP2040 - cmake -S ports/rp2 -B build-ADAFRUIT_QTPY_RP2040 -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=ADAFRUIT_QTPY_RP2040 \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # ADAFRUIT_QTPY_RP2040 + # cmake -S ports/rp2 -B build-ADAFRUIT_QTPY_RP2040 -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=ADAFRUIT_QTPY_RP2040 \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-ADAFRUIT_QTPY_RP2040 - make - cd .. + # cd build-ADAFRUIT_QTPY_RP2040 + # make + # cd .. - # PICO - cmake -S ports/rp2 -B build-PICO -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PICO \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # PICO + # cmake -S ports/rp2 -B build-PICO -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PICO \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-PICO - make - cd .. + # cd build-PICO + # make + # cd .. - # PIMORONI_PICOLIPO_4MB - cmake -S ports/rp2 -B build-PIMORONI_PICOLIPO_4MB -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PIMORONI_PICOLIPO_4MB \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # PIMORONI_PICOLIPO_4MB + # cmake -S ports/rp2 -B build-PIMORONI_PICOLIPO_4MB -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PIMORONI_PICOLIPO_4MB \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-PIMORONI_PICOLIPO_4MB - make - cd .. + # cd build-PIMORONI_PICOLIPO_4MB + # make + # cd .. - # PIMORONI_PICOLIPO_16MB - cmake -S ports/rp2 -B build-PIMORONI_PICOLIPO_16MB -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PIMORONI_PICOLIPO_16MB \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # PIMORONI_PICOLIPO_16MB + # cmake -S ports/rp2 -B build-PIMORONI_PICOLIPO_16MB -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PIMORONI_PICOLIPO_16MB \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-PIMORONI_PICOLIPO_16MB - make - cd .. + # cd build-PIMORONI_PICOLIPO_16MB + # make + # cd .. - # PIMORONI_TINY2040 - cmake -S ports/rp2 -B build-PIMORONI_TINY2040 -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PIMORONI_TINY2040 \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # PIMORONI_TINY2040 + # cmake -S ports/rp2 -B build-PIMORONI_TINY2040 -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PIMORONI_TINY2040 \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-PIMORONI_TINY2040 - make - cd .. + # cd build-PIMORONI_TINY2040 + # make + # cd .. - # SPARKFUN_PROMICRO - cmake -S ports/rp2 -B build-SPARKFUN_PROMICRO -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=SPARKFUN_PROMICRO \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # SPARKFUN_PROMICRO + # cmake -S ports/rp2 -B build-SPARKFUN_PROMICRO -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=SPARKFUN_PROMICRO \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-SPARKFUN_PROMICRO - make - cd .. + # cd build-SPARKFUN_PROMICRO + # make + # cd .. - # SPARKFUN_THINGPLUS - cmake -S ports/rp2 -B build-SPARKFUN_THINGPLUS -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=SPARKFUN_THINGPLUS \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # SPARKFUN_THINGPLUS + # cmake -S ports/rp2 -B build-SPARKFUN_THINGPLUS -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=SPARKFUN_THINGPLUS \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-SPARKFUN_THINGPLUS - make + # cd build-SPARKFUN_THINGPLUS + # make - name: Archive ADAFRUIT_FEATHER_RP2040 firmware uses: actions/upload-artifact@v2 @@ -165,97 +163,97 @@ jobs: micropython/build-ADAFRUIT_FEATHER_RP2040/firmware.hex micropython/build-ADAFRUIT_FEATHER_RP2040/firmware.uf2 - - name: Archive ADAFRUIT_ITSYBITSY_RP2040 firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-adafruit-itsybitsy-rp2040-firmware - path: | - micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.elf - micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.bin - micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.dis - micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.elf.map - micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.hex - micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.uf2 - - name: Archive ADAFRUIT_QTPY_RP2040 firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-adafruit-qtpy-rp2040-firmware - path: | - micropython/build-ADAFRUIT_QTPY_RP2040/firmware.elf - micropython/build-ADAFRUIT_QTPY_RP2040/firmware.bin - micropython/build-ADAFRUIT_QTPY_RP2040/firmware.dis - micropython/build-ADAFRUIT_QTPY_RP2040/firmware.elf.map - micropython/build-ADAFRUIT_QTPY_RP2040/firmware.hex - micropython/build-ADAFRUIT_QTPY_RP2040/firmware.uf2 - - - name: Archive PICO firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-pico-firmware - path: | - micropython/build-PICO/firmware.elf - micropython/build-PICO/firmware.bin - micropython/build-PICO/firmware.dis - micropython/build-PICO/firmware.elf.map - micropython/build-PICO/firmware.hex - micropython/build-PICO/firmware.uf2 - - - name: Archive PIMORONI_PICOLIPO_4MB firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-pimoroni-picolipo-4mb-firmware - path: | - micropython/build-PIMORONI_PICOLIPO_4MB/firmware.elf - micropython/build-PIMORONI_PICOLIPO_4MB/firmware.bin - micropython/build-PIMORONI_PICOLIPO_4MB/firmware.dis - micropython/build-PIMORONI_PICOLIPO_4MB/firmware.elf.map - micropython/build-PIMORONI_PICOLIPO_4MB/firmware.hex - micropython/build-PIMORONI_PICOLIPO_4MB/firmware.uf2 - - - name: Archive PIMORONI_PICOLIPO_16MB firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-pimoroni-picolipo-16mb-firmware - path: | - micropython/build-PIMORONI_PICOLIPO_16MB/firmware.elf - micropython/build-PIMORONI_PICOLIPO_16MB/firmware.bin - micropython/build-PIMORONI_PICOLIPO_16MB/firmware.dis - micropython/build-PIMORONI_PICOLIPO_16MB/firmware.elf.map - micropython/build-PIMORONI_PICOLIPO_16MB/firmware.hex - micropython/build-PIMORONI_PICOLIPO_16MB/firmware.uf2 - - - name: Archive PIMORONI_TINY2040 firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-pimoroni-tiny2040-firmware - path: | - micropython/build-PIMORONI_TINY2040/firmware.elf - micropython/build-PIMORONI_TINY2040/firmware.bin - micropython/build-PIMORONI_TINY2040/firmware.dis - micropython/build-PIMORONI_TINY2040/firmware.elf.map - micropython/build-PIMORONI_TINY2040/firmware.hex - micropython/build-PIMORONI_TINY2040/firmware.uf2 - - - name: Archive SPARKFUN_PROMICRO firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-sparkfun_promicro-firmware - path: | - micropython/build-SPARKFUN_PROMICRO/firmware.elf - micropython/build-SPARKFUN_PROMICRO/firmware.bin - micropython/build-SPARKFUN_PROMICRO/firmware.dis - micropython/build-SPARKFUN_PROMICRO/firmware.elf.map - micropython/build-SPARKFUN_PROMICRO/firmware.hex - micropython/build-SPARKFUN_PROMICRO/firmware.uf2 - - - name: Archive SPARKFUN_THINGPLUS firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-sparkfun_thingplus-firmware - path: | - micropython/build-SPARKFUN_THINGPLUS/firmware.elf - micropython/build-SPARKFUN_THINGPLUS/firmware.bin - micropython/build-SPARKFUN_THINGPLUS/firmware.dis - micropython/build-SPARKFUN_THINGPLUS/firmware.elf.map - micropython/build-SPARKFUN_THINGPLUS/firmware.hex - micropython/build-SPARKFUN_THINGPLUS/firmware.uf2 \ No newline at end of file + # - name: Archive ADAFRUIT_ITSYBITSY_RP2040 firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-adafruit-itsybitsy-rp2040-firmware + # path: | + # micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.elf + # micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.bin + # micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.dis + # micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.elf.map + # micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.hex + # micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.uf2 + # - name: Archive ADAFRUIT_QTPY_RP2040 firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-adafruit-qtpy-rp2040-firmware + # path: | + # micropython/build-ADAFRUIT_QTPY_RP2040/firmware.elf + # micropython/build-ADAFRUIT_QTPY_RP2040/firmware.bin + # micropython/build-ADAFRUIT_QTPY_RP2040/firmware.dis + # micropython/build-ADAFRUIT_QTPY_RP2040/firmware.elf.map + # micropython/build-ADAFRUIT_QTPY_RP2040/firmware.hex + # micropython/build-ADAFRUIT_QTPY_RP2040/firmware.uf2 + + # - name: Archive PICO firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-pico-firmware + # path: | + # micropython/build-PICO/firmware.elf + # micropython/build-PICO/firmware.bin + # micropython/build-PICO/firmware.dis + # micropython/build-PICO/firmware.elf.map + # micropython/build-PICO/firmware.hex + # micropython/build-PICO/firmware.uf2 + + # - name: Archive PIMORONI_PICOLIPO_4MB firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-pimoroni-picolipo-4mb-firmware + # path: | + # micropython/build-PIMORONI_PICOLIPO_4MB/firmware.elf + # micropython/build-PIMORONI_PICOLIPO_4MB/firmware.bin + # micropython/build-PIMORONI_PICOLIPO_4MB/firmware.dis + # micropython/build-PIMORONI_PICOLIPO_4MB/firmware.elf.map + # micropython/build-PIMORONI_PICOLIPO_4MB/firmware.hex + # micropython/build-PIMORONI_PICOLIPO_4MB/firmware.uf2 + + # - name: Archive PIMORONI_PICOLIPO_16MB firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-pimoroni-picolipo-16mb-firmware + # path: | + # micropython/build-PIMORONI_PICOLIPO_16MB/firmware.elf + # micropython/build-PIMORONI_PICOLIPO_16MB/firmware.bin + # micropython/build-PIMORONI_PICOLIPO_16MB/firmware.dis + # micropython/build-PIMORONI_PICOLIPO_16MB/firmware.elf.map + # micropython/build-PIMORONI_PICOLIPO_16MB/firmware.hex + # micropython/build-PIMORONI_PICOLIPO_16MB/firmware.uf2 + + # - name: Archive PIMORONI_TINY2040 firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-pimoroni-tiny2040-firmware + # path: | + # micropython/build-PIMORONI_TINY2040/firmware.elf + # micropython/build-PIMORONI_TINY2040/firmware.bin + # micropython/build-PIMORONI_TINY2040/firmware.dis + # micropython/build-PIMORONI_TINY2040/firmware.elf.map + # micropython/build-PIMORONI_TINY2040/firmware.hex + # micropython/build-PIMORONI_TINY2040/firmware.uf2 + + # - name: Archive SPARKFUN_PROMICRO firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-sparkfun_promicro-firmware + # path: | + # micropython/build-SPARKFUN_PROMICRO/firmware.elf + # micropython/build-SPARKFUN_PROMICRO/firmware.bin + # micropython/build-SPARKFUN_PROMICRO/firmware.dis + # micropython/build-SPARKFUN_PROMICRO/firmware.elf.map + # micropython/build-SPARKFUN_PROMICRO/firmware.hex + # micropython/build-SPARKFUN_PROMICRO/firmware.uf2 + + # - name: Archive SPARKFUN_THINGPLUS firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-sparkfun_thingplus-firmware + # path: | + # micropython/build-SPARKFUN_THINGPLUS/firmware.elf + # micropython/build-SPARKFUN_THINGPLUS/firmware.bin + # micropython/build-SPARKFUN_THINGPLUS/firmware.dis + # micropython/build-SPARKFUN_THINGPLUS/firmware.elf.map + # micropython/build-SPARKFUN_THINGPLUS/firmware.hex + # micropython/build-SPARKFUN_THINGPLUS/firmware.uf2 \ No newline at end of file diff --git a/.github/workflows/build_stm32.yml b/.github/workflows/build_stm32.yml index 19f3739..39b0b18 100644 --- a/.github/workflows/build_stm32.yml +++ b/.github/workflows/build_stm32.yml @@ -3,16 +3,11 @@ name: STM32 # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule on: - push: pull_request: - paths-ignore: - - 'examples/**' - - 'README.md' - - 'ci/*unix*.sh' - - '.github/workflows/build_unix.yml' - - '.github/workflows/build_esp32.yml' - - '.github/workflows/build_esp32s3.yml' - - '.github/workflows/build_rp2.yml' + paths: + - '.github/workflows/build_stm32.yml' + - "micropython-modules/microlite/**" + - "micropython-modules/micropython-camera-driver/**" jobs: tensorflow_micropython_stm32_build: diff --git a/.github/workflows/build_unix.yml b/.github/workflows/build_unix.yml index 3f07549..92176b2 100644 --- a/.github/workflows/build_unix.yml +++ b/.github/workflows/build_unix.yml @@ -2,13 +2,11 @@ name: UNIX # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule on: - push: pull_request: - paths-ignore: - - 'examples/**' - - 'README.md' - - 'ci/*esp32*.sh' - - '.github/workflows/build_esp32.yml' + paths: + - '.github/workflows/build_unix.yml' + - "micropython-modules/microlite/**" + - "micropython-modules/micropython-camera-driver/**" jobs: tensorflow_micropython_unix_build: diff --git a/boards/esp32/MICROLITE/mpconfigboard.cmake b/boards/esp32/MICROLITE/mpconfigboard.cmake index 5daac41..8f73275 100644 --- a/boards/esp32/MICROLITE/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE/mpconfigboard.cmake @@ -1,7 +1,7 @@ set(SDKCONFIG_DEFAULTS boards/sdkconfig.base boards/sdkconfig.ble - ../../../../boards/esp32/ESP32_GENERIC/sdkconfig.partition + ../../../../boards/esp32/MICROLITE/sdkconfig.partition ) if(MICROPY_BOARD_VARIANT STREQUAL "D2WD") @@ -53,6 +53,4 @@ set(USER_C_MODULES ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) -# set (COMPONENTS esp-tflite-micro) -# list(APPEND IDF_COMPONENTS esp-tflite-micro) list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) \ No newline at end of file diff --git a/boards/esp32/MICROLITE/sdkconfig.partition b/boards/esp32/MICROLITE/sdkconfig.partition index 7bdf94a..ec73dc2 100644 --- a/boards/esp32/MICROLITE/sdkconfig.partition +++ b/boards/esp32/MICROLITE/sdkconfig.partition @@ -4,4 +4,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/ESP32_GENERIC/custom-partitions.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE/custom-partitions.csv" diff --git a/boards/esp32/MICROLITE_C3/CMakeLists.txt b/boards/esp32/MICROLITE_C3/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_C3/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_C3_USB/board.json b/boards/esp32/MICROLITE_C3/board.json similarity index 83% rename from boards/esp32/MICROLITE_C3_USB/board.json rename to boards/esp32/MICROLITE_C3/board.json index 23f9a8e..4a81d22 100644 --- a/boards/esp32/MICROLITE_C3_USB/board.json +++ b/boards/esp32/MICROLITE_C3/board.json @@ -5,14 +5,14 @@ "docs": "", "features": [ "BLE", + "External Flash", "WiFi" ], - "id": "esp32c3-usb", "images": [ "esp32c3_devkitmini.jpg" ], "mcu": "esp32c3", - "product": "ESP32-C3 with USB", + "product": "ESP32-C3", "thumbnail": "", "url": "https://www.espressif.com/en/products/modules", "vendor": "Espressif" diff --git a/boards/esp32/MICROLITE_C3/board.md b/boards/esp32/MICROLITE_C3/board.md new file mode 100644 index 0000000..1604b87 --- /dev/null +++ b/boards/esp32/MICROLITE_C3/board.md @@ -0,0 +1,7 @@ +The following files are firmware images that should work on most +ESP32-C3-based boards with 4MiB of flash, including WROOM and MINI modules, +that use the revision 3 silicon (or newer). + +USB serial/JTAG support is enabled on pin 18 and 19. Note that this +is not a full USB stack, the C3 just provides a CDC/ACM class serial +and JTAG interface. diff --git a/boards/esp32/MICROLITE_C3/main/CMakeLists.txt b/boards/esp32/MICROLITE_C3/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_C3/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_C3/mpconfigboard.cmake b/boards/esp32/MICROLITE_C3/mpconfigboard.cmake index b6f6f4b..0a76fdc 100644 --- a/boards/esp32/MICROLITE_C3/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_C3/mpconfigboard.cmake @@ -1,18 +1,14 @@ -set (IDF_TARGET esp32c3) +set(IDF_TARGET esp32c3) set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_BOARD_DIR}/sdkconfig.partition - + boards/sdkconfig.base + boards/sdkconfig.ble + boards/ESP32_GENERIC_C3/sdkconfig.c3usb + ../../../../boards/esp32/MICROLITE_C3/sdkconfig.partition ) -message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") - set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) diff --git a/boards/esp32/MICROLITE_C3/mpconfigboard.h b/boards/esp32/MICROLITE_C3/mpconfigboard.h index 02bad4c..6e2545d 100644 --- a/boards/esp32/MICROLITE_C3/mpconfigboard.h +++ b/boards/esp32/MICROLITE_C3/mpconfigboard.h @@ -1,9 +1,11 @@ // This configuration is for a generic ESP32C3 board with 4MiB (or more) of flash. -#define MICROPY_HW_BOARD_NAME "ESP32C3 module (microlite)" -#define MICROPY_HW_MCU_NAME "ESP32C3" +#define MICROPY_HW_BOARD_NAME "Microlite ESP32C3 module" +#define MICROPY_HW_MCU_NAME "Microlite ESP32C3" #define MICROPY_HW_ENABLE_SDCARD (0) #define MICROPY_PY_MACHINE_DAC (0) -// TODO: early esp-idf's didn't support i2s. check if this still applies #define MICROPY_PY_MACHINE_I2S (0) + +// Enable UART REPL for modules that have an external USB-UART and don't use native USB. +#define MICROPY_HW_ENABLE_UART_REPL (1) diff --git a/boards/esp32/MICROLITE_C3/sdkconfig.c3usb b/boards/esp32/MICROLITE_C3/sdkconfig.c3usb new file mode 100644 index 0000000..d9e7c7f --- /dev/null +++ b/boards/esp32/MICROLITE_C3/sdkconfig.c3usb @@ -0,0 +1,7 @@ +CONFIG_ESP32C3_REV_MIN_3=y +CONFIG_ESP32C3_BROWNOUT_DET=y +CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_7= +CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_4=y +CONFIG_ESP32C3_BROWNOUT_DET_LVL=4 +CONFIG_ESP_CONSOLE_UART_DEFAULT= +CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y diff --git a/boards/esp32/MICROLITE_C3/sdkconfig.partition b/boards/esp32/MICROLITE_C3/sdkconfig.partition index 2543d5b..cb13b00 100644 --- a/boards/esp32/MICROLITE_C3/sdkconfig.partition +++ b/boards/esp32/MICROLITE_C3/sdkconfig.partition @@ -4,4 +4,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_C3/custom-partitions.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_C3/custom-partitions.csv" diff --git a/boards/esp32/MICROLITE_C3_USB/CMakeLists.txt b/boards/esp32/MICROLITE_C3_USB/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_C3_USB/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_C3_USB/custom-partitions.csv b/boards/esp32/MICROLITE_C3_USB/custom-partitions.csv deleted file mode 100644 index a3569b8..0000000 --- a/boards/esp32/MICROLITE_C3_USB/custom-partitions.csv +++ /dev/null @@ -1,10 +0,0 @@ -# Notes: the offset of the partition table itself is set in -# $ESPIDF/components/partition_table/Kconfig.projbuild and the -# offset of the factory/ota_0 partition is set in makeimg.py -# I needed to increase the size of the app partition to fit the tensorflow microlite library -# There is 1/2 as much data partition as with standard micropython on esp32 4MiB. -# Name, Type, SubType, Offset, Size, Flags -nvs, data, nvs, 0x9000, 0x6000, -phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 0x280000, -vfs, data, fat, 0x300000, 0x100000, diff --git a/boards/esp32/MICROLITE_C3_USB/main/CMakeLists.txt b/boards/esp32/MICROLITE_C3_USB/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_C3_USB/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_C3_USB/mpconfigboard.cmake b/boards/esp32/MICROLITE_C3_USB/mpconfigboard.cmake deleted file mode 100644 index b6f6f4b..0000000 --- a/boards/esp32/MICROLITE_C3_USB/mpconfigboard.cmake +++ /dev/null @@ -1,18 +0,0 @@ -set (IDF_TARGET esp32c3) - -set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_BOARD_DIR}/sdkconfig.partition - -) - -message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") - -set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake -) - -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() diff --git a/boards/esp32/MICROLITE_C3_USB/mpconfigboard.h b/boards/esp32/MICROLITE_C3_USB/mpconfigboard.h deleted file mode 100644 index 1622db6..0000000 --- a/boards/esp32/MICROLITE_C3_USB/mpconfigboard.h +++ /dev/null @@ -1,8 +0,0 @@ -// This configuration is for a generic ESP32C3 board with 4MiB (or more) of flash. - -#define MICROPY_HW_BOARD_NAME "ESP32C3 module (microlite)" -#define MICROPY_HW_MCU_NAME "ESP32C3" - -#define MICROPY_HW_ENABLE_SDCARD (0) -#define MICROPY_PY_MACHINE_DAC (0) -#define MICROPY_PY_MACHINE_I2S (0) diff --git a/boards/esp32/MICROLITE_C3_USB/sdkconfig.partition b/boards/esp32/MICROLITE_C3_USB/sdkconfig.partition deleted file mode 100644 index 6d7decd..0000000 --- a/boards/esp32/MICROLITE_C3_USB/sdkconfig.partition +++ /dev/null @@ -1,21 +0,0 @@ -# -- from GENERIC_C3_USB start -- - -CONFIG_ESP32C3_REV_MIN_3=y -CONFIG_ESP32C3_REV_MIN=3 -CONFIG_ESP32C3_BROWNOUT_DET=y -CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_7= -CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_4=y -CONFIG_ESP32C3_BROWNOUT_DET_LVL=4 -CONFIG_ESP_CONSOLE_UART_DEFAULT= -CONFIG_ESP_CONSOLE_USB_CDC= -CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y - -# -- from GENERIC_C3_USB end -- - -# MICROLITE 4M flash partition adjustment -#CONFIG_ESPTOOLPY_FLASHMODE_DIO=y -#CONFIG_ESPTOOLPY_FLASHFREQ_40M=y -#CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y -CONFIG_PARTITION_TABLE_CUSTOM=y -# move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_C3_USB/custom-partitions.csv" diff --git a/scripts/assemble-unified-image-esp.sh b/scripts/assemble-unified-image-esp.sh index c73fb4c..e2e3aea 100755 --- a/scripts/assemble-unified-image-esp.sh +++ b/scripts/assemble-unified-image-esp.sh @@ -14,9 +14,9 @@ if test -z "$BUILD_DIR"; then fi python3 ${BASE_DIR}/makeimg.py \ -${BUILD_DIR}/sdkconfig \ -${BUILD_DIR}/bootloader/bootloader.bin \ -${BUILD_DIR}/partition_table/partition-table.bin \ -${BUILD_DIR}/micropython.bin \ -${BUILD_DIR}/firmware.bin \ -${BUILD_DIR}/micropython.uf2 +${BASE_DIR}/build-${BUILD_DIR}/sdkconfig \ +${BASE_DIR}/build-${BUILD_DIR}/bootloader/bootloader.bin \ +${BASE_DIR}/build-${BUILD_DIR}/partition_table/partition-table.bin \ +${BASE_DIR}/build-${BUILD_DIR}/micropython.bin \ +${BASE_DIR}/build-${BUILD_DIR}/firmware.bin \ +${BASE_DIR}/build-${BUILD_DIR}/micropython.uf2 diff --git a/scripts/build.sh b/scripts/build.sh index 1ae32e2..32c197d 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,5 +1,13 @@ #!bin/bash +MAKEOPTS= + +# if which nproc > /dev/null; then +# MAKEOPTS="-j$(nproc)" +# else +# MAKEOPTS="-j$(sysctl -n hw.ncpu)" +# fi + function prepare_dependencies { rm -rf dependencies @@ -36,17 +44,40 @@ function prepare_dependencies { # build : # $ cd dependencies/micropython/ports/esp32 # $ - cd micropython - git submodule init - git submodule update --recursive + # cd micropython + # git submodule init + # git submodule update --recursive + + # cd ../.. + cd .. } function build_esp32 { + BOARD=$1 + if test -z "$BOARD"; then + echo "USAGE: build_esp32 " + exit 1; + fi + pwd + python --version + which python + # xargs --show-limits + source esp-idf/export.sh + cd dependencies/micropython + make ${MAKEOPTS} -C mpy-cross + cd ports/esp32 + make ${MAKEOPTS} submodules + + PWD=$(pwd) + echo "make ${MAKEOPTS} V=1 BOARD_DIR=$(pwd)/../../../../boards/esp32/${BOARD} BOARD=${BOARD} FROZEN_MANIFEST=$PWD/boards/manifest.py" + + make ${MAKEOPTS} V=1 \ + BOARD_DIR=$(pwd)/../../../../boards/esp32/${BOARD} \ + BOARD=${BOARD} - cd dependencies/micropython/ports/esp32 - make BOARD_DIR=../../../../boards/esp32/MICROLITE # creates the build into dependencies/micropython/ports/esp32/build-MICROLITE - + # find build-${BOARD} -ls + cd ../../../.. } From fb611b7668f1e1d160e0f3a848c36c2bbd13ebd0 Mon Sep 17 00:00:00 2001 From: Michael O'Cleirigh Date: Wed, 13 Sep 2023 23:00:12 -0400 Subject: [PATCH 05/13] Fix unix port --- .github/workflows/build_unix.yml | 39 +++++++++++++++----------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build_unix.yml b/.github/workflows/build_unix.yml index 92176b2..ebcbd01 100644 --- a/.github/workflows/build_unix.yml +++ b/.github/workflows/build_unix.yml @@ -13,20 +13,24 @@ jobs: runs-on: ubuntu-latest steps: - - name: Set up Python 3.8 + - name: Set up Python 3.9 uses: actions/setup-python@v1 with: - python-version: 3.8 + python-version: 3.9 + - name: Install Pillow & Wave run: | pip install Pillow pip3 install Wave + - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 + - name: Prepare to Build Tensorflow Micropython Firmware for UNIX run: | - git submodule init - git submodule update --recursive + mv * .. + cd .. + source ./scripts/build.sh && prepare_dependencies - name: Setup Build for Tensorflow run: | @@ -34,31 +38,24 @@ jobs: echo "Regenerating microlite/tfm directory" rm -rf ./micropython-modules/microlite/tflm - cd ./tensorflow + cd ./dependencies/tflite-micro - ../micropython-modules/microlite/prepare-tflm-unix.sh + ../../scripts/prepare-tflm-unix.sh - - name: Setup micropython modules - run: | - cd ./micropython-modules - ln -s ../micropython-ulab/code ulab - - - name: Build micropython cross compiler - run: | - cd ./micropython + cd ../../micropython-modules + ln -s ../depenencies/micropython-ulab/code ulab + + cd ./dependencies/micropython echo "make -C mpy-cross V=1 clean all" make -C mpy-cross V=1 clean all - - name: Prepare to Build Tensorflow Micropython Firmware for unix - run: | - cd micropython/ports/unix + cd ports/unix make submodules make deplibs - make VARIANT_DIR=../../../boards/unix/microlite-variant VARIANT=microlite + make VARIANT_DIR=../../../../boards/unix/microlite-variant VARIANT=microlite - name: Archive Unix MICROLITE micropython interpreter uses: actions/upload-artifact@v2 with: name: microlite-unix-micropython - path: | - micropython/ports/unix/micropython + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/unix/micropython From ceaaa641f7bb8b332ef70f1fa118c4187e5394c1 Mon Sep 17 00:00:00 2001 From: Michael O'Cleirigh Date: Sun, 9 Feb 2025 21:03:59 -0500 Subject: [PATCH 06/13] Pin micropython to v1.20.0 Change branch build logic. --- .github/workflows/build_esp32.yml | 11 +++++++---- scripts/build.sh | 4 ++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_esp32.yml b/.github/workflows/build_esp32.yml index d175ae5..f8a6107 100644 --- a/.github/workflows/build_esp32.yml +++ b/.github/workflows/build_esp32.yml @@ -1,12 +1,15 @@ name: ESP32 # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule + on: + push: pull_request: - paths: - - ".github/workflows/build_esp32.yml" - - "micropython-modules/microlite/**" - - "micropython-modules/micropython-camera-driver/**" + paths-ignore: + - "examples/**" + - "README.md" + - "ci/*unix*.sh" + - ".github/workflows/build_*.yml" jobs: diff --git a/scripts/build.sh b/scripts/build.sh index 32c197d..c44f9a8 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -17,8 +17,8 @@ function prepare_dependencies { cd dependencies ULAB_VERSION=6.0.12 - #MICRO_PYTHON_VERSION=v1.20.0 - MICRO_PYTHON_VERSION=master + MICRO_PYTHON_VERSION=v1.20.0 + #MICRO_PYTHON_VERSION=master MICROPYTHON_ESP32_CAMERA_DRIVER=master ESP32_TFLITE_VERSION=v1.0.0 From 5867c5b410c6cd6d0ad0a4cf16e9dea9ca1a3fe4 Mon Sep 17 00:00:00 2001 From: Michael O'Cleirigh Date: Sun, 9 Feb 2025 21:13:17 -0500 Subject: [PATCH 07/13] Upgrade upload0artifact plugin to v4 --- .github/workflows/build_esp32.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_esp32.yml b/.github/workflows/build_esp32.yml index f8a6107..a4c9b3d 100644 --- a/.github/workflows/build_esp32.yml +++ b/.github/workflows/build_esp32.yml @@ -34,7 +34,7 @@ jobs: shell: bash - name: Archive ESP32-MICROLITE No SPIRAM - 4 MB Flash firmware - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: microlite-esp32-firmware path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE/firmware.bin From 5ee0dddd4f95e820d75c4937f896a0bb419dc7c8 Mon Sep 17 00:00:00 2001 From: Michael O'Cleirigh Date: Sun, 9 Feb 2025 21:20:14 -0500 Subject: [PATCH 08/13] Pin micropython to v1.21.0 --- scripts/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build.sh b/scripts/build.sh index c44f9a8..41d1287 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -17,7 +17,7 @@ function prepare_dependencies { cd dependencies ULAB_VERSION=6.0.12 - MICRO_PYTHON_VERSION=v1.20.0 + MICRO_PYTHON_VERSION=v1.21.0 #MICRO_PYTHON_VERSION=master MICROPYTHON_ESP32_CAMERA_DRIVER=master ESP32_TFLITE_VERSION=v1.0.0 From 3391a1ce06d17c966cca0d4abb21d2c7d2284d99 Mon Sep 17 00:00:00 2001 From: Michael O'Cleirigh Date: Sun, 9 Feb 2025 21:49:12 -0500 Subject: [PATCH 09/13] Add back all esp32 boards This should trigger all esp32 boards to build. --- .github/workflows/build_esp32.yml | 199 +++++++++++++++++++++++------- 1 file changed, 151 insertions(+), 48 deletions(-) diff --git a/.github/workflows/build_esp32.yml b/.github/workflows/build_esp32.yml index a4c9b3d..ff6dc63 100644 --- a/.github/workflows/build_esp32.yml +++ b/.github/workflows/build_esp32.yml @@ -19,6 +19,17 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 +# MICROLITE / +# MICROLITE_C3 +# MICROLITE_S2_SPIRAM +# MICROLITE_S3 +# MICROLITE_S3_SPIRAM +# MICROLITE_S3_SPIRAM_CS_GPIO_20 +# MICROLITE_S3_SPIRAM_OCTAL +# MICROLITE_SPIRAM +# MICROLITE_SPIRAM_16M / +# MICROLITE_SPIRAM_CAM + - name: Build ESP32-MICROLITE No SPIRAM - 4MB Flash run: | mv * .. @@ -39,66 +50,158 @@ jobs: name: microlite-esp32-firmware path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE/firmware.bin - # - name: Build with psram support and 16MB Flash firmware - # run: | - # source ./esp-idf/export.sh + - name: Build MICROLITE_C3 firmware + run: | + source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + echo "BUILDING MICROLITE_C3" + source ./scripts/build.sh && build_esp32 "MICROLITE_C3" + TARGET=$(pwd)/dependencies/micropython/ports/esp32 + echo "TARGET=$TARGET" + ./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_C3" + ls $TARGET/build-MICROLITE_C3 + shell: bash + + - name: Archive ESP32-MICROLITE_C3 firmware + uses: actions/upload-artifact@v4 + with: + name: microlite-esp32-firmware + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_C3/firmware.bin - # echo "cd ./boards/esp32/MICROLITE_SPIRAM_16M" - # cd ./boards/esp32/MICROLITE_SPIRAM_16M + - name: Build MICROLITE_S2_SPIRAM firmware + run: | + source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + echo "BUILDING MICROLITE_S2_SPIRAM" + source ./scripts/build.sh && build_esp32 "MICROLITE_S2_SPIRAM" + TARGET=$(pwd)/dependencies/micropython/ports/esp32 + echo "TARGET=$TARGET" + ./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_S2_SPIRAM" + ls $TARGET/build-MICROLITE_S2_SPIRAM + shell: bash - # echo "Building MICROLITE_SPIRAM_16M" - # rm -rf build - # idf.py clean build + - name: Archive ESP32-MICROLITE_S2_SPIRAM firmware + uses: actions/upload-artifact@v4 + with: + name: microlite-esp32-firmware + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S2_SPIRAM/firmware.bin - # ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ - # ../../../micropython/ports/esp32 + - name: Build MICROLITE_S3 firmware + run: | + source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + echo "BUILDING MICROLITE_S3" + source ./scripts/build.sh && build_esp32 "MICROLITE_S3" + TARGET=$(pwd)/dependencies/micropython/ports/esp32 + echo "TARGET=$TARGET" + ./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_S3" + ls $TARGET/build-MICROLITE_S3 + shell: bash + + - name: Archive ESP32-MICROLITE_S3 firmware + uses: actions/upload-artifact@v4 + with: + name: microlite-esp32-firmware + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S3/firmware.bin + + - name: Build MICROLITE_S3_SPIRAM firmware + run: | + source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + echo "BUILDING MICROLITE_S3_SPIRAM" + source ./scripts/build.sh && build_esp32 "MICROLITE_S3_SPIRAM" + TARGET=$(pwd)/dependencies/micropython/ports/esp32 + echo "TARGET=$TARGET" + ./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_S3_SPIRAM" + ls $TARGET/build-MICROLITE_S3_SPIRAM + shell: bash + + - name: Archive ESP32-MICROLITE_S3_SPIRAM firmware + uses: actions/upload-artifact@v4 + with: + name: microlite-esp32-firmware + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S3_SPIRAM/firmware.bin + + - name: Build MICROLITE_S3_SPIRAM_CS_GPIO_20 firmware + run: | + source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + echo "BUILDING MICROLITE_S3_SPIRAM_CS_GPIO_20" + source ./scripts/build.sh && build_esp32 "MICROLITE_S3_SPIRAM_CS_GPIO_20" + TARGET=$(pwd)/dependencies/micropython/ports/esp32 + echo "TARGET=$TARGET" + ./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_S3_SPIRAM_CS_GPIO_20" + ls $TARGET/build-MICROLITE_S3_SPIRAM_CS_GPIO_20 + shell: bash - # - name: Archive ESP32-MICROLITE-SPIRAM-16M firmware - # uses: actions/upload-artifact@v2 - # with: - # name: microlite-spiram-16m-esp32-firmware - # path: | - # boards/esp32/MICROLITE_SPIRAM_16M/build/firmware.bin + - name: Archive ESP32-MICROLITE_S3_SPIRAM_CS_GPIO_20 firmware + uses: actions/upload-artifact@v4 + with: + name: microlite-esp32-firmware + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S3_SPIRAM_CS_GPIO_20/firmware.bin - # - name: Build with psram support - # run: | - # source ./esp-idf/export.sh - # echo "cd ./boards/esp32/MICROLITE_SPIRAM" - # cd ./boards/esp32/MICROLITE_SPIRAM + - name: Build MICROLITE_S3_SPIRAM_OCTAL firmware + run: | + source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + echo "BUILDING MICROLITE_S3_SPIRAM_OCTAL" + source ./scripts/build.sh && build_esp32 "MICROLITE_S3_SPIRAM_OCTAL" + TARGET=$(pwd)/dependencies/micropython/ports/esp32 + echo "TARGET=$TARGET" + ./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_S3_SPIRAM_OCTAL" + ls $TARGET/build-MICROLITE_S3_SPIRAM_OCTAL + shell: bash - # echo "Building MICROLITE_SPIRAM" - # rm -rf build - # idf.py clean build + - name: Archive ESP32-MICROLITE_S3_SPIRAM_OCTAL firmware + uses: actions/upload-artifact@v4 + with: + name: microlite-esp32-firmware + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S3_SPIRAM_OCTAL/firmware.bin - # ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ - # ../../../micropython/ports/esp32 - # - name: Archive ESP32-MICROLITE-SPIRAM firmware - # uses: actions/upload-artifact@v2 - # with: - # name: microlite-spiram-esp32-firmware - # path: | - # boards/esp32/MICROLITE_SPIRAM/build/firmware.bin + - name: Build MICROLITE_SPIRAM firmware + run: | + source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + echo "BUILDING MICROLITE_SPIRAM" + source ./scripts/build.sh && build_esp32 "MICROLITE_SPIRAM" + TARGET=$(pwd)/dependencies/micropython/ports/esp32 + echo "TARGET=$TARGET" + ./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_SPIRAM" + ls $TARGET/build-MICROLITE_SPIRAM + shell: bash - # - name: Build MICROLITE_SPIRAM_CAM - # run: | + - name: Archive ESP32-MICROLITE_SPIRAM firmware + uses: actions/upload-artifact@v4 + with: + name: microlite-esp32-firmware + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_SPIRAM/firmware.bin - # source ./esp-idf/export.sh - # echo "cd ./boards/esp32/MICROLITE_SPIRAM_CAM" - # cd ./boards/esp32/MICROLITE_SPIRAM_CAM + - name: Build with psram support and 16MB Flash firmware + run: | + source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + echo "BUILDING MICROLITE_SPIRAM_16M" + source ./scripts/build.sh && build_esp32 "MICROLITE_SPIRAM_16M" + TARGET=$(pwd)/dependencies/micropython/ports/esp32 + echo "TARGET=$TARGET" + ./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_SPIRAM_16M" + ls $TARGET/build-MICROLITE_SPIRAM_16M + shell: bash - # echo "Building MICROLITE_SPIRAM_CAM" - # rm -rf builds - # idf.py clean build + - name: Archive ESP32-MICROLITE_SPIRAM_16M firmware + uses: actions/upload-artifact@v4 + with: + name: microlite-esp32-firmware + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_SPIRAM_16M/firmware.bin - # ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ - # ../../../micropython/ports/esp32 + - name: Build with psram support and 16MB Flash firmware + run: | + source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + echo "BUILDING MICROLITE_SPIRAM_CAM" + source ./scripts/build.sh && build_esp32 "MICROLITE_SPIRAM_CAM" + TARGET=$(pwd)/dependencies/micropython/ports/esp32 + echo "TARGET=$TARGET" + ./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_SPIRAM_CAM" + ls $TARGET/build-MICROLITE_SPIRAM_CAM + shell: bash - # - name: Archive ESP32-MICROLITE_SPIRAM_CAM firmware - # uses: actions/upload-artifact@v2 - # with: - # name: microlite-spiram-cam-esp32-firmware - # path: | - # boards/esp32/MICROLITE_SPIRAM_CAM/build/firmware.bin + - name: Archive ESP32-MICROLITE_SPIRAM_CAM firmware + uses: actions/upload-artifact@v4 + with: + name: microlite-esp32-firmware + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_SPIRAM_CAM/firmware.bin \ No newline at end of file From 8026d09b984559d5f20148484c6cf12b8ec332ae Mon Sep 17 00:00:00 2001 From: Michael O'Cleirigh Date: Sun, 9 Feb 2025 22:07:17 -0500 Subject: [PATCH 10/13] Adjust esp32 boards build steps --- .github/workflows/build_esp32.yml | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build_esp32.yml b/.github/workflows/build_esp32.yml index ff6dc63..1758301 100644 --- a/.github/workflows/build_esp32.yml +++ b/.github/workflows/build_esp32.yml @@ -19,17 +19,6 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 -# MICROLITE / -# MICROLITE_C3 -# MICROLITE_S2_SPIRAM -# MICROLITE_S3 -# MICROLITE_S3_SPIRAM -# MICROLITE_S3_SPIRAM_CS_GPIO_20 -# MICROLITE_S3_SPIRAM_OCTAL -# MICROLITE_SPIRAM -# MICROLITE_SPIRAM_16M / -# MICROLITE_SPIRAM_CAM - - name: Build ESP32-MICROLITE No SPIRAM - 4MB Flash run: | mv * .. @@ -52,7 +41,7 @@ jobs: - name: Build MICROLITE_C3 firmware run: | - source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + cd .. echo "BUILDING MICROLITE_C3" source ./scripts/build.sh && build_esp32 "MICROLITE_C3" TARGET=$(pwd)/dependencies/micropython/ports/esp32 @@ -69,7 +58,7 @@ jobs: - name: Build MICROLITE_S2_SPIRAM firmware run: | - source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + cd .. echo "BUILDING MICROLITE_S2_SPIRAM" source ./scripts/build.sh && build_esp32 "MICROLITE_S2_SPIRAM" TARGET=$(pwd)/dependencies/micropython/ports/esp32 @@ -86,7 +75,7 @@ jobs: - name: Build MICROLITE_S3 firmware run: | - source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + cd .. echo "BUILDING MICROLITE_S3" source ./scripts/build.sh && build_esp32 "MICROLITE_S3" TARGET=$(pwd)/dependencies/micropython/ports/esp32 @@ -103,7 +92,7 @@ jobs: - name: Build MICROLITE_S3_SPIRAM firmware run: | - source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + cd .. echo "BUILDING MICROLITE_S3_SPIRAM" source ./scripts/build.sh && build_esp32 "MICROLITE_S3_SPIRAM" TARGET=$(pwd)/dependencies/micropython/ports/esp32 @@ -120,7 +109,7 @@ jobs: - name: Build MICROLITE_S3_SPIRAM_CS_GPIO_20 firmware run: | - source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + cd .. echo "BUILDING MICROLITE_S3_SPIRAM_CS_GPIO_20" source ./scripts/build.sh && build_esp32 "MICROLITE_S3_SPIRAM_CS_GPIO_20" TARGET=$(pwd)/dependencies/micropython/ports/esp32 @@ -138,7 +127,7 @@ jobs: - name: Build MICROLITE_S3_SPIRAM_OCTAL firmware run: | - source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + cd .. echo "BUILDING MICROLITE_S3_SPIRAM_OCTAL" source ./scripts/build.sh && build_esp32 "MICROLITE_S3_SPIRAM_OCTAL" TARGET=$(pwd)/dependencies/micropython/ports/esp32 @@ -156,7 +145,7 @@ jobs: - name: Build MICROLITE_SPIRAM firmware run: | - source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + cd .. echo "BUILDING MICROLITE_SPIRAM" source ./scripts/build.sh && build_esp32 "MICROLITE_SPIRAM" TARGET=$(pwd)/dependencies/micropython/ports/esp32 @@ -174,7 +163,7 @@ jobs: - name: Build with psram support and 16MB Flash firmware run: | - source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + cd .. echo "BUILDING MICROLITE_SPIRAM_16M" source ./scripts/build.sh && build_esp32 "MICROLITE_SPIRAM_16M" TARGET=$(pwd)/dependencies/micropython/ports/esp32 @@ -191,7 +180,7 @@ jobs: - name: Build with psram support and 16MB Flash firmware run: | - source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + cd .. echo "BUILDING MICROLITE_SPIRAM_CAM" source ./scripts/build.sh && build_esp32 "MICROLITE_SPIRAM_CAM" TARGET=$(pwd)/dependencies/micropython/ports/esp32 From 260818b5654a7649d33cba3f71058c25b287a03f Mon Sep 17 00:00:00 2001 From: Michael O'Cleirigh Date: Mon, 10 Feb 2025 18:46:23 -0500 Subject: [PATCH 11/13] Adjust firmware archive id's to be unique --- .github/workflows/build_esp32.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build_esp32.yml b/.github/workflows/build_esp32.yml index 1758301..40e66a8 100644 --- a/.github/workflows/build_esp32.yml +++ b/.github/workflows/build_esp32.yml @@ -53,7 +53,7 @@ jobs: - name: Archive ESP32-MICROLITE_C3 firmware uses: actions/upload-artifact@v4 with: - name: microlite-esp32-firmware + name: microlite-esp32-c3-firmware path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_C3/firmware.bin - name: Build MICROLITE_S2_SPIRAM firmware @@ -70,7 +70,7 @@ jobs: - name: Archive ESP32-MICROLITE_S2_SPIRAM firmware uses: actions/upload-artifact@v4 with: - name: microlite-esp32-firmware + name: microlite-esp32-s2-firmware path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S2_SPIRAM/firmware.bin - name: Build MICROLITE_S3 firmware @@ -87,7 +87,7 @@ jobs: - name: Archive ESP32-MICROLITE_S3 firmware uses: actions/upload-artifact@v4 with: - name: microlite-esp32-firmware + name: microlite-esp32-s3-firmware path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S3/firmware.bin - name: Build MICROLITE_S3_SPIRAM firmware @@ -104,7 +104,7 @@ jobs: - name: Archive ESP32-MICROLITE_S3_SPIRAM firmware uses: actions/upload-artifact@v4 with: - name: microlite-esp32-firmware + name: microlite-esp32-s3-spiram-firmware path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S3_SPIRAM/firmware.bin - name: Build MICROLITE_S3_SPIRAM_CS_GPIO_20 firmware @@ -121,7 +121,7 @@ jobs: - name: Archive ESP32-MICROLITE_S3_SPIRAM_CS_GPIO_20 firmware uses: actions/upload-artifact@v4 with: - name: microlite-esp32-firmware + name: microlite-esp32-s3-spiram-cs-gpio-20-firmware path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S3_SPIRAM_CS_GPIO_20/firmware.bin @@ -139,7 +139,7 @@ jobs: - name: Archive ESP32-MICROLITE_S3_SPIRAM_OCTAL firmware uses: actions/upload-artifact@v4 with: - name: microlite-esp32-firmware + name: microlite-esp32-s3-spiram-octal-firmware path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S3_SPIRAM_OCTAL/firmware.bin @@ -157,7 +157,7 @@ jobs: - name: Archive ESP32-MICROLITE_SPIRAM firmware uses: actions/upload-artifact@v4 with: - name: microlite-esp32-firmware + name: microlite-esp32-spiram-firmware path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_SPIRAM/firmware.bin @@ -175,7 +175,7 @@ jobs: - name: Archive ESP32-MICROLITE_SPIRAM_16M firmware uses: actions/upload-artifact@v4 with: - name: microlite-esp32-firmware + name: microlite-esp32-spiram-16m-firmware path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_SPIRAM_16M/firmware.bin - name: Build with psram support and 16MB Flash firmware @@ -192,5 +192,5 @@ jobs: - name: Archive ESP32-MICROLITE_SPIRAM_CAM firmware uses: actions/upload-artifact@v4 with: - name: microlite-esp32-firmware + name: microlite-esp32-spiram-cam-firmware path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_SPIRAM_CAM/firmware.bin \ No newline at end of file From fe4942c59c3b22be2b3ae28e9c86ee715fc2fbb1 Mon Sep 17 00:00:00 2001 From: Michael O'Cleirigh Date: Mon, 17 Feb 2025 11:56:55 -0500 Subject: [PATCH 12/13] [esp32] update board configs from upstream How boards are configured has been simplified in micropython. Update the board config files from upstream. --- .../esp32/MICROLITE_S2_SPIRAM/CMakeLists.txt | 32 ------------ boards/esp32/MICROLITE_S2_SPIRAM/board.json | 18 +++++++ boards/esp32/MICROLITE_S2_SPIRAM/deploy.md | 50 ------------------- .../MICROLITE_S2_SPIRAM/main/CMakeLists.txt | 13 ----- .../MICROLITE_S2_SPIRAM/mpconfigboard.cmake | 15 +++--- .../esp32/MICROLITE_S2_SPIRAM/mpconfigboard.h | 14 ++---- .../esp32/MICROLITE_S2_SPIRAM/sdkconfig.board | 9 ---- boards/esp32/MICROLITE_S3/CMakeLists.txt | 32 ------------ boards/esp32/MICROLITE_S3/board.json | 18 +++++++ boards/esp32/MICROLITE_S3/main/CMakeLists.txt | 13 ----- boards/esp32/MICROLITE_S3/mpconfigboard.cmake | 17 +++---- boards/esp32/MICROLITE_S3/mpconfigboard.h | 8 +-- .../esp32/MICROLITE_S3/sdkconfig-8m.partition | 2 +- .../esp32/MICROLITE_S3_SPIRAM/CMakeLists.txt | 32 ------------ .../MICROLITE_S3_SPIRAM/main/CMakeLists.txt | 13 ----- .../MICROLITE_S3_SPIRAM/mpconfigboard.cmake | 19 +++---- .../sdkconfig-8m.partition | 2 +- .../CMakeLists.txt | 32 ------------ .../main/CMakeLists.txt | 13 ----- .../mpconfigboard.cmake | 17 ++++--- .../sdkconfig-8m.partition | 2 +- .../MICROLITE_S3_SPIRAM_OCTAL/CMakeLists.txt | 32 ------------ .../main/CMakeLists.txt | 13 ----- .../mpconfigboard.cmake | 17 ++++--- .../sdkconfig-8m.partition | 2 +- boards/esp32/MICROLITE_SPIRAM/CMakeLists.txt | 32 ------------ boards/esp32/MICROLITE_SPIRAM/board.json | 23 +++++++++ boards/esp32/MICROLITE_SPIRAM/board.md | 3 ++ .../MICROLITE_SPIRAM/main/CMakeLists.txt | 13 ----- .../MICROLITE_SPIRAM/mpconfigboard.cmake | 19 +++---- boards/esp32/MICROLITE_SPIRAM/mpconfigboard.h | 2 +- boards/esp32/MICROLITE_SPIRAM/sdkconfig.board | 2 + .../MICROLITE_SPIRAM/sdkconfig.partition | 2 +- .../esp32/MICROLITE_SPIRAM_16M/CMakeLists.txt | 32 ------------ .../MICROLITE_SPIRAM_16M/main/CMakeLists.txt | 13 ----- .../MICROLITE_SPIRAM_16M/mpconfigboard.cmake | 17 ++++--- .../sdkconfig-16m.partition | 2 +- .../esp32/MICROLITE_SPIRAM_CAM/CMakeLists.txt | 35 ------------- .../MICROLITE_SPIRAM_CAM/main/CMakeLists.txt | 13 ----- .../MICROLITE_SPIRAM_CAM/mpconfigboard.cmake | 18 ++++--- .../MICROLITE_SPIRAM_CAM/sdkconfig.partition | 2 +- 41 files changed, 147 insertions(+), 516 deletions(-) delete mode 100644 boards/esp32/MICROLITE_S2_SPIRAM/CMakeLists.txt create mode 100644 boards/esp32/MICROLITE_S2_SPIRAM/board.json delete mode 100644 boards/esp32/MICROLITE_S2_SPIRAM/deploy.md delete mode 100644 boards/esp32/MICROLITE_S2_SPIRAM/main/CMakeLists.txt delete mode 100644 boards/esp32/MICROLITE_S2_SPIRAM/sdkconfig.board delete mode 100644 boards/esp32/MICROLITE_S3/CMakeLists.txt create mode 100644 boards/esp32/MICROLITE_S3/board.json delete mode 100644 boards/esp32/MICROLITE_S3/main/CMakeLists.txt delete mode 100644 boards/esp32/MICROLITE_S3_SPIRAM/CMakeLists.txt delete mode 100644 boards/esp32/MICROLITE_S3_SPIRAM/main/CMakeLists.txt delete mode 100644 boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/CMakeLists.txt delete mode 100644 boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/main/CMakeLists.txt delete mode 100644 boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/CMakeLists.txt delete mode 100644 boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/main/CMakeLists.txt delete mode 100644 boards/esp32/MICROLITE_SPIRAM/CMakeLists.txt create mode 100644 boards/esp32/MICROLITE_SPIRAM/board.json create mode 100644 boards/esp32/MICROLITE_SPIRAM/board.md delete mode 100644 boards/esp32/MICROLITE_SPIRAM/main/CMakeLists.txt create mode 100644 boards/esp32/MICROLITE_SPIRAM/sdkconfig.board delete mode 100644 boards/esp32/MICROLITE_SPIRAM_16M/CMakeLists.txt delete mode 100644 boards/esp32/MICROLITE_SPIRAM_16M/main/CMakeLists.txt delete mode 100644 boards/esp32/MICROLITE_SPIRAM_CAM/CMakeLists.txt delete mode 100644 boards/esp32/MICROLITE_SPIRAM_CAM/main/CMakeLists.txt diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/CMakeLists.txt b/boards/esp32/MICROLITE_S2_SPIRAM/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_S2_SPIRAM/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/board.json b/boards/esp32/MICROLITE_S2_SPIRAM/board.json new file mode 100644 index 0000000..dbd3b5b --- /dev/null +++ b/boards/esp32/MICROLITE_S2_SPIRAM/board.json @@ -0,0 +1,18 @@ +{ + "deploy": [ + "../deploy_s2.md" + ], + "docs": "", + "features": [ + "BLE", + "WiFi" + ], + "images": [ + "generic_s2.jpg" + ], + "mcu": "esp32s2", + "product": "ESP32-S2", + "thumbnail": "", + "url": "https://www.espressif.com/en/products/modules", + "vendor": "Espressif" +} diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/deploy.md b/boards/esp32/MICROLITE_S2_SPIRAM/deploy.md deleted file mode 100644 index a46bc9b..0000000 --- a/boards/esp32/MICROLITE_S2_SPIRAM/deploy.md +++ /dev/null @@ -1,50 +0,0 @@ -Program your board using the esptool.py program, found [here](https://github.com/espressif/esptool). - -To flash or erase your TinyS2, you have to first put it into download mode. -To do this, follow these steps: - -- Press and hold the [BOOT] button -- Press and release the [RESET] button -- Release the [BOOT] button - -Now the board is in download mode and the native USB will have enumerated as a serial device. - -If you are putting MicroPython on your board for the first time then you should -first erase the entire flash using: - -### Linux -```bash -esptool.py --chip esp32s2 --port /dev/ttyACM0 erase_flash -``` - -### Mac -```bash -esptool.py --chip esp32s2 --port /dev/cu.usbmodem01 erase_flash -``` - -#### Windows -Change (X) to whatever COM port is being used by the board -```bash -esptool --chip esp32s2 --port COM(X) erase_flash -``` - -Now download the version of the firmware you would like to install from the options below, -then use the following command to program the firmware starting at address 0x1000, -remembering to replace `tinys2-micropython-firmware-version.bin` with the name of the -firmware you just downloaded: - -#### Linux -```bash -esptool.py --chip esp32s2 --port /dev/ttyACM0 write_flash -z 0x1000 tinys2-micropython-firmware-version.bin -``` - -#### Mac -```bash -esptool.py --chip esp32s2 --port /dev/cu.usbmodem01 write_flash -z 0x1000 tinys2-micropython-firmware-version.bin -``` - -#### Windows -Change (X) to whatever COM port is being used by the board -```bash -esptool --chip esp32s2 --port COM(X) write_flash -z 0x1000 tinys2-micropython-firmware-version.bin -``` diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/main/CMakeLists.txt b/boards/esp32/MICROLITE_S2_SPIRAM/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_S2_SPIRAM/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.cmake b/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.cmake index 96307a6..d966a86 100644 --- a/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.cmake @@ -1,17 +1,14 @@ set(IDF_TARGET esp32s2) + set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.spiram_sx - # ${MICROPY_PORT_DIR}/boards/sdkconfig.usb - ${MICROPY_BOARD_DIR}/sdkconfig.board + boards/sdkconfig.base + boards/sdkconfig.usb ) -message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) + diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.h b/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.h index 6d7fbd1..8eb2e13 100644 --- a/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.h +++ b/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.h @@ -1,13 +1,9 @@ -#define MICROPY_HW_BOARD_NAME "ESP32S2 Microlite" -#define MICROPY_HW_MCU_NAME "ESP32-S2FN4R2" +// Started from upstream GENERIC_S2 +#define MICROPY_HW_BOARD_NAME "Microlite ESP32S2 module" +#define MICROPY_HW_MCU_NAME "Microlite ESP32S2" #define MICROPY_PY_BLUETOOTH (0) #define MICROPY_HW_ENABLE_SDCARD (0) -// these were from the um_tiny s2 double check if they match the ESP32S2DEVKITM1R -// #define MICROPY_HW_I2C0_SCL (9) -// #define MICROPY_HW_I2C0_SDA (8) - -// #define MICROPY_HW_SPI1_MOSI (35) -// #define MICROPY_HW_SPI1_MISO (36) -// #define MICROPY_HW_SPI1_SCK (37) +// Enable UART REPL for modules that have an external USB-UART and don't use native USB. +#define MICROPY_HW_ENABLE_UART_REPL (1) diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/sdkconfig.board b/boards/esp32/MICROLITE_S2_SPIRAM/sdkconfig.board deleted file mode 100644 index 91623c6..0000000 --- a/boards/esp32/MICROLITE_S2_SPIRAM/sdkconfig.board +++ /dev/null @@ -1,9 +0,0 @@ -CONFIG_FLASHMODE_QIO=y -CONFIG_ESPTOOLPY_FLASHFREQ_80M=y -CONFIG_USB_AND_UART=y -# LWIP -# CONFIG_LWIP_LOCAL_HOSTNAME="UMTinyS2" -# end of LWIP -CONFIG_PARTITION_TABLE_CUSTOM=y -# cwd is boards/esp32/MICROLITE_S2_SPIRAM -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../micropython/ports/esp32/partitions.csv" diff --git a/boards/esp32/MICROLITE_S3/CMakeLists.txt b/boards/esp32/MICROLITE_S3/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_S3/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3/board.json b/boards/esp32/MICROLITE_S3/board.json new file mode 100644 index 0000000..0db9b32 --- /dev/null +++ b/boards/esp32/MICROLITE_S3/board.json @@ -0,0 +1,18 @@ +{ + "deploy": [ + "../deploy_s3.md" + ], + "docs": "", + "features": [ + "BLE", + "WiFi" + ], + "images": [ + "generic_s3.jpg" + ], + "mcu": "esp32s3", + "product": "ESP32-S3", + "thumbnail": "", + "url": "https://www.espressif.com/en/products/modules", + "vendor": "Espressif" +} diff --git a/boards/esp32/MICROLITE_S3/main/CMakeLists.txt b/boards/esp32/MICROLITE_S3/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_S3/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3/mpconfigboard.cmake b/boards/esp32/MICROLITE_S3/mpconfigboard.cmake index 969b0cd..19fd52f 100644 --- a/boards/esp32/MICROLITE_S3/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_S3/mpconfigboard.cmake @@ -1,19 +1,16 @@ set(IDF_TARGET esp32s3) set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_BOARD_DIR}/sdkconfig.board - ${MICROPY_BOARD_DIR}/sdkconfig-8m.partition + boards/sdkconfig.base + boards/sdkconfig.usb + boards/sdkconfig.ble + boards/ESP32_GENERIC_S3/sdkconfig.board + ../../../../boards/esp32/MICROLITE_S3/sdkconfig-8m.partition ) -message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3/mpconfigboard.h b/boards/esp32/MICROLITE_S3/mpconfigboard.h index 6705aff..c48bfd7 100644 --- a/boards/esp32/MICROLITE_S3/mpconfigboard.h +++ b/boards/esp32/MICROLITE_S3/mpconfigboard.h @@ -1,8 +1,10 @@ -#define MICROPY_HW_BOARD_NAME "ESP32S3 module (microlite)" -#define MICROPY_HW_MCU_NAME "ESP32S3" +#define MICROPY_HW_BOARD_NAME "Microlite ESP32S3 module" +#define MICROPY_HW_MCU_NAME "Microlite ESP32S3" #define MICROPY_PY_MACHINE_DAC (0) +// Enable UART REPL for modules that have an external USB-UART and don't use native USB. +#define MICROPY_HW_ENABLE_UART_REPL (1) + #define MICROPY_HW_I2C0_SCL (9) #define MICROPY_HW_I2C0_SDA (8) - diff --git a/boards/esp32/MICROLITE_S3/sdkconfig-8m.partition b/boards/esp32/MICROLITE_S3/sdkconfig-8m.partition index 7a31026..7897dbe 100644 --- a/boards/esp32/MICROLITE_S3/sdkconfig-8m.partition +++ b/boards/esp32/MICROLITE_S3/sdkconfig-8m.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_S3/partitions-8MiB.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_S3/partitions-8MiB.csv" diff --git a/boards/esp32/MICROLITE_S3_SPIRAM/CMakeLists.txt b/boards/esp32/MICROLITE_S3_SPIRAM/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_S3_SPIRAM/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3_SPIRAM/main/CMakeLists.txt b/boards/esp32/MICROLITE_S3_SPIRAM/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_S3_SPIRAM/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3_SPIRAM/mpconfigboard.cmake b/boards/esp32/MICROLITE_S3_SPIRAM/mpconfigboard.cmake index 3633177..6b2346a 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_S3_SPIRAM/mpconfigboard.cmake @@ -1,21 +1,18 @@ set(IDF_TARGET esp32s3) set(SDKCONFIG_DEFAULTS - - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.spiram_sx - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_BOARD_DIR}/sdkconfig.board - ${MICROPY_BOARD_DIR}/sdkconfig-8m.partition + boards/sdkconfig.base + boards/sdkconfig.ble + boards/sdkconfig.spiram_sx + boards/ESP32_GENERIC_S3/sdkconfig.board + ../../../../boards/esp32/MICROLITE_S3_SPIRAM/sdkconfig-8m.partition ) message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") + set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) diff --git a/boards/esp32/MICROLITE_S3_SPIRAM/sdkconfig-8m.partition b/boards/esp32/MICROLITE_S3_SPIRAM/sdkconfig-8m.partition index 8ae18f4..35c24d6 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM/sdkconfig-8m.partition +++ b/boards/esp32/MICROLITE_S3_SPIRAM/sdkconfig-8m.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv" diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/CMakeLists.txt b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/main/CMakeLists.txt b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/mpconfigboard.cmake b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/mpconfigboard.cmake index 3633177..034c7fc 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/mpconfigboard.cmake @@ -1,21 +1,22 @@ set(IDF_TARGET esp32s3) set(SDKCONFIG_DEFAULTS - - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.spiram_sx - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_BOARD_DIR}/sdkconfig.board - ${MICROPY_BOARD_DIR}/sdkconfig-8m.partition + boards/sdkconfig.base + boards/sdkconfig.ble + boards/sdkconfig.spiram_sx + ../../../../boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/sdkconfig.board + ../../../../boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/sdkconfig-8m.partition ) message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") + set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) + if(NOT MICROPY_FROZEN_MANIFEST) set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) endif() diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/sdkconfig-8m.partition b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/sdkconfig-8m.partition index 8ae18f4..35c24d6 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/sdkconfig-8m.partition +++ b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/sdkconfig-8m.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv" diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/CMakeLists.txt b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/main/CMakeLists.txt b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/mpconfigboard.cmake b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/mpconfigboard.cmake index 3633177..c7d4138 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/mpconfigboard.cmake @@ -1,21 +1,22 @@ set(IDF_TARGET esp32s3) set(SDKCONFIG_DEFAULTS - - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.spiram_sx - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_BOARD_DIR}/sdkconfig.board - ${MICROPY_BOARD_DIR}/sdkconfig-8m.partition + boards/sdkconfig.base + boards/sdkconfig.ble + boards/sdkconfig.spiram_sx + ../../../../boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/sdkconfig.board + ../../../../boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/sdkconfig-8m.partition ) message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") + set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) + if(NOT MICROPY_FROZEN_MANIFEST) set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) endif() diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/sdkconfig-8m.partition b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/sdkconfig-8m.partition index 8ae18f4..35c24d6 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/sdkconfig-8m.partition +++ b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/sdkconfig-8m.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv" diff --git a/boards/esp32/MICROLITE_SPIRAM/CMakeLists.txt b/boards/esp32/MICROLITE_SPIRAM/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_SPIRAM/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_SPIRAM/board.json b/boards/esp32/MICROLITE_SPIRAM/board.json new file mode 100644 index 0000000..afb57b2 --- /dev/null +++ b/boards/esp32/MICROLITE_SPIRAM/board.json @@ -0,0 +1,23 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "BLE", + "SPIRAM", + "WiFi" + ], + "id": "esp32spiram", + "images": [ + "esp32_psram.jpg" + ], + "mcu": "esp32", + "product": "ESP32 with SPIRAM", + "thumbnail": "", + "url": "https://www.espressif.com/en/products/modules", + "variants": { + "idf3": "Compiled with IDF 3.x" + }, + "vendor": "Espressif" +} diff --git a/boards/esp32/MICROLITE_SPIRAM/board.md b/boards/esp32/MICROLITE_SPIRAM/board.md new file mode 100644 index 0000000..3b02b90 --- /dev/null +++ b/boards/esp32/MICROLITE_SPIRAM/board.md @@ -0,0 +1,3 @@ +The following files are daily firmware for ESP32-based boards with external SPIRAM (also known as PSRAM). + +This firmware is compiled using ESP-IDF v4.x. Some older releases are also provided that are compiled with ESP-IDF v3.x. diff --git a/boards/esp32/MICROLITE_SPIRAM/main/CMakeLists.txt b/boards/esp32/MICROLITE_SPIRAM/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_SPIRAM/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.cmake b/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.cmake index 61f9e8c..a670cec 100644 --- a/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.cmake @@ -1,20 +1,15 @@ -set (IDF_TARGET esp32) +set(IDF_TARGET esp32) set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_PORT_DIR}/boards/sdkconfig.spiram - ${MICROPY_BOARD_DIR}/sdkconfig.partition - + boards/sdkconfig.base + boards/sdkconfig.ble + boards/sdkconfig.spiram + ../../../../boards/esp32/MICROLITE_SPIRAM/sdkconfig.partition ) -message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) diff --git a/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.h b/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.h index 51c1fb2..a5982e4 100644 --- a/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.h +++ b/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.h @@ -1,2 +1,2 @@ -#define MICROPY_HW_BOARD_NAME "ESP32 module (microlite-spiram)" +#define MICROPY_HW_BOARD_NAME "ESP32 module (spiram)" #define MICROPY_HW_MCU_NAME "ESP32" diff --git a/boards/esp32/MICROLITE_SPIRAM/sdkconfig.board b/boards/esp32/MICROLITE_SPIRAM/sdkconfig.board new file mode 100644 index 0000000..a2859ac --- /dev/null +++ b/boards/esp32/MICROLITE_SPIRAM/sdkconfig.board @@ -0,0 +1,2 @@ +# SPIRAM increases the size of the firmware, use -Os to reduce it again to fit in iram +CONFIG_COMPILER_OPTIMIZATION_SIZE=y diff --git a/boards/esp32/MICROLITE_SPIRAM/sdkconfig.partition b/boards/esp32/MICROLITE_SPIRAM/sdkconfig.partition index 14b9d0d..054a1d5 100644 --- a/boards/esp32/MICROLITE_SPIRAM/sdkconfig.partition +++ b/boards/esp32/MICROLITE_SPIRAM/sdkconfig.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_SPIRAM/custom-partitions.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_SPIRAM/custom-partitions.csv" diff --git a/boards/esp32/MICROLITE_SPIRAM_16M/CMakeLists.txt b/boards/esp32/MICROLITE_SPIRAM_16M/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_SPIRAM_16M/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_SPIRAM_16M/main/CMakeLists.txt b/boards/esp32/MICROLITE_SPIRAM_16M/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_SPIRAM_16M/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_SPIRAM_16M/mpconfigboard.cmake b/boards/esp32/MICROLITE_SPIRAM_16M/mpconfigboard.cmake index 4c25929..7f3e840 100644 --- a/boards/esp32/MICROLITE_SPIRAM_16M/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_SPIRAM_16M/mpconfigboard.cmake @@ -1,21 +1,22 @@ set (IDF_TARGET esp32) set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_PORT_DIR}/boards/sdkconfig.spiram - ${MICROPY_BOARD_DIR}/sdkconfig.16m - ${MICROPY_BOARD_DIR}/sdkconfig-16m.partition - + boards/sdkconfig.base + boards/sdkconfig.ble + boards/sdkconfig.240mhz + boards/sdkconfig.spiram + ../../../../boards/esp32/MICROLITE_SPIRAM/sdkconfig.16m + ../../../../boards/esp32/MICROLITE_SPIRAM/sdkconfig-16m.partition ) message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) + if(NOT MICROPY_FROZEN_MANIFEST) set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) endif() diff --git a/boards/esp32/MICROLITE_SPIRAM_16M/sdkconfig-16m.partition b/boards/esp32/MICROLITE_SPIRAM_16M/sdkconfig-16m.partition index fe22392..b31db83 100644 --- a/boards/esp32/MICROLITE_SPIRAM_16M/sdkconfig-16m.partition +++ b/boards/esp32/MICROLITE_SPIRAM_16M/sdkconfig-16m.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_SPIRAM_16M/custom-partitions-16M.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_SPIRAM_16M/custom-partitions-16M.csv" diff --git a/boards/esp32/MICROLITE_SPIRAM_CAM/CMakeLists.txt b/boards/esp32/MICROLITE_SPIRAM_CAM/CMakeLists.txt deleted file mode 100644 index e63712b..0000000 --- a/boards/esp32/MICROLITE_SPIRAM_CAM/CMakeLists.txt +++ /dev/null @@ -1,35 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -set(EXTRA_COMPONENT_DIRS ../../../tflm_esp_kernels/components/esp32-camera) - -message (STATUS "EXTRA_COMPONENT_DIRS=${EXTRA_COMPONENT_DIRS}") -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_SPIRAM_CAM/main/CMakeLists.txt b/boards/esp32/MICROLITE_SPIRAM_CAM/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_SPIRAM_CAM/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_SPIRAM_CAM/mpconfigboard.cmake b/boards/esp32/MICROLITE_SPIRAM_CAM/mpconfigboard.cmake index b0ecb25..eb0afb3 100644 --- a/boards/esp32/MICROLITE_SPIRAM_CAM/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_SPIRAM_CAM/mpconfigboard.cmake @@ -4,19 +4,21 @@ set (IDF_TARGET esp32) set(CAMERA_TYPE esp32) set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_BOARD_DIR}/sdkconfig.esp32cam - ${MICROPY_BOARD_DIR}/sdkconfig.partition + boards/sdkconfig.base + boards/sdkconfig.ble + boards/sdkconfig.spiram + ../../../../boards/esp32/MICROLITE_SPIRAM_CAM/sdkconfig.esp32cam + ../../../../boards/esp32/MICROLITE_SPIRAM_CAM/sdkconfig.partition ) message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake - ) - - + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake +) + +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) + if(NOT MICROPY_FROZEN_MANIFEST) set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) endif() diff --git a/boards/esp32/MICROLITE_SPIRAM_CAM/sdkconfig.partition b/boards/esp32/MICROLITE_SPIRAM_CAM/sdkconfig.partition index 99d7357..b368d5e 100644 --- a/boards/esp32/MICROLITE_SPIRAM_CAM/sdkconfig.partition +++ b/boards/esp32/MICROLITE_SPIRAM_CAM/sdkconfig.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE/custom-partitions.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE/custom-partitions.csv" From c244b3e79f10401d8acfa53c5200ff6868dbd4c6 Mon Sep 17 00:00:00 2001 From: Michael O'Cleirigh Date: Mon, 17 Feb 2025 21:39:35 -0500 Subject: [PATCH 13/13] [esp32] increase factory partition for S3. --- boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.cmake | 1 + boards/esp32/MICROLITE_S3/partitions-8MiB.csv | 4 ++-- boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv | 4 ++-- .../esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/partitions-8MiB.csv | 4 ++-- boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/partitions-8MiB.csv | 4 ++-- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.cmake b/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.cmake index d966a86..6c974f7 100644 --- a/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.cmake @@ -3,6 +3,7 @@ set(IDF_TARGET esp32s2) set(SDKCONFIG_DEFAULTS boards/sdkconfig.base boards/sdkconfig.usb + boards/sdkconfig.spiram_sx ) diff --git a/boards/esp32/MICROLITE_S3/partitions-8MiB.csv b/boards/esp32/MICROLITE_S3/partitions-8MiB.csv index 582d3b5..e2181e6 100644 --- a/boards/esp32/MICROLITE_S3/partitions-8MiB.csv +++ b/boards/esp32/MICROLITE_S3/partitions-8MiB.csv @@ -3,5 +3,5 @@ # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 0x1F0000, -vfs, data, fat, 0x200000, 0x600000, +factory, app, factory, 0x10000, 0x1FB000, +vfs, data, fat, 0x20b000, 0x600000, diff --git a/boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv b/boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv index aaeda83..aa1f1ed 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv +++ b/boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv @@ -3,6 +3,6 @@ # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 0x1F0000, -vfs, data, fat, 0x200000, 0x600000, +factory, app, factory, 0x10000, 0x1FB000, +vfs, data, fat, 0x20b000, 0x600000, diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/partitions-8MiB.csv b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/partitions-8MiB.csv index aaeda83..5d6f68d 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/partitions-8MiB.csv +++ b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/partitions-8MiB.csv @@ -3,6 +3,6 @@ # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 0x1F0000, -vfs, data, fat, 0x200000, 0x600000, +factory, app, factory, 0x10000, 0x1FB000, +vfs, data, fat, 0x20b000, 0x600000, diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/partitions-8MiB.csv b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/partitions-8MiB.csv index aaeda83..aa1f1ed 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/partitions-8MiB.csv +++ b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/partitions-8MiB.csv @@ -3,6 +3,6 @@ # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 0x1F0000, -vfs, data, fat, 0x200000, 0x600000, +factory, app, factory, 0x10000, 0x1FB000, +vfs, data, fat, 0x20b000, 0x600000,