From 20e866c74f324b30ba2cefb4d74044e2905db58c Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Fri, 6 May 2022 12:52:39 +0300 Subject: [PATCH 01/15] Compile IDF bootloader with optimizations by default By default the size of bootloader is limited to 0x2000 bytes, in debug mode the footprint can be easily grow beyond this limit Issue #793 --- builder/frameworks/espidf.py | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/builder/frameworks/espidf.py b/builder/frameworks/espidf.py index 9b9db48..c1b6787 100644 --- a/builder/frameworks/espidf.py +++ b/builder/frameworks/espidf.py @@ -273,13 +273,15 @@ def load_target_configurations(cmake_codemodel, cmake_api_reply_dir): return configs -def build_library(default_env, lib_config, project_src_dir, prepend_dir=None): +def build_library( + default_env, lib_config, project_src_dir, prepend_dir=None, debug_allowed=True +): lib_name = lib_config["nameOnDisk"] lib_path = lib_config["paths"]["build"] if prepend_dir: lib_path = os.path.join(prepend_dir, lib_path) lib_objects = compile_source_files( - lib_config, default_env, project_src_dir, prepend_dir + lib_config, default_env, project_src_dir, prepend_dir, debug_allowed ) return default_env.Library( target=os.path.join("$BUILD_DIR", lib_path, lib_name), source=lib_objects @@ -553,11 +555,11 @@ def generate_project_ld_script(sdk_config, ignore_targets=None): ) -def prepare_build_envs(config, default_env): +def prepare_build_envs(config, default_env, debug_allowed=True): build_envs = [] target_compile_groups = config.get("compileGroups") - is_build_type_debug = "debug" in env.GetBuildType() + is_build_type_debug = "debug" in env.GetBuildType() and debug_allowed for cg in target_compile_groups: includes = [] sys_includes = [] @@ -587,8 +589,8 @@ def prepare_build_envs(config, default_env): return build_envs -def compile_source_files(config, default_env, project_src_dir, prepend_dir=None): - build_envs = prepare_build_envs(config, default_env) +def compile_source_files(config, default_env, project_src_dir, prepend_dir=None, debug_allowed=True): + build_envs = prepare_build_envs(config, default_env, debug_allowed) objects = [] components_dir = fs.to_unix_path(os.path.join(FRAMEWORK_DIR, "components")) for source in config.get("sources", []): @@ -703,7 +705,7 @@ def find_lib_deps(components_map, elf_config, link_args, ignore_components=None) return result -def build_bootloader(): +def build_bootloader(sdk_config): bootloader_src_dir = os.path.join( FRAMEWORK_DIR, "components", "bootloader", "subproject" ) @@ -743,7 +745,15 @@ def build_bootloader(): target_configs, ["STATIC_LIBRARY", "OBJECT_LIBRARY"] ) - build_components(bootloader_env, components_map, bootloader_src_dir, "bootloader") + # Note: By default the size of bootloader is limited to 0x2000 bytes, + # in debug mode the footprint size can be easily grow beyond this limit + build_components( + bootloader_env, + components_map, + bootloader_src_dir, + "bootloader", + debug_allowed=sdk_config.get("BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG", False), + ) link_args = extract_link_args(elf_config) extra_flags = filter_args(link_args["LINKFLAGS"], ["-T", "-u"]) link_args["LINKFLAGS"] = sorted( @@ -788,10 +798,12 @@ def get_components_map(target_configs, target_types, ignore_components=None): return result -def build_components(env, components_map, project_src_dir, prepend_dir=None): +def build_components( + env, components_map, project_src_dir, prepend_dir=None, debug_allowed=True +): for k, v in components_map.items(): components_map[k]["lib"] = build_library( - env, v["config"], project_src_dir, prepend_dir + env, v["config"], project_src_dir, prepend_dir, debug_allowed ) @@ -1232,7 +1244,7 @@ project_lib_includes = get_project_lib_includes(env) # Compile bootloader # -env.Depends("$BUILD_DIR/$PROGNAME$PROGSUFFIX", build_bootloader()) +env.Depends("$BUILD_DIR/$PROGNAME$PROGSUFFIX", build_bootloader(sdk_config)) # # Target: ESP-IDF menuconfig From 6295224609d5f12807c2de84d9c1e57e8a60ecd3 Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Fri, 6 May 2022 21:26:22 +0300 Subject: [PATCH 02/15] Refactor processing of IDF linker fragments Resolve #760 --- builder/frameworks/espidf.py | 103 ++++++++++++++++++++++++----------- 1 file changed, 71 insertions(+), 32 deletions(-) diff --git a/builder/frameworks/espidf.py b/builder/frameworks/espidf.py index c1b6787..fa44c37 100644 --- a/builder/frameworks/espidf.py +++ b/builder/frameworks/espidf.py @@ -429,57 +429,92 @@ def get_sdk_configuration(): return {} -def find_framework_service_files(search_path, sdk_config): - result = {} - result["lf_files"] = list() - result["kconfig_files"] = list() - result["kconfig_build_files"] = list() - for d in os.listdir(search_path): - path = os.path.join(search_path, d) - if not os.path.isdir(path): - continue - for f in os.listdir(path): - # Skip hardware specific files as they will be added later - if f == "linker.lf" and not os.path.basename(path).startswith( - ("esp32", "riscv") +def load_component_paths(framework_components_dir, ignored_component_prefixes=None): + def _scan_components_from_framework(): + result = [] + for component in os.listdir(framework_components_dir): + component_path = os.path.join(framework_components_dir, component) + if component.startswith(ignored_component_prefixes) or not os.path.isdir( + component_path ): - result["lf_files"].append(os.path.join(path, f)) - elif f == "Kconfig.projbuild": - result["kconfig_build_files"].append(os.path.join(path, f)) - elif f == "Kconfig": - result["kconfig_files"].append(os.path.join(path, f)) + continue + result.append(component_path) + + return result + + # First of all, try to load the list of used components from the project description + components = [] + ignored_component_prefixes = ignored_component_prefixes or [] + project_description_file = os.path.join(BUILD_DIR, "project_description.json") + if os.path.isfile(project_description_file): + with open(project_description_file) as fp: + try: + data = json.load(fp) + for path in data.get("build_component_paths", []): + if not os.path.basename(path).startswith( + ignored_component_prefixes + ): + components.append(path) + except: + print( + "Warning: Could not find load components from project description!\n" + ) + + return components or _scan_components_from_framework() + + +def extract_linker_script_fragments(framework_components_dir, sdk_config): + # Hardware-specific components are excluded from search and added manually below + project_components = load_component_paths( + framework_components_dir, ignored_component_prefixes=("esp32", "riscv") + ) + + result = [] + for component_path in project_components: + linker_fragment = os.path.join(component_path, "linker.lf") + if os.path.isfile(linker_fragment): + result.append(linker_fragment) + + if not result: + sys.stderr.write("Error: Failed to extract paths to linker script fragments\n") + env.Exit(1) if mcu == "esp32c3": - result["lf_files"].append( - os.path.join(FRAMEWORK_DIR, "components", "riscv", "linker.lf") - ) + result.append(os.path.join(framework_components_dir, "riscv", "linker.lf")) - result["lf_files"].extend( + result.extend( [ os.path.join( - FRAMEWORK_DIR, - "components", + framework_components_dir, idf_variant, "ld", "%s_fragments.lf" % idf_variant, ), os.path.join( - FRAMEWORK_DIR, - "components", + framework_components_dir, idf_variant, "linker.lf", ), - os.path.join(FRAMEWORK_DIR, "components", "newlib", "newlib.lf"), + os.path.join(framework_components_dir, "newlib", "newlib.lf"), ] ) if sdk_config.get("SPIRAM_CACHE_WORKAROUND", False): - result["lf_files"].append( + result.append( os.path.join( - FRAMEWORK_DIR, "components", "newlib", "esp32-spiram-rom-functions-c.lf" + framework_components_dir, "newlib", "esp32-spiram-rom-functions-c.lf" ) ) + if board.get("build.esp-idf.extra_lf_files", ""): + result.extend( + [ + lf if os.path.isabs(lf) else os.path.join(PROJECT_DIR, lf) + for lf in board.get("build.esp-idf.extra_lf_files").splitlines() + if lf.strip() + ] + ) + return result @@ -510,7 +545,7 @@ def create_custom_libraries_list(ldgen_libraries_file, ignore_targets): def generate_project_ld_script(sdk_config, ignore_targets=None): ignore_targets = ignore_targets or [] - project_files = find_framework_service_files( + linker_script_fragments = extract_linker_script_fragments( os.path.join(FRAMEWORK_DIR, "components"), sdk_config ) @@ -523,7 +558,9 @@ def generate_project_ld_script(sdk_config, ignore_targets=None): args = { "script": os.path.join(FRAMEWORK_DIR, "tools", "ldgen", "ldgen.py"), "config": SDKCONFIG_PATH, - "fragments": " ".join(['"%s"' % f for f in project_files.get("lf_files")]), + "fragments": " ".join( + ['"%s"' % fs.to_unix_path(f) for f in linker_script_fragments] + ), "kconfig": os.path.join(FRAMEWORK_DIR, "Kconfig"), "env_file": os.path.join("$BUILD_DIR", "config.env"), "libraries_list": libraries_list, @@ -589,7 +626,9 @@ def prepare_build_envs(config, default_env, debug_allowed=True): return build_envs -def compile_source_files(config, default_env, project_src_dir, prepend_dir=None, debug_allowed=True): +def compile_source_files( + config, default_env, project_src_dir, prepend_dir=None, debug_allowed=True +): build_envs = prepare_build_envs(config, default_env, debug_allowed) objects = [] components_dir = fs.to_unix_path(os.path.join(FRAMEWORK_DIR, "components")) From 1f106a0caf442bf147f457039dc7f39ee1d6793d Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Thu, 12 May 2022 15:36:50 +0300 Subject: [PATCH 03/15] Test ESP-IDF with PIO Unit Testing --- .github/workflows/examples.yml | 3 ++- .../test/test_dummy/test_dummy.c | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 examples/espidf-hello-world/test/test_dummy/test_dummy.c diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index 06f82af..f063fc8 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -45,4 +45,5 @@ jobs: pio pkg install --global --platform symlink://. - name: Build examples run: | - platformio run -d ${{ matrix.example }} + pio run -d ${{ matrix.example }} + pio test -d "examples/espidf-hello-world" -e esp32dev --without-uploading --without-testing diff --git a/examples/espidf-hello-world/test/test_dummy/test_dummy.c b/examples/espidf-hello-world/test/test_dummy/test_dummy.c new file mode 100644 index 0000000..b0c7025 --- /dev/null +++ b/examples/espidf-hello-world/test/test_dummy/test_dummy.c @@ -0,0 +1,15 @@ +#include + +void test_dummy(void) +{ + TEST_ASSERT_EQUAL(1, 1); +} + +void app_main() +{ + UNITY_BEGIN(); + + RUN_TEST(test_dummy); + + UNITY_END(); +} \ No newline at end of file From 8719551fbbab27ef03322099afaf6bdb411c972e Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Thu, 12 May 2022 15:57:43 +0300 Subject: [PATCH 04/15] Build unit tests in the separate step --- .github/workflows/examples.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index f063fc8..500bb30 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -46,4 +46,6 @@ jobs: - name: Build examples run: | pio run -d ${{ matrix.example }} + - name: Build unit tests + run: | pio test -d "examples/espidf-hello-world" -e esp32dev --without-uploading --without-testing From 1059124fa93fd4678c7966f4fdc2db0783fbc74b Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Thu, 12 May 2022 17:25:17 +0300 Subject: [PATCH 05/15] Move unit testing to a separate workflow --- .github/workflows/examples.yml | 3 --- .github/workflows/tests.yml | 30 ++++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index 500bb30..6ac32b5 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -46,6 +46,3 @@ jobs: - name: Build examples run: | pio run -d ${{ matrix.example }} - - name: Build unit tests - run: | - pio test -d "examples/espidf-hello-world" -e esp32dev --without-uploading --without-testing diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..a93ede2 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,30 @@ +name: "Unit Testing" + +on: [push, pull_request] + +jobs: + build: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + python-version: [3.7] + example: + - "examples/espidf-hello-world" + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v2 + with: + submodules: "recursive" + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + 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 + pio pkg install --global --platform symlink://. + - name: Build test + run: | + pio test -d ${{ matrix.example }} --without-uploading --without-testing From 9f9f39d8d57f032d98a27c6c1981a797db6544dd Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Mon, 16 May 2022 13:18:16 +0300 Subject: [PATCH 06/15] Add support for Arduino core v2.0.3 Resolve #799, resolves #762, resolves #674 --- boards/adafruit_feather_esp32_v2.json | 42 ++++++++++++++++++ boards/adafruit_feather_esp32s3.json | 62 +++++++++++++++++++++++++++ boards/adafruit_qtpy_esp32.json | 42 ++++++++++++++++++ boards/adafruit_qtpy_esp32s3.json | 62 +++++++++++++++++++++++++++ boards/deneyapkart1A.json | 41 ++++++++++++++++++ boards/esp32-s3-devkitc-1.json | 44 +++++++++++++++++++ boards/esp32s3box.json | 48 +++++++++++++++++++++ boards/esp32s3camlcd.json | 48 +++++++++++++++++++++ boards/lionbit.json | 12 ++++-- boards/lolin_c3_mini.json | 44 +++++++++++++++++++ boards/lolin_s2_pico.json | 46 ++++++++++++++++++++ boards/um_feathers3.json | 56 ++++++++++++++++++++++++ boards/um_pros3.json | 48 +++++++++++++++++++++ boards/um_rmp.json | 46 ++++++++++++++++++++ boards/um_tinys3.json | 48 +++++++++++++++++++++ boards/watchy.json | 38 ++++++++++++++++ builder/main.py | 9 +++- examples/arduino-blink/platformio.ini | 11 ++++- platform.json | 8 +++- platform.py | 22 ++++++---- 20 files changed, 760 insertions(+), 17 deletions(-) create mode 100644 boards/adafruit_feather_esp32_v2.json create mode 100644 boards/adafruit_feather_esp32s3.json create mode 100644 boards/adafruit_qtpy_esp32.json create mode 100644 boards/adafruit_qtpy_esp32s3.json create mode 100644 boards/deneyapkart1A.json create mode 100644 boards/esp32-s3-devkitc-1.json create mode 100644 boards/esp32s3box.json create mode 100644 boards/esp32s3camlcd.json create mode 100644 boards/lolin_c3_mini.json create mode 100644 boards/lolin_s2_pico.json create mode 100644 boards/um_feathers3.json create mode 100644 boards/um_pros3.json create mode 100644 boards/um_rmp.json create mode 100644 boards/um_tinys3.json create mode 100644 boards/watchy.json diff --git a/boards/adafruit_feather_esp32_v2.json b/boards/adafruit_feather_esp32_v2.json new file mode 100644 index 0000000..a45636e --- /dev/null +++ b/boards/adafruit_feather_esp32_v2.json @@ -0,0 +1,42 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32_out.ld" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_ADAFRUIT_FEATHER_ESP32_V2", + "-DBOARD_HAS_PSRAM", + "-mfix-esp32-psram-cache-issue", + "-mfix-esp32-psram-cache-strategy=memw" + ], + "f_cpu": "240000000L", + "f_flash": "40000000L", + "flash_mode": "dio", + "mcu": "esp32", + "variant": "adafruit_feather_esp32_v2" + }, + "connectivity": [ + "wifi", + "bluetooth", + "ethernet", + "can" + ], + "debug": { + "openocd_board": "esp-wroom-32.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "Adafruit Feather ESP32 V2", + "upload": { + "flash_size": "8MB", + "maximum_ram_size": 327680, + "maximum_size": 8388608, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://www.adafruit.com/product/5400", + "vendor": "Adafruit" +} diff --git a/boards/adafruit_feather_esp32s3.json b/boards/adafruit_feather_esp32s3.json new file mode 100644 index 0000000..3d59068 --- /dev/null +++ b/boards/adafruit_feather_esp32s3.json @@ -0,0 +1,62 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32s3_out.ld" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_ADAFRUIT_FEATHER_ESP32S3_NOPSRAM", + "-DARDUINO_USB_CDC_ON_BOOT=1", + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "hwids": [ + [ + "0x239A", + "0x8113" + ], + [ + "0x239A", + "0x0113" + ], + [ + "0x239A", + "0x8114" + ] + ], + "mcu": "esp32s3", + "variant": "adafruit_feather_esp32s3_nopsram" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_target": "esp32s3.cfg" + }, + "frameworks": [ + "arduino" + ], + "name": "Adafruit Feather ESP32-S3 No PSRAM", + "upload": { + "arduino": { + "flash_extra_images": [ + [ + "0x410000", + "variants/adafruit_feather_esp32s3_nopsram/tinyuf2.bin" + ] + ] + }, + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://www.adafruit.com/product/5323", + "vendor": "Adafruit" +} diff --git a/boards/adafruit_qtpy_esp32.json b/boards/adafruit_qtpy_esp32.json new file mode 100644 index 0000000..39896da --- /dev/null +++ b/boards/adafruit_qtpy_esp32.json @@ -0,0 +1,42 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32_out.ld" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_ADAFRUIT_QTPY_ESP32_PICO", + "-DBOARD_HAS_PSRAM", + "-mfix-esp32-psram-cache-issue", + "-mfix-esp32-psram-cache-strategy=memw" + ], + "f_cpu": "240000000L", + "f_flash": "40000000L", + "flash_mode": "dio", + "mcu": "esp32", + "variant": "adafruit_qtpy_esp32" + }, + "connectivity": [ + "wifi", + "bluetooth", + "ethernet", + "can" + ], + "debug": { + "openocd_board": "esp-wroom-32.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "Adafruit QT Py ESP32", + "upload": { + "flash_size": "8MB", + "maximum_ram_size": 327680, + "maximum_size": 8388608, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://www.adafruit.com/product/5395", + "vendor": "Adafruit" +} diff --git a/boards/adafruit_qtpy_esp32s3.json b/boards/adafruit_qtpy_esp32s3.json new file mode 100644 index 0000000..e01498f --- /dev/null +++ b/boards/adafruit_qtpy_esp32s3.json @@ -0,0 +1,62 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32s3_out.ld" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_ADAFRUIT_QTPY_ESP32S3_NOPSRAM", + "-DARDUINO_USB_CDC_ON_BOOT=1", + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "hwids": [ + [ + "0x239A", + "0x8119" + ], + [ + "0x239A", + "0x0119" + ], + [ + "0x239A", + "0x811A" + ] + ], + "mcu": "esp32s3", + "variant": "adafruit_qtpy_esp32s3_nopsram" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_target": "esp32s3.cfg" + }, + "frameworks": [ + "arduino" + ], + "name": "Adafruit QT Py ESP32-S3 No PSRAM", + "upload": { + "arduino": { + "flash_extra_images": [ + [ + "0x410000", + "variants/adafruit_qtpy_esp32s3_nopsram/tinyuf2.bin" + ] + ] + }, + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://www.adafruit.com/product/5426", + "vendor": "Adafruit" +} diff --git a/boards/deneyapkart1A.json b/boards/deneyapkart1A.json new file mode 100644 index 0000000..4369508 --- /dev/null +++ b/boards/deneyapkart1A.json @@ -0,0 +1,41 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32_out.ld" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_DYDK1A", + "-DBOARD_HAS_PSRAM", + "-mfix-esp32-psram-cache-issue", + "-mfix-esp32-psram-cache-strategy=memw" + ], + "f_cpu": "240000000L", + "f_flash": "40000000L", + "flash_mode": "dio", + "mcu": "esp32", + "variant": "deneyapkart1A" + }, + "connectivity": [ + "wifi", + "bluetooth", + "ethernet" + ], + "debug": { + "openocd_board": "esp32-wrover.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "Deneyap Kart 1A", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://deneyapkart.org/magaza/urun-deneyap-kart.html", + "vendor": "Deneyap" +} diff --git a/boards/esp32-s3-devkitc-1.json b/boards/esp32-s3-devkitc-1.json new file mode 100644 index 0000000..abe8c41 --- /dev/null +++ b/boards/esp32-s3-devkitc-1.json @@ -0,0 +1,44 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32s3_out.ld" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_ESP32S3_DEV", + "-DARDUINO_USB_MODE=1", + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "dio", + "hwids": [ + [ + "0X303A", + "0x1001" + ] + ], + "mcu": "esp32s3", + "variant": "esp32s3" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_target": "esp32s3.cfg" + }, + "frameworks": [ + "arduino" + ], + "name": "Espressif ESP32-S3-DevKitC-1", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/user-guide-devkitc-1.html", + "vendor": "Espressif" +} diff --git a/boards/esp32s3box.json b/boards/esp32s3box.json new file mode 100644 index 0000000..6198d80 --- /dev/null +++ b/boards/esp32s3box.json @@ -0,0 +1,48 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32s3_out.ld", + "memory_type": "qspi_opi" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1", + "-DBOARD_HAS_PSRAM", + "-DARDUINO_ESP32_S3_BOX", + "-DARDUINO_USB_MODE=1", + "-DARDUINO_USB_CDC_ON_BOOT=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "hwids": [ + [ + "0X303A", + "0x1001" + ] + ], + "mcu": "esp32s3", + "variant": "esp32s3box" + }, + "connectivity": [ + "wifi", + "bluetooth" + ], + "debug": { + "openocd_target": "esp32s3.cfg" + }, + "frameworks": [ + "arduino" + ], + "name": "Espressif ESP32-S3-Box", + "upload": { + "flash_size": "16MB", + "maximum_ram_size": 327680, + "maximum_size": 16777216, + "require_upload_port": true, + "speed": 921600 + }, + "url": "https://www.adafruit.com/product/5290", + "vendor": "Espressif" +} diff --git a/boards/esp32s3camlcd.json b/boards/esp32s3camlcd.json new file mode 100644 index 0000000..c848c55 --- /dev/null +++ b/boards/esp32s3camlcd.json @@ -0,0 +1,48 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32_out.ld", + "memory_type": "opi_opi" + }, + "boot": "opi", + "core": "esp32", + "extra_flags": [ + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1", + "-DBOARD_HAS_PSRAM", + "-DARDUINO_ESP32S3_CAM_LCD", + "-DARDUINO_USB_MODE=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "dout", + "hwids": [ + [ + "0X303A", + "0x1001" + ] + ], + "mcu": "esp32s3", + "variant": "esp32s3camlcd" + }, + "connectivity": [ + "wifi", + "bluetooth" + ], + "debug": { + "openocd_target": "esp32s3.cfg" + }, + "frameworks": [ + "arduino" + ], + "name": "Espressif ESP32-S3-Box", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 16777216, + "require_upload_port": true, + "speed": 921600 + }, + "url": "https://www.adafruit.com/product/5290", + "vendor": "Espressif" +} diff --git a/boards/lionbit.json b/boards/lionbit.json index 41e4cf6..c8186d0 100644 --- a/boards/lionbit.json +++ b/boards/lionbit.json @@ -4,13 +4,17 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ESP32_DEV", + "extra_flags": [ + "-DARDUINO_LIONBIT", + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1" + ], "f_cpu": "240000000L", "f_flash": "40000000L", "flash_mode": "dio", "flags" : "-DCORE_DEBUG_LEVEL=5", "mcu": "esp32", - "variant": "esp32" + "variant": "lionbit" }, "connectivity": [ "wifi", @@ -25,7 +29,7 @@ "arduino", "espidf" ], - "name": "LionBit", + "name": "Lion:Bit Dev Board", "upload": { "flash_size": "4MB", "maximum_ram_size": 327680, @@ -37,5 +41,5 @@ "speed" : 115200 }, "url": "http://lionbit.lk/", - "vendor": "Lion::Bit" + "vendor": "Lion:Bit" } diff --git a/boards/lolin_c3_mini.json b/boards/lolin_c3_mini.json new file mode 100644 index 0000000..7630446 --- /dev/null +++ b/boards/lolin_c3_mini.json @@ -0,0 +1,44 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32c3_out.ld" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_LOLIN_C3_MINI", + "-DARDUINO_USB_MODE=1", + "-DARDUINO_USB_CDC_ON_BOOT=1" + ], + "f_cpu": "160000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "hwids": [ + [ + "0X303A", + "0x1001" + ] + ], + "mcu": "esp32c3", + "variant": "esp32c3" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_target": "esp32c3.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "WEMOS LOLIN C3 Mini", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://www.wemos.cc/en/latest/c3/c3_mini.html", + "vendor": "WEMOS" +} diff --git a/boards/lolin_s2_pico.json b/boards/lolin_s2_pico.json new file mode 100644 index 0000000..dab2b7e --- /dev/null +++ b/boards/lolin_s2_pico.json @@ -0,0 +1,46 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32s2_out.ld" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_LOLIN_S2_PICO", + "-DBOARD_HAS_PSRAM", + "-DARDUINO_USB_CDC_ON_BOOT=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "dio", + "hwids": [ + [ + "0X303A", + "0x80C5" + ] + ], + "mcu": "esp32s2", + "variant": "lolin_s2_pico" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_board": "esp32s2.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "WEMOS LOLIN S2 PICO", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 921600 + }, + "url": "https://www.wemos.cc/en/latest/s2/s2_pico.html", + "vendor": "WEMOS" +} diff --git a/boards/um_feathers3.json b/boards/um_feathers3.json new file mode 100644 index 0000000..42d4828 --- /dev/null +++ b/boards/um_feathers3.json @@ -0,0 +1,56 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32s3_out.ld", + "partitions": "default_16MB.csv" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_FEATHERS3", + "-DBOARD_HAS_PSRAM", + "-DARDUINO_USB_CDC_ON_BOOT=1", + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "hwids": [ + [ + "0X303A", + "0x80D0" + ] + ], + "mcu": "esp32s3", + "variant": "um_feathers3" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_target": "esp32s3.cfg" + }, + "frameworks": [ + "arduino" + ], + "name": "Unexpected Maker FeatherS3", + "upload": { + "arduino": { + "flash_extra_images": [ + [ + "0x410000", + "variants/um_feathers3/tinyuf2.bin" + ] + ] + }, + "flash_size": "16MB", + "maximum_ram_size": 327680, + "maximum_size": 16777216, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://unexpectedmaker.com/shop/feathers3", + "vendor": "Unexpected Maker" +} diff --git a/boards/um_pros3.json b/boards/um_pros3.json new file mode 100644 index 0000000..130079f --- /dev/null +++ b/boards/um_pros3.json @@ -0,0 +1,48 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32s3_out.ld", + "partitions": "default_16MB.csv" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_PROS3", + "-DBOARD_HAS_PSRAM", + "-DARDUINO_USB_CDC_ON_BOOT=1", + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "hwids": [ + [ + "0X303A", + "0x80D0" + ] + ], + "mcu": "esp32s3", + "variant": "um_pros3" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_target": "esp32s3.cfg" + }, + "frameworks": [ + "arduino" + ], + "name": "Unexpected Maker PROS3", + "upload": { + "flash_size": "16MB", + "maximum_ram_size": 327680, + "maximum_size": 16777216, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://unexpectedmaker.com/shop/pros3", + "vendor": "Unexpected Maker" +} diff --git a/boards/um_rmp.json b/boards/um_rmp.json new file mode 100644 index 0000000..c5e547a --- /dev/null +++ b/boards/um_rmp.json @@ -0,0 +1,46 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32s2_out.ld" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_RMP", + "-DBOARD_HAS_PSRAM", + "-DARDUINO_USB_CDC_ON_BOOT=1" + ], + "f_cpu": "240000000L", + "f_flash": "40000000L", + "flash_mode": "dio", + "hwids": [ + [ + "0X303A", + "0x80F6" + ] + ], + "mcu": "esp32s2", + "variant": "um_rmp" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_target": "esp32s2.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "Unexpected Maker RMP", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 921600 + }, + "url": "https://unexpectedmaker.com/esp32s2", + "vendor": "Unexpected Maker" +} diff --git a/boards/um_tinys3.json b/boards/um_tinys3.json new file mode 100644 index 0000000..a700709 --- /dev/null +++ b/boards/um_tinys3.json @@ -0,0 +1,48 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32s3_out.ld", + "partitions": "default_8MB.csv" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_TINYS3", + "-DBOARD_HAS_PSRAM", + "-DARDUINO_USB_CDC_ON_BOOT=1", + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "hwids": [ + [ + "0X303A", + "0x80D0" + ] + ], + "mcu": "esp32s3", + "variant": "um_tinys3" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_target": "esp32s3.cfg" + }, + "frameworks": [ + "arduino" + ], + "name": "Unexpected Maker TinyS3", + "upload": { + "flash_size": "8MB", + "maximum_ram_size": 327680, + "maximum_size": 8388608, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://unexpectedmaker.com/shop/ttinys3-esp32s3", + "vendor": "Unexpected Maker" +} diff --git a/boards/watchy.json b/boards/watchy.json new file mode 100644 index 0000000..f91eed0 --- /dev/null +++ b/boards/watchy.json @@ -0,0 +1,38 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32_out.ld", + "partitions": "huge_app.csv" + }, + "core": "esp32", + "extra_flags": "-DARDUINO_WATCHY", + "f_cpu": "240000000L", + "f_flash": "40000000L", + "flash_mode": "dio", + "mcu": "esp32", + "variant": "watchy" + }, + "connectivity": [ + "wifi", + "bluetooth", + "ethernet", + "can" + ], + "debug": { + "openocd_board": "esp-wroom-32.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "SQFMI Watchy v2.0", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://watchy.sqfmi.com/", + "vendor": "SQFMI" +} diff --git a/builder/main.py b/builder/main.py index ffd9c60..a601414 100644 --- a/builder/main.py +++ b/builder/main.py @@ -57,6 +57,10 @@ def _get_board_flash_mode(env): return mode +def _get_board_boot_mode(env): + return env.BoardConfig().get("build.boot", "$BOARD_FLASH_MODE") + + def _parse_size(value): if isinstance(value, int): return value @@ -111,8 +115,8 @@ def _update_max_upload_size(env): if not env.get("PARTITIONS_TABLE_CSV"): return sizes = [ - _parse_size(p['size']) for p in _parse_partitions(env) - if p['type'] in ("0", "app") + _parse_size(p["size"]) for p in _parse_partitions(env) + if p["type"] in ("0", "app") ] if sizes: board.update("upload.maximum_size", max(sizes)) @@ -167,6 +171,7 @@ if mcu == "esp32c3": toolchain_arch = "riscv32-esp" env.Replace( + __get_board_boot_mode=_get_board_boot_mode, __get_board_f_flash=_get_board_f_flash, __get_board_flash_mode=_get_board_flash_mode, diff --git a/examples/arduino-blink/platformio.ini b/examples/arduino-blink/platformio.ini index 8ad7204..5f5db04 100644 --- a/examples/arduino-blink/platformio.ini +++ b/examples/arduino-blink/platformio.ini @@ -28,7 +28,14 @@ framework = arduino board = lolin32 monitor_speed = 115200 -[env:ttgo-lora32-v21] +[env:esp32-c3-devkitm-1] platform = espressif32 framework = arduino -board = ttgo-lora32-v21 +board = esp32-s3-devkitc-1 +monitor_speed = 115200 + +[env:esp32-s3-devkitc-1] +platform = espressif32 +framework = arduino +board = esp32-s3-devkitc-1 +monitor_speed = 115200 diff --git a/platform.json b/platform.json index cb48897..02b3217 100644 --- a/platform.json +++ b/platform.json @@ -43,6 +43,12 @@ "optional": true, "owner": "espressif", "version": "8.4.0+2021r2-patch3" + }, + "toolchain-xtensa-esp32s3": { + "type": "toolchain", + "optional": true, + "owner": "espressif", + "version": "8.4.0+2021r2-patch3" }, "toolchain-riscv32-esp": { "type": "toolchain", @@ -66,7 +72,7 @@ "type": "framework", "optional": true, "owner": "platformio", - "version": "~3.20002.0" + "version": "~3.20003.0" }, "framework-arduino-mbcwb": { "type": "framework", diff --git a/platform.py b/platform.py index a3b3bc7..8d50f15 100644 --- a/platform.py +++ b/platform.py @@ -95,13 +95,18 @@ class Espressif32Platform(PlatformBase): elif p in ("tool-mconf", "tool-idf") and "windows" in get_systype(): self.packages[p]["optional"] = False - if mcu in ("esp32s2", "esp32c3"): - self.packages.pop("toolchain-xtensa-esp32", None) + for available_mcu in ("esp32", "esp32s2", "esp32s3"): + if available_mcu == mcu: + self.packages["toolchain-xtensa-%s" % mcu]["optional"] = False + else: + self.packages.pop("toolchain-xtensa-%s" % available_mcu, None) + + if mcu in ("esp32s2", "esp32s3", "esp32c3"): self.packages.pop("toolchain-esp32ulp", None) - # RISC-V based toolchain for ESP32C3 and ESP32S2 ULP + if mcu != "esp32s2": + self.packages.pop("toolchain-esp32s2ulp", None) + # RISC-V based toolchain for ESP32C3, ESP32S2, ESP32S3 ULP self.packages["toolchain-riscv32-esp"]["optional"] = False - if mcu == "esp32s2": - self.packages["toolchain-xtensa-esp32s2"]["optional"] = False is_legacy_project = ( build_core == "mbcwb" @@ -113,6 +118,7 @@ class Espressif32Platform(PlatformBase): for toolchain in ( "toolchain-xtensa-esp32", "toolchain-xtensa-esp32s2", + "toolchain-xtensa-esp32s3", "toolchain-riscv32-esp", ): self.packages.pop(toolchain, None) @@ -163,6 +169,7 @@ class Espressif32Platform(PlatformBase): supported_debug_tools = [ "cmsis-dap", "esp-prog", + "esp_usb_jtag", "iot-bus-jtag", "jlink", "minimodule", @@ -189,9 +196,7 @@ class Espressif32Platform(PlatformBase): if link in non_debug_protocols or link in debug["tools"]: continue - if link == "jlink": - openocd_interface = link - elif link == "cmsis-dap": + if link in ("jlink", "cmsis-dap", "esp_usb_jtag"): openocd_interface = link elif link in ("esp-prog", "ftdi"): if board.id == "esp32-s2-kaluga-1": @@ -334,6 +339,7 @@ class Espressif32Platform(PlatformBase): toolchain_remap = { "xtensa-esp32-elf-gcc": "toolchain-xtensa-esp32", "xtensa-esp32s2-elf-gcc": "toolchain-xtensa-esp32s2", + "xtensa-esp32s3-elf-gcc": "toolchain-xtensa-esp32s3", "riscv32-esp-elf-gcc": "toolchain-riscv32-esp", } From df3172cb8969c2691e902577fe201603b7003219 Mon Sep 17 00:00:00 2001 From: Simone Date: Mon, 16 May 2022 12:44:44 +0200 Subject: [PATCH 07/15] Add support for Trueverit ESP32 Universal IoT Driver MK III (#779) --- boards/trueverit-iot-driver-mk3.json | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 boards/trueverit-iot-driver-mk3.json diff --git a/boards/trueverit-iot-driver-mk3.json b/boards/trueverit-iot-driver-mk3.json new file mode 100644 index 0000000..c74f960 --- /dev/null +++ b/boards/trueverit-iot-driver-mk3.json @@ -0,0 +1,38 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32_out.ld" + }, + "core": "esp32", + "extra_flags": "-DARDUINO_Trueverit_ESP32_Universal_IoT_Driver_MK_III", + "f_cpu": "240000000L", + "f_flash": "40000000L", + "flash_mode": "dio", + "mcu": "esp32", + "variant": "esp32-trueverit-iot-driver-mkiii" + }, + "connectivity": [ + "wifi", + "bluetooth", + "ethernet", + "can" + ], + "debug": { + "openocd_board": "esp-wroom-32.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "Trueverit ESP32 Universal IoT Driver MK III", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://trueverit.com/", + "vendor": "Trueverit" +} + From 0ecc76c594dffa2aa84ba58e754fff0e69b0d1d5 Mon Sep 17 00:00:00 2001 From: Yuval Brik Date: Mon, 16 May 2022 13:51:12 +0300 Subject: [PATCH 08/15] Add Lolin S2 Mini board (#736) Resolves #722 --- boards/lolin_s2_mini.json | 46 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 boards/lolin_s2_mini.json diff --git a/boards/lolin_s2_mini.json b/boards/lolin_s2_mini.json new file mode 100644 index 0000000..3fe4f71 --- /dev/null +++ b/boards/lolin_s2_mini.json @@ -0,0 +1,46 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32s2_out.ld" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_LOLIN_S2_MINI", + "-DBOARD_HAS_PSRAM", + "-DARDUINO_USB_CDC_ON_BOOT=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "dio", + "hwids": [ + [ + "0X303A", + "0x80C2" + ] + ], + "mcu": "esp32s2", + "variant": "lolin_s2_mini" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_board": "esp32s2.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "WEMOS LOLIN S2 Mini", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 921600 + }, + "url": "https://www.wemos.cc/en/latest/s2/s2_mini.html", + "vendor": "WEMOS" +} From b57ee8c82a1e1087dd8f033dc7b4b12b61762b02 Mon Sep 17 00:00:00 2001 From: Darren Cheng <1912544842@qq.com> Date: Mon, 16 May 2022 18:53:41 +0800 Subject: [PATCH 09/15] Add AirM2M CORE ESP32C3 board (#777) --- boards/airm2m_core_esp32c3.json | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 boards/airm2m_core_esp32c3.json diff --git a/boards/airm2m_core_esp32c3.json b/boards/airm2m_core_esp32c3.json new file mode 100644 index 0000000..e227fad --- /dev/null +++ b/boards/airm2m_core_esp32c3.json @@ -0,0 +1,37 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32c3_out.ld" + }, + "core": "esp32", + "f_cpu": "160000000L", + "f_flash": "80000000L", + "flash_mode": "dio", + "extra_flags": [ + "-DARDUINO_AirM2M_CORE_ESP32C3", + "-DARDUINO_USB_MODE=1" + ], + "mcu": "esp32c3", + "variant": "AirM2M_CORE_ESP32C3" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_target": "esp32c3.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "AirM2M CORE ESP32C3", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://wiki.luatos.com/chips/esp32c3/board.html", + "vendor": "AirM2M" +} From b829b80d6bcb47a9ba5ef9c0f65e9b68a26d6e66 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Mon, 16 May 2022 13:03:21 +0200 Subject: [PATCH 10/15] Add Adafruit QT Py ESP32-C3 (#776) --- boards/adafruit_qtpy_esp32c3.json | 44 +++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 boards/adafruit_qtpy_esp32c3.json diff --git a/boards/adafruit_qtpy_esp32c3.json b/boards/adafruit_qtpy_esp32c3.json new file mode 100644 index 0000000..335002d --- /dev/null +++ b/boards/adafruit_qtpy_esp32c3.json @@ -0,0 +1,44 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32c3_out.ld" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_ADAFRUIT_QTPY_ESP32C3", + "-DARDUINO_USB_MODE=1", + "-DARDUINO_USB_CDC_ON_BOOT=1" + ], + "f_cpu": "160000000L", + "f_flash": "80000000L", + "flash_mode": "dout", + "hwids": [ + [ + "0X303A", + "0x1001" + ] + ], + "mcu": "esp32c3", + "variant": "adafruit_qtpy_esp32c3" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_target": "esp32c3.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "Adafruit QT Py ESP32-C3", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://www.adafruit.com/product/5405", + "vendor": "Adafruit" +} From 9db444088389bf7956ac25700b1df70d13321427 Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Mon, 16 May 2022 14:08:17 +0300 Subject: [PATCH 11/15] Add default LED to Arduino blink example --- examples/arduino-blink/platformio.ini | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/examples/arduino-blink/platformio.ini b/examples/arduino-blink/platformio.ini index 5f5db04..adf7dd2 100644 --- a/examples/arduino-blink/platformio.ini +++ b/examples/arduino-blink/platformio.ini @@ -28,14 +28,18 @@ framework = arduino board = lolin32 monitor_speed = 115200 -[env:esp32-c3-devkitm-1] +[env:lolin_c3_mini] platform = espressif32 framework = arduino -board = esp32-s3-devkitc-1 +board = lolin_c3_mini monitor_speed = 115200 + [env:esp32-s3-devkitc-1] platform = espressif32 framework = arduino board = esp32-s3-devkitc-1 monitor_speed = 115200 +build_flags = + -D LED_BUILTIN=2 + From 6bddbbe14e08fa1b2c650d5f6cd08d58990b2486 Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Mon, 16 May 2022 19:45:57 +0300 Subject: [PATCH 12/15] Add default LED pin to Blink example --- examples/arduino-blink/platformio.ini | 3 --- examples/arduino-blink/src/Blink.cpp | 4 +++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/examples/arduino-blink/platformio.ini b/examples/arduino-blink/platformio.ini index adf7dd2..ef4c39e 100644 --- a/examples/arduino-blink/platformio.ini +++ b/examples/arduino-blink/platformio.ini @@ -40,6 +40,3 @@ platform = espressif32 framework = arduino board = esp32-s3-devkitc-1 monitor_speed = 115200 -build_flags = - -D LED_BUILTIN=2 - diff --git a/examples/arduino-blink/src/Blink.cpp b/examples/arduino-blink/src/Blink.cpp index 1b1c30f..5981d69 100644 --- a/examples/arduino-blink/src/Blink.cpp +++ b/examples/arduino-blink/src/Blink.cpp @@ -7,7 +7,9 @@ #include // Set LED_BUILTIN if it is not defined by Arduino framework -// #define LED_BUILTIN 2 +#ifndef LED_BUILTIN + #define LED_BUILTIN 2 +#endif void setup() { From 6f5b79f120526810e3483355a8a4b5c299a92919 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 17 May 2022 18:19:43 +1000 Subject: [PATCH 13/15] boards/um_feathers3: Don't flash tinyuf2.bin (#807) tinyuf2.bin should only be flashed along with the appropriate bootloader and partition scheme. In arduino IDE, these are only flashed when the tinyuf2 partition option is selected. --- boards/um_feathers3.json | 8 -------- 1 file changed, 8 deletions(-) diff --git a/boards/um_feathers3.json b/boards/um_feathers3.json index 42d4828..2be96cd 100644 --- a/boards/um_feathers3.json +++ b/boards/um_feathers3.json @@ -35,14 +35,6 @@ ], "name": "Unexpected Maker FeatherS3", "upload": { - "arduino": { - "flash_extra_images": [ - [ - "0x410000", - "variants/um_feathers3/tinyuf2.bin" - ] - ] - }, "flash_size": "16MB", "maximum_ram_size": 327680, "maximum_size": 16777216, From 611881ee566d2be90c49f920f6412e29c6c3716f Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Fri, 20 May 2022 13:08:08 +0300 Subject: [PATCH 14/15] Minor changes to ESP32S3 CAM LCD and ESP32-S2-Saola-1 manifests --- boards/esp32-s2-saola-1.json | 1 + boards/esp32s3camlcd.json | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/boards/esp32-s2-saola-1.json b/boards/esp32-s2-saola-1.json index 194c291..f264131 100644 --- a/boards/esp32-s2-saola-1.json +++ b/boards/esp32-s2-saola-1.json @@ -4,6 +4,7 @@ "ldscript": "esp32s2_out.ld" }, "core": "esp32", + "extra_flags": "-DARDUINO_ESP32S2_DEV", "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/boards/esp32s3camlcd.json b/boards/esp32s3camlcd.json index c848c55..372e89b 100644 --- a/boards/esp32s3camlcd.json +++ b/boards/esp32s3camlcd.json @@ -35,7 +35,7 @@ "frameworks": [ "arduino" ], - "name": "Espressif ESP32-S3-Box", + "name": "ESP32S3 CAM LCD", "upload": { "flash_size": "4MB", "maximum_ram_size": 327680, @@ -43,6 +43,6 @@ "require_upload_port": true, "speed": 921600 }, - "url": "https://www.adafruit.com/product/5290", + "url": "https://www.espressif.com/en/news/Maple_Eye_ESP32-S3", "vendor": "Espressif" } From c226fe663fdd80c82005fcf2d35f2c80b9924b28 Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Fri, 20 May 2022 13:55:15 +0300 Subject: [PATCH 15/15] Bump version to 4.3.0 --- platform.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform.json b/platform.json index 02b3217..7c5d11a 100644 --- a/platform.json +++ b/platform.json @@ -18,7 +18,7 @@ "type": "git", "url": "https://github.com/platformio/platform-espressif32.git" }, - "version": "4.2.0", + "version": "4.3.0", "frameworks": { "arduino": { "package": "framework-arduinoespressif32",