diff --git a/CMakeLists.txt b/CMakeLists.txt index bb85dbd98..ca1497264 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ idf_build_get_property(elf EXECUTABLE GENERATOR_EXPRESSION) add_custom_command( OUTPUT "idf_libs" - COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-libs.sh ${IDF_TARGET} "${CONFIG_ESPTOOLPY_OCT_FLASH}" "${CONFIG_SPIRAM_MODE_OCT}" "${CONFIG_IDF_TARGET_ARCH_XTENSA}" + COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-libs.sh ${IDF_TARGET} "${CONFIG_LIB_BUILDER_FLASHMODE}" "${CONFIG_SPIRAM_MODE_OCT}" "${CONFIG_IDF_TARGET_ARCH_XTENSA}" DEPENDS ${elf} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} VERBATIM @@ -29,7 +29,7 @@ add_custom_target(copy-bootloader DEPENDS "copy_bootloader") add_custom_command( OUTPUT "mem_variant" - COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-mem-variant.sh ${IDF_TARGET} "${CONFIG_ESPTOOLPY_OCT_FLASH}" "${CONFIG_SPIRAM_MODE_OCT}" + COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-mem-variant.sh ${IDF_TARGET} "${CONFIG_LIB_BUILDER_FLASHMODE}" "${CONFIG_SPIRAM_MODE_OCT}" DEPENDS ${elf} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} VERBATIM diff --git a/README.md b/README.md index dc33da57b..c6bce4e81 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,30 @@ -# Tasmota ESP32 Arduino Lib Builder [![Build Status](https://travis-ci.org/espressif/esp32-arduino-lib-builder.svg?branch=master)](https://travis-ci.org/espressif/esp32-arduino-lib-builder) -This repository contains the scripts that produce the libraries included with esp32-arduino. +# Tasmota ESP32 Arduino Lib Builder [![ESP32 builder](https://github.com/Jason2866/esp32-arduino-lib-builder/actions/workflows/push.yml/badge.svg)](https://github.com/Jason2866/esp32-arduino-lib-builder/actions/workflows/push.yml) -Tested on Ubuntu (32 and 64 bit), Raspberry Pi and MacOS. +This repository contains the scripts that produce the libraries included with Tasmota esp32-arduino. -### Build on Ubuntu and Raspberry Pi +### Build on Ubuntu ```bash sudo apt-get install git wget curl libssl-dev libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache sudo pip install --upgrade pip -git clone https://github.com/espressif/esp32-arduino-lib-builder +git clone https://github.com/Jason2866/esp32-arduino-lib-builder cd esp32-arduino-lib-builder ./build.sh ``` +### Development builds +Look in release and download a version. The day of build is using the commits of this day of IDF / Arduino. + +### Stable Release +are based on Arduino Core 2.0.3 and can be used with Platformio for the ESP32, ESP32C3, ESP32S2 and ESP32S3 +``` +[platformio] +platform = https://github.com/tasmota/platform-espressif32/releases/download/v.2.0.3/platform-espressif32-v.2.0.3.zip +framework = arduino, espidf +``` +and for the ESP32solo1 with +``` +[platformio] +platform = https://github.com/tasmota/platform-espressif32/releases/download/v.2.0.3/platform-espressif32-solo1-v.2.0.3.zip +framework = arduino, espidf +``` +The frameworks are here [https://github.com/tasmota/arduino-esp32/releases](https://github.com/tasmota/arduino-esp32/releases) diff --git a/configs/builds.json b/configs/builds.json index 2aeaeb9f6..b83892c32 100644 --- a/configs/builds.json +++ b/configs/builds.json @@ -1,34 +1,40 @@ { "mem_variants_files":[ - { - "file":"libbootloader_support.a", - "src":"build/esp-idf/bootloader_support/libbootloader_support.a", - "out":"lib/libbootloader_support.a" - }, - { - "file":"libesp_hw_support.a", - "src":"build/esp-idf/esp_hw_support/libesp_hw_support.a", - "out":"lib/libesp_hw_support.a" - }, { "file":"libspi_flash.a", "src":"build/esp-idf/spi_flash/libspi_flash.a", - "out":"lib/libspi_flash.a" + "out":"lib/libspi_flash.a", + "targets":["esp32","esp32c3","esp32s2","esp32s3"] + }, + { + "file":"libesp_system.a", + "src":"build/esp-idf/esp_system/libesp_system.a", + "out":"lib/libesp_system.a", + "targets":["esp32s3"] }, { "file":"libfreertos.a", "src":"build/esp-idf/freertos/libfreertos.a", - "out":"lib/libfreertos.a" + "out":"lib/libfreertos.a", + "targets":["esp32s3"] }, { - "file":"libesp_system.a", - "src":"build/esp-idf/esp_system/libesp_system.a", - "out":"lib/libesp_system.a" + "file":"libbootloader_support.a", + "src":"build/esp-idf/bootloader_support/libbootloader_support.a", + "out":"lib/libbootloader_support.a", + "targets":["esp32s3"] + }, + { + "file":"libesp_hw_support.a", + "src":"build/esp-idf/esp_hw_support/libesp_hw_support.a", + "out":"lib/libesp_hw_support.a", + "targets":["esp32s3"] }, { "file":"sections.ld", "src":"build/esp-idf/esp_system/ld/sections.ld", - "out":"ld/sections.ld" + "out":"ld/sections.ld", + "targets":["esp32s3"] } ], "targets":[ @@ -44,6 +50,8 @@ ], "mem_variants":[ ["qio","80m","opi_ram"], + ["dio","80m","qio_ram"], + ["dio","80m","opi_ram"], ["opi","80m","opi_ram"], ["opi","80m","qio_ram"] ] @@ -62,7 +70,11 @@ ["dio","40m"], ["dout","40m"] ], - "mem_variants":[] + "mem_variants":[ + ["qout","80m"], + ["dio","80m"], + ["qio","80m"] + ] }, { "target": "esp32c3", @@ -78,7 +90,11 @@ ["dio","40m"], ["dout","40m"] ], - "mem_variants":[] + "mem_variants":[ + ["qout","80m"], + ["dio","80m"], + ["qio","80m"] + ] }, { "target": "esp32", @@ -94,7 +110,11 @@ ["dio","40m"], ["dout","40m"] ], - "mem_variants":[] + "mem_variants":[ + ["qout","80m"], + ["dio","80m"], + ["qio","80m"] + ] } ] } diff --git a/configs/defconfig.esp32c3 b/configs/defconfig.esp32c3 index 9d4f23b2e..08ea0559e 100644 --- a/configs/defconfig.esp32c3 +++ b/configs/defconfig.esp32c3 @@ -52,16 +52,20 @@ CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2304 CONFIG_HAL_ASSERTION_DISABLE=y CONFIG_LOG_DEFAULT_LEVEL_NONE=y # CONFIG_LOG_COLORS is not set +CONFIG_LWIP_IPV6_AUTOCONFIG=y CONFIG_LWIP_LOCAL_HOSTNAME="tasmota" CONFIG_LWIP_MAX_SOCKETS=16 CONFIG_LWIP_SO_RCVBUF=y CONFIG_LWIP_IP_FORWARD=y CONFIG_LWIP_IPV4_NAPT=y CONFIG_LWIP_DHCP_OPTIONS_LEN=128 +CONFIG_LWIP_SNTP_UPDATE_DELAY=10800000 +CONFIG_MBEDTLS_PSK_MODES=y +CONFIG_MBEDTLS_KEY_EXCHANGE_PSK=y +CONFIG_NEWLIB_NANO_FORMAT=y CONFIG_MBEDTLS_PSK_MODES=y CONFIG_MBEDTLS_KEY_EXCHANGE_PSK=y CONFIG_NEWLIB_NANO_FORMAT=y -CONFIG_SPI_FLASH_ROM_IMPL=y CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED=y # CONFIG_UNITY_ENABLE_FLOAT is not set # CONFIG_UNITY_ENABLE_DOUBLE is not set diff --git a/configs/defconfig.esp32s2 b/configs/defconfig.esp32s2 index f00dd53cc..905a1a5f5 100644 --- a/configs/defconfig.esp32s2 +++ b/configs/defconfig.esp32s2 @@ -21,6 +21,7 @@ CONFIG_SPIRAM_IGNORE_NOTFOUND=y CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=4096 CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=0 +CONFIG_LWIP_IPV6_AUTOCONFIG=y CONFIG_ESP32S2_KEEP_USB_ALIVE=y CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH=y CONFIG_HTTPD_WS_SUPPORT=y @@ -59,6 +60,7 @@ CONFIG_LWIP_IPV4_NAPT=y # CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set CONFIG_LWIP_DHCP_RESTORE_LAST_IP=y CONFIG_LWIP_DHCP_OPTIONS_LEN=128 +CONFIG_LWIP_SNTP_UPDATE_DELAY=10800000 CONFIG_LWIP_TCP_SYNMAXRTX=6 CONFIG_LWIP_TCP_MSS=1436 CONFIG_LWIP_TCP_RTO_TIME=3000 @@ -71,7 +73,6 @@ CONFIG_MBEDTLS_KEY_EXCHANGE_PSK=y CONFIG_NEWLIB_NANO_FORMAT=y CONFIG_OPENSSL_ASSERT_DO_NOTHING=y CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=2048 -CONFIG_SPI_FLASH_ROM_IMPL=y CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED=y CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=10 CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=2 diff --git a/configs/defconfig.esp32s3 b/configs/defconfig.esp32s3 index 53c5d2d6c..6b9184861 100644 --- a/configs/defconfig.esp32s3 +++ b/configs/defconfig.esp32s3 @@ -45,6 +45,7 @@ CONFIG_SPIRAM_IGNORE_NOTFOUND=y CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=4096 CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=0 +CONFIG_LWIP_IPV6_AUTOCONFIG=y CONFIG_ESP32S3_RTC_CLK_CAL_CYCLES=576 CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH=y CONFIG_HTTPD_WS_SUPPORT=y @@ -86,6 +87,7 @@ CONFIG_LWIP_IPV4_NAPT=y # CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set CONFIG_LWIP_DHCP_RESTORE_LAST_IP=y CONFIG_LWIP_DHCP_OPTIONS_LEN=128 +CONFIG_LWIP_SNTP_UPDATE_DELAY=10800000 CONFIG_LWIP_TCP_SYNMAXRTX=6 CONFIG_LWIP_TCP_MSS=1436 CONFIG_LWIP_TCP_RTO_TIME=3000 @@ -97,7 +99,6 @@ CONFIG_MBEDTLS_KEY_EXCHANGE_PSK=y CONFIG_NEWLIB_NANO_FORMAT=y CONFIG_OPENSSL_ASSERT_DO_NOTHING=y CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=2048 -CONFIG_SPI_FLASH_ROM_IMPL=y CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED=y CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=10 CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=2 diff --git a/tools/copy-libs.sh b/tools/copy-libs.sh index 9b2f16807..681fa6807 100755 --- a/tools/copy-libs.sh +++ b/tools/copy-libs.sh @@ -3,13 +3,9 @@ IDF_TARGET=$1 IS_XTENSA=$4 -OCT_FLASH= +OCT_FLASH="$2" OCT_PSRAM= -if [ "$2" = "y" ]; then - OCT_FLASH="opi" -else - OCT_FLASH="qspi" -fi + if [ "$3" = "y" ]; then OCT_PSRAM="opi" else @@ -514,9 +510,18 @@ done mkdir -p "$AR_SDK/$MEMCONF/include" mv "$PWD/build/config/sdkconfig.h" "$AR_SDK/$MEMCONF/include/sdkconfig.h" for mem_variant in `jq -c '.mem_variants_files[]' configs/builds.json`; do - file=$(echo "$mem_variant" | jq -c '.file' | tr -d '"') - out=$(echo "$mem_variant" | jq -c '.out' | tr -d '"') - mv "$AR_SDK/$out" "$AR_SDK/$MEMCONF/$file" + skip_file=1 + for file_target in $(echo "$mem_variant" | jq -c '.targets[]' | tr -d '"'); do + if [ "$file_target" == "$IDF_TARGET" ]; then + skip_file=0 + break + fi + done + if [ $skip_file -eq 0 ]; then + file=$(echo "$mem_variant" | jq -c '.file' | tr -d '"') + out=$(echo "$mem_variant" | jq -c '.out' | tr -d '"') + mv "$AR_SDK/$out" "$AR_SDK/$MEMCONF/$file" + fi done; # Add IDF versions to sdkconfig diff --git a/tools/copy-mem-variant.sh b/tools/copy-mem-variant.sh index b9366ad75..9b8f3b58e 100755 --- a/tools/copy-mem-variant.sh +++ b/tools/copy-mem-variant.sh @@ -1,14 +1,8 @@ #!/bin/bash IDF_TARGET=$1 -OCT_FLASH= +OCT_FLASH="$2" OCT_PSRAM= -if [ "$2" = "y" ]; then - OCT_FLASH="opi" -else - OCT_FLASH="qspi" -fi - if [ "$3" = "y" ]; then OCT_PSRAM="opi" else @@ -30,7 +24,16 @@ rm -rf "$AR_SDK/$MEMCONF" mkdir -p "$AR_SDK/$MEMCONF/include" mv "build/config/sdkconfig.h" "$AR_SDK/$MEMCONF/include/sdkconfig.h" for mem_variant in `jq -c '.mem_variants_files[]' configs/builds.json`; do - file=$(echo "$mem_variant" | jq -c '.file' | tr -d '"') - src=$(echo "$mem_variant" | jq -c '.src' | tr -d '"') - cp "$src" "$AR_SDK/$MEMCONF/$file" + skip_file=1 + for file_target in $(echo "$mem_variant" | jq -c '.targets[]' | tr -d '"'); do + if [ "$file_target" == "$IDF_TARGET" ]; then + skip_file=0 + break + fi + done + if [ $skip_file -eq 0 ]; then + file=$(echo "$mem_variant" | jq -c '.file' | tr -d '"') + src=$(echo "$mem_variant" | jq -c '.src' | tr -d '"') + cp "$src" "$AR_SDK/$MEMCONF/$file" + fi done;