From d53f95bf54a477d23a76c1c31fe5c09e1b4509d5 Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Thu, 30 Apr 2020 18:15:40 +0300 Subject: [PATCH 1/7] Add basic support for external CMake arguments // Issue #339 Might be useful when a user wants to modify project configuration settings: set cache entries or enable developer warnings specific to CMake --- builder/frameworks/espidf.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/builder/frameworks/espidf.py b/builder/frameworks/espidf.py index cf7dfdbc6..1c9980735 100644 --- a/builder/frameworks/espidf.py +++ b/builder/frameworks/espidf.py @@ -768,10 +768,10 @@ def find_default_component(target_configs): # Generate final linker script # -if not env.BoardConfig().get("build.ldscript", ""): +if not board.get("build.ldscript", ""): linker_script = env.Command( join("$BUILD_DIR", "esp32_out.ld"), - env.BoardConfig().get( + board.get( "build.esp-idf.ldscript", join(FRAMEWORK_DIR, "components", "esp32", "ld", "esp32.ld"), ), @@ -789,7 +789,7 @@ def find_default_component(target_configs): # fwpartitions_dir = join(FRAMEWORK_DIR, "components", "partition_table") -partitions_csv = env.BoardConfig().get("build.partitions", "partitions_singleapp.csv") +partitions_csv = board.get("build.partitions", "partitions_singleapp.csv") env.Replace( PARTITIONS_TABLE_CSV=abspath( join(fwpartitions_dir, partitions_csv) @@ -805,7 +805,7 @@ def find_default_component(target_configs): '"$PYTHONEXE" "%s" -q --flash-size "%s" $SOURCE $TARGET' % ( join(FRAMEWORK_DIR, "components", "partition_table", "gen_esp32part.py"), - env.BoardConfig().get("upload.flash_size", "detect"), + board.get("upload.flash_size", "detect"), ), "Generating partitions $TARGET", ), @@ -853,9 +853,8 @@ def find_default_component(target_configs): project_codemodel = get_cmake_code_model( env.subst("$PROJECT_DIR"), BUILD_DIR, - ["-DEXTRA_COMPONENT_DIRS:PATH=" + ";".join(extra_components)] - if extra_components - else [], + ["-DEXTRA_COMPONENT_DIRS:PATH=" + ";".join(extra_components)] + + click.parser.split_arg_string(board.get("build.cmake_extra_args", "")) ) if not project_codemodel: From 32d50ab593ed12c3bb9d9537589723ce34d42ab2 Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Mon, 11 May 2020 21:17:48 +0300 Subject: [PATCH 2/7] Add preliminary support for ESP32-S2 --- builder/main.py | 23 ++++++++++++----------- platform.json | 5 +++++ platform.py | 19 +++++++++++++++---- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/builder/main.py b/builder/main.py index 4d68bdefe..d1929fc0f 100644 --- a/builder/main.py +++ b/builder/main.py @@ -130,20 +130,21 @@ def __fetch_spiffs_size(target, source, env): env = DefaultEnvironment() platform = env.PioPlatform() board = env.BoardConfig() +mcu = board.get("build.mcu", "esp32") env.Replace( __get_board_f_flash=_get_board_f_flash, __get_board_flash_mode=_get_board_flash_mode, - AR="xtensa-esp32-elf-ar", - AS="xtensa-esp32-elf-as", - CC="xtensa-esp32-elf-gcc", - CXX="xtensa-esp32-elf-g++", - GDB="xtensa-esp32-elf-gdb", + AR="xtensa-%s-elf-ar" % mcu, + AS="xtensa-%s-elf-as" % mcu, + CC="xtensa-%s-elf-gcc" % mcu, + CXX="xtensa-%s-elf-g++" % mcu, + GDB="xtensa-%s-elf-gdb" % mcu, OBJCOPY=join( platform.get_package_dir("tool-esptoolpy") or "", "esptool.py"), - RANLIB="xtensa-esp32-elf-ranlib", - SIZETOOL="xtensa-esp32-elf-size", + RANLIB="xtensa-%s-elf-ranlib" % mcu, + SIZETOOL="xtensa-%s-elf-size" % mcu, ARFLAGS=["rc"], @@ -153,7 +154,7 @@ def __fetch_spiffs_size(target, source, env): SIZEPRINTCMD="$SIZETOOL -B -d $SOURCES", ERASEFLAGS=[ - "--chip", "esp32", + "--chip", mcu, "--port", '"$UPLOAD_PORT"' ], ERASECMD='"$PYTHONEXE" "$OBJCOPY" $ERASEFLAGS erase_flash', @@ -177,7 +178,7 @@ def __fetch_spiffs_size(target, source, env): ElfToBin=Builder( action=env.VerboseAction(" ".join([ '"$PYTHONEXE" "$OBJCOPY"', - "--chip", "esp32", + "--chip", mcu, "elf2image", "--flash_mode", "$BOARD_FLASH_MODE", "--flash_freq", "${__get_board_f_flash(__env__)}", @@ -293,7 +294,7 @@ def __fetch_spiffs_size(target, source, env): UPLOADER=join( platform.get_package_dir("tool-esptoolpy") or "", "esptool.py"), UPLOADERFLAGS=[ - "--chip", "esp32", + "--chip", mcu, "--port", '"$UPLOAD_PORT"', "--baud", "$UPLOAD_SPEED", "--before", "default_reset", @@ -311,7 +312,7 @@ def __fetch_spiffs_size(target, source, env): if "uploadfs" in COMMAND_LINE_TARGETS: env.Replace( UPLOADERFLAGS=[ - "--chip", "esp32", + "--chip", mcu, "--port", '"$UPLOAD_PORT"', "--baud", "$UPLOAD_SPEED", "--before", "default_reset", diff --git a/platform.json b/platform.json index 8463969ba..97de2c458 100644 --- a/platform.json +++ b/platform.json @@ -42,6 +42,11 @@ "type": "toolchain", "version": "~2.50200.0" }, + "toolchain-xtensa32s2": { + "type": "toolchain", + "optional": true, + "version": "~1.80200.0" + }, "toolchain-esp32ulp": { "type": "toolchain", "optional": true, diff --git a/platform.py b/platform.py index 9e161a3eb..4ee80e419 100644 --- a/platform.py +++ b/platform.py @@ -21,6 +21,13 @@ class Espressif32Platform(PlatformBase): def configure_default_packages(self, variables, targets): + if not variables.get("board"): + return PlatformBase.configure_default_packages( + self, variables, targets) + + board_config = self.board_config(variables.get("board")) + mcu = variables.get("board_build.mcu", board_config.get( + "build.mcu", "esp32")) if "buildfs" in targets: self.packages['tool-mkspiffs']['optional'] = False if variables.get("upload_protocol"): @@ -29,15 +36,19 @@ def configure_default_packages(self, variables, targets): self.packages['toolchain-esp32ulp']['optional'] = False if "espidf" in variables.get("pioframework", []): for p in self.packages: - if p in ("tool-cmake", "tool-ninja", "toolchain-esp32ulp"): - self.packages[p]['optional'] = False + if p in ("tool-cmake", "tool-ninja", "toolchain-%sulp" % mcu): + self.packages[p]["optional"] = False elif p in ("tool-mconf", "tool-idf") and "windows" in get_systype(): self.packages[p]['optional'] = False self.packages['toolchain-xtensa32']['version'] = "~2.80200.0" + # ESP32-S2 toolchain is identical for both Arduino and ESP-IDF + if mcu == "esp32s2": + self.packages.pop("toolchain-xtensa32", None) + self.packages['toolchain-xtensa32s2']['optional'] = False + self.packages['tool-esptoolpy']['version'] = "~1.30000.0" build_core = variables.get( - "board_build.core", self.board_config(variables.get("board")).get( - "build.core", "arduino")).lower() + "board_build.core", board_config.get("build.core", "arduino")).lower() if build_core == "mbcwb": self.packages['framework-arduinoespressif32']['optional'] = True self.packages['framework-arduino-mbcwb']['optional'] = False From 4774553dd33facda51fec74b5a686a6b9c72c833 Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Thu, 21 May 2020 21:19:35 +0300 Subject: [PATCH 3/7] Update ESP-IDF to v4.0.1 --- platform.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform.json b/platform.json index 97de2c458..8b08158d0 100644 --- a/platform.json +++ b/platform.json @@ -65,7 +65,7 @@ "framework-espidf": { "type": "framework", "optional": true, - "version": "~3.40000.0" + "version": "~3.40001.0" }, "framework-simba": { "type": "framework", From 9f9987729e9401854367a01c0f048c2cabef8bbc Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Sat, 23 May 2020 22:15:56 +0300 Subject: [PATCH 4/7] Improve searching for ESP-IDF service files --- builder/frameworks/espidf.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/builder/frameworks/espidf.py b/builder/frameworks/espidf.py index 1c9980735..e240812fb 100644 --- a/builder/frameworks/espidf.py +++ b/builder/frameworks/espidf.py @@ -411,13 +411,16 @@ def find_framework_service_files(search_path, sdk_config): result["kconfig_files"] = list() result["kconfig_build_files"] = list() for d in listdir(search_path): - for f in listdir(join(search_path, d)): + path = join(search_path, d) + if not isdir(path): + continue + for f in listdir(path): if f == "linker.lf": - result["lf_files"].append(join(search_path, d, f)) + result["lf_files"].append(join(path, f)) elif f == "Kconfig.projbuild": - result["kconfig_build_files"].append(join(search_path, d, f)) + result["kconfig_build_files"].append(join(path, f)) elif f == "Kconfig": - result["kconfig_files"].append(join(search_path, d, f)) + result["kconfig_files"].append(join(path, f)) result["lf_files"].extend([ join(FRAMEWORK_DIR, "components", "esp32", "ld", "esp32_fragments.lf"), From 55e1024c52d48098f460dfe36426df13dc54a918 Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Mon, 25 May 2020 11:55:29 +0300 Subject: [PATCH 5/7] Switch to Github Actions as the main CI platform --- .github/workflows/examples.yml | 46 ++++++++++++++++++++++++++++++++++ .travis.yml | 39 ---------------------------- README.md | 4 +-- appveyor.yml | 41 ------------------------------ 4 files changed, 48 insertions(+), 82 deletions(-) create mode 100644 .github/workflows/examples.yml delete mode 100644 .travis.yml delete mode 100644 appveyor.yml diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml new file mode 100644 index 000000000..a21c872b1 --- /dev/null +++ b/.github/workflows/examples.yml @@ -0,0 +1,46 @@ +name: Examples + +on: [push] + +jobs: + build: + strategy: + fail-fast: false + matrix: + os: [ubuntu-16.04, windows-latest, macos-latest] + python-version: [2.7, 3.7] + example: + - "examples/arduino-blink" + - "examples/arduino-briki-internal-libs" + - "examples/arduino-wifiscan" + - "examples/espidf-arduino-blink" + - "examples/espidf-arduino-wifiscan" + - "examples/espidf-aws-iot" + - "examples/espidf-ble-eddystone" + - "examples/espidf-coap-server" + - "examples/espidf-exceptions" + - "examples/espidf-hello-world" + - "examples/espidf-http-request" + - "examples/espidf-peripherals-uart" + - "examples/espidf-storage-sdcard" + - "examples/espidf-ulp-adc" + - "examples/espidf-ulp-pulse" + - "examples/pumbaa-blink" + - "examples/simba-blink" + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v2 + with: + submodules: "recursive" + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -U https://github.com/platformio/platformio/archive/develop.zip + platformio platform install file://. + - name: Build examples + run: | + platformio run -d ${{ matrix.example }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 5524d9c39..000000000 --- a/.travis.yml +++ /dev/null @@ -1,39 +0,0 @@ -language: python -python: - - "2.7" - - "3.6" - -env: - - PLATFORMIO_PROJECT_DIR=examples/arduino-blink - - PLATFORMIO_PROJECT_DIR=examples/arduino-briki-internal-libs - - PLATFORMIO_PROJECT_DIR=examples/arduino-wifiscan - - PLATFORMIO_PROJECT_DIR=examples/espidf-arduino-blink - - PLATFORMIO_PROJECT_DIR=examples/espidf-arduino-wifiscan - - PLATFORMIO_PROJECT_DIR=examples/espidf-aws-iot - - PLATFORMIO_PROJECT_DIR=examples/espidf-ble-eddystone - - PLATFORMIO_PROJECT_DIR=examples/espidf-coap-server - - PLATFORMIO_PROJECT_DIR=examples/espidf-exceptions - - PLATFORMIO_PROJECT_DIR=examples/espidf-hello-world - - PLATFORMIO_PROJECT_DIR=examples/espidf-http-request - - PLATFORMIO_PROJECT_DIR=examples/espidf-peripherals-uart - - PLATFORMIO_PROJECT_DIR=examples/espidf-storage-sdcard - - PLATFORMIO_PROJECT_DIR=examples/espidf-ulp-adc - - PLATFORMIO_PROJECT_DIR=examples/espidf-ulp-pulse - - PLATFORMIO_PROJECT_DIR=examples/pumbaa-blink - - PLATFORMIO_PROJECT_DIR=examples/simba-blink - -install: - - pip install -U https://github.com/platformio/platformio/archive/develop.zip - - platformio platform install file://. - -script: - - platformio run -d $PLATFORMIO_PROJECT_DIR - -notifications: - email: false - - slack: - rooms: - secure: EkXAtWoUQtgtFeiOobnNZmaUgPw7evpo60Tam5jQiKbVK02bCbBODELTSFsGfIj05oAzNm4s1xBTRD3x9bsvPqvfThHwIHZ2M2BlrT06iINsfFXoXM5yCuBAIi8FF61UKmiZn+Pm+IK6OeUFmzXoP5BcpS2LRB0eSoCj0nsF5cj/H+oA6BnCn/5AXhbSQSiHxOPfq/0khQb5dalmf3B9NHq08MEiOLJR5J9zPglKMfE2HR8PS98irN0x1t9+aReMfUJSZrxfqwvWKz/Sb38/2H37A4GOXpsnRDagZXkfw/MSckSxRFtW8p/0LUBQqeaxdC5Z9qIuyDCAeHPm8d0AIArR7Ylz6BjlNVJVdCTAZaNTp7PUV4n1cN7gZPq8NhWnuGG3wdWiYlJEyHmmRjr9adDYTshCl3gf2GOjB5YJIjoNrixkoJwHM2gJLvwuOw7mgo0hLbqW84XSgV6KeSU12AYk9d2nz3AhWVsb4DiKrN+EqnhBVnCygAxYGlNxfZOPG0FIYai2DUsl6PXd3OBmxeNEWG+x7BivG+maaQEyC4SeFaNFIBR1L4F+C0fHW1VxiCvJCb6vB7fOk7fU5UDhpYnrRmSuyAVYR86aZ+3VnZjbjpGac6hfN7Qxg5WeC5Yd6eR2lrNag9lG5zASylZ1nsdlOZloPs8ilGe43mDpAkg= - on_failure: always - on_success: change diff --git a/README.md b/README.md index 26d28d962..ffcbdd3d1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Espressif 32: development platform for [PlatformIO](http://platformio.org) -[![Build Status](https://travis-ci.org/platformio/platform-espressif32.svg?branch=develop)](https://travis-ci.org/platformio/platform-espressif32) -[![Build status](https://ci.appveyor.com/api/projects/status/nl087sumhneumse3/branch/develop?svg=true)](https://ci.appveyor.com/project/ivankravets/platform-espressif32/branch/develop) + +![alt text](https://github.com/platformio/platform-espressif32/workflows/Examples/badge.svg "Espressif 32 development platform") Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 5bb530191..000000000 --- a/appveyor.yml +++ /dev/null @@ -1,41 +0,0 @@ -build: off -environment: - - matrix: - - PLATFORMIO_PROJECT_DIR: "examples/arduino-blink" - - PLATFORMIO_PROJECT_DIR: "examples/arduino-briki-internal-libs" - - PLATFORMIO_PROJECT_DIR: "examples/arduino-wifiscan" - - PLATFORMIO_PROJECT_DIR: "examples/espidf-arduino-blink" - - PLATFORMIO_PROJECT_DIR: "examples/espidf-arduino-wifiscan" - - PLATFORMIO_PROJECT_DIR: "examples/espidf-aws-iot" - - PLATFORMIO_PROJECT_DIR: "examples/espidf-ble-eddystone" - - PLATFORMIO_PROJECT_DIR: "examples/espidf-coap-server" - - PLATFORMIO_PROJECT_DIR: "examples/espidf-exceptions" - - PLATFORMIO_PROJECT_DIR: "examples/espidf-hello-world" - - PLATFORMIO_PROJECT_DIR: "examples/espidf-http-request" - - PLATFORMIO_PROJECT_DIR: "examples/espidf-peripherals-uart" - - PLATFORMIO_PROJECT_DIR: "examples/espidf-storage-sdcard" - - PLATFORMIO_PROJECT_DIR: "examples/espidf-ulp-adc" - - PLATFORMIO_PROJECT_DIR: "examples/espidf-ulp-pulse" - - PLATFORMIO_PROJECT_DIR: "examples/pumbaa-blink" - - PLATFORMIO_PROJECT_DIR: "examples/simba-blink" - -platform: - - x64 - -install: -- cmd: git submodule update --init --recursive -- cmd: SET PATH=C:\Python36-x64;C:\Python36-x64\Scripts;%PATH% -- cmd: pip3 install -U https://github.com/platformio/platformio/archive/develop.zip -- cmd: platformio platform install file://. - -test_script: -- cmd: platformio run -d %PLATFORMIO_PROJECT_DIR% - -notifications: - - provider: Slack - incoming_webhook: - secure: E9H0SU0Ju7WLDvgxsV8cs3J62T3nTTX7QkEjsczN0Sto/c9hWkVfhc5gGWUkxhlD975cokHByKGJIdwYwCewqOI+7BrcT8U+nlga4Uau7J8= - on_build_success: false - on_build_failure: true - on_build_status_changed: true From 721014dde2105e896469cc20320109a6bbb816d0 Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Mon, 25 May 2020 14:15:50 +0300 Subject: [PATCH 6/7] Enable debugging feature for ESP32-PICO-KIT board // Resolve #336 --- boards/pico32.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/boards/pico32.json b/boards/pico32.json index 25733e17d..5580b07e0 100644 --- a/boards/pico32.json +++ b/boards/pico32.json @@ -17,6 +17,9 @@ "ethernet", "can" ], + "debug": { + "openocd_board": "esp-wroom-32.cfg" + }, "frameworks": [ "arduino", "espidf" From 2ba7708375dde7b53b91a4a8cd162b531322bd56 Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Mon, 25 May 2020 16:12:41 +0300 Subject: [PATCH 7/7] Bump version to 1.12.2 --- platform.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform.json b/platform.json index 8b08158d0..971bd8c03 100644 --- a/platform.json +++ b/platform.json @@ -12,7 +12,7 @@ "type": "git", "url": "https://github.com/platformio/platform-espressif32.git" }, - "version": "1.12.1", + "version": "1.12.2", "packageRepositories": [ "https://dl.bintray.com/platformio/dl-packages/manifest.json", "http://dl.platformio.org/packages/manifest.json",