From 4731be5b442a717930d784f7d3a8bb5eb5b1e493 Mon Sep 17 00:00:00 2001 From: raul Date: Mon, 25 Mar 2024 23:25:26 +0100 Subject: [PATCH] Add support for esp32-h2 and esp32-c2 --- boards/esp32-c2-devkitm-1.json | 30 ++++++++++++++++++++++ boards/esp32-h2-devkitm-1.json | 40 ++++++++++++++++++++++++++++++ builder/frameworks/_embed_files.py | 6 ++--- builder/frameworks/espidf.py | 10 ++++---- builder/main.py | 4 +-- platform.json | 17 +++++-------- platform.py | 6 +++-- 7 files changed, 90 insertions(+), 23 deletions(-) create mode 100644 boards/esp32-c2-devkitm-1.json create mode 100644 boards/esp32-h2-devkitm-1.json diff --git a/boards/esp32-c2-devkitm-1.json b/boards/esp32-c2-devkitm-1.json new file mode 100644 index 000000000..eb3a58c50 --- /dev/null +++ b/boards/esp32-c2-devkitm-1.json @@ -0,0 +1,30 @@ +{ + "build": { + "core": "esp32", + "f_cpu": "120000000L", + "f_flash": "60000000L", + "flash_mode": "qio", + "mcu": "esp32c2", + "variant": "esp32c2" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_target": "esp32c2.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "Espressif ESP32-C2-DevKitM-1", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 278528, + "maximum_size": 4194304, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp8684/esp8684-devkitm-1/user_guide.html", + "vendor": "Espressif" +} diff --git a/boards/esp32-h2-devkitm-1.json b/boards/esp32-h2-devkitm-1.json new file mode 100644 index 000000000..37de01a75 --- /dev/null +++ b/boards/esp32-h2-devkitm-1.json @@ -0,0 +1,40 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32h2_out.ld" + }, + "core": "esp32", + "f_cpu": "96000000L", + "f_flash": "48000000L", + "f_image": "48000000L", + "flash_mode": "qio", + "mcu": "esp32h2", + "variant": "esp32h2", + "hwids": [ + [ + "0x303A", + "0x1001" + ] + ] + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_target": "esp32h2.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "Espressif ESP32-H2-DevKit", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32h2/esp32-h2-devkitm-1/index.html", + "vendor": "Espressif" +} diff --git a/builder/frameworks/_embed_files.py b/builder/frameworks/_embed_files.py index c89dc4338..a4bafebd2 100644 --- a/builder/frameworks/_embed_files.py +++ b/builder/frameworks/_embed_files.py @@ -110,14 +110,14 @@ def transform_to_asm(target, source, env): " ".join( [ "riscv32-esp-elf-objcopy" - if mcu in ("esp32c3", "esp32c6") + if mcu in ("esp32c2", "esp32c3", "esp32c6", "esp32h2") else "xtensa-%s-elf-objcopy" % mcu, "--input-target", "binary", "--output-target", - "elf32-littleriscv" if mcu in ("esp32c3","esp32c6") else "elf32-xtensa-le", + "elf32-littleriscv" if mcu in ("esp32c2", "esp32c3", "esp32c6", "esp32h2") else "elf32-xtensa-le", "--binary-architecture", - "riscv" if mcu in ("esp32c3","esp32c6") else "xtensa", + "riscv" if mcu in ("esp32c2", "esp32c3", "esp32c6", "esp32h2") else "xtensa", "--rename-section", ".data=.rodata.embedded", "$SOURCE", diff --git a/builder/frameworks/espidf.py b/builder/frameworks/espidf.py index 98c95b622..35ebbe9eb 100644 --- a/builder/frameworks/espidf.py +++ b/builder/frameworks/espidf.py @@ -63,7 +63,7 @@ IDF_ENV_VERSION = "1.0.0" FRAMEWORK_DIR = platform.get_package_dir("framework-espidf") TOOLCHAIN_DIR = platform.get_package_dir( - "toolchain-%s" % ("riscv32-esp" if mcu in ("esp32c3", "esp32c6") else ("xtensa-%s" % mcu)) + "toolchain-%s" % ("riscv32-esp" if mcu in ("esp32c2", "esp32c3", "esp32c6", "esp32h2") else ("xtensa-%s" % mcu)) ) @@ -244,7 +244,7 @@ def populate_idf_env_vars(idf_env): os.path.dirname(get_python_exe()), ] - if mcu not in ("esp32c3", "esp32c6"): + if mcu not in ("esp32c2", "esp32c3", "esp32c6","esp32h2"): additional_packages.append( os.path.join(platform.get_package_dir("toolchain-esp32ulp"), "bin"), ) @@ -499,7 +499,7 @@ def extract_linker_script_fragments(framework_components_dir, sdk_config): sys.stderr.write("Error: Failed to extract paths to linker script fragments\n") env.Exit(1) - if mcu in ("esp32c3", "esp32c6"): + if mcu in ("esp32c2", "esp32c3", "esp32c6", "esp32h2"): result.append(os.path.join(framework_components_dir, "riscv", "linker.lf")) # Add extra linker fragments @@ -1517,7 +1517,7 @@ def _skip_prj_source_files(node): ( board.get( "upload.bootloader_offset", - "0x0" if mcu in ("esp32c3", "esp32c6", "esp32s3") else "0x1000", + "0x0" if mcu in ("esp32c2", "esp32c3", "esp32c6", "esp32s3", "esp32h2") else "0x1000", ), os.path.join("$BUILD_DIR", "bootloader.bin"), ), @@ -1628,7 +1628,7 @@ def _skip_prj_source_files(node): # ulp_dir = os.path.join(PROJECT_DIR, "ulp") -if os.path.isdir(ulp_dir) and os.listdir(ulp_dir) and mcu not in ("esp32c3", "esp32c6"): +if os.path.isdir(ulp_dir) and os.listdir(ulp_dir) and mcu not in ("esp32c2", "esp32c3", "esp32c6", "esp32h2"): env.SConscript("ulp.py", exports="env sdk_config project_config idf_variant") # diff --git a/builder/main.py b/builder/main.py index 1f493503a..c2c46881d 100644 --- a/builder/main.py +++ b/builder/main.py @@ -216,7 +216,7 @@ def __fetch_fs_size(target, source, env): mcu = board.get("build.mcu", "esp32") toolchain_arch = "xtensa-%s" % mcu filesystem = board.get("build.filesystem", "spiffs") -if mcu in ("esp32c3", "esp32c6"): +if mcu in ("esp32c2", "esp32c3", "esp32c6", "esp32h2"): toolchain_arch = "riscv32-esp" if "INTEGRATION_EXTRA_DATA" not in env: @@ -235,7 +235,7 @@ def __fetch_fs_size(target, source, env): GDB=join( platform.get_package_dir( "tool-riscv32-esp-elf-gdb" - if mcu in ("esp32c3", "esp32c6") + if mcu in ("esp32c2", "esp32c3", "esp32c6", "esp32h2") else "tool-xtensa-esp-elf-gdb" ) or "", diff --git a/platform.json b/platform.json index 55bf3e061..4dc268d30 100644 --- a/platform.json +++ b/platform.json @@ -16,7 +16,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/platformio/platform-espressif32.git" + "url": "https://github.com/luar123/platform-espressif32H2.git" }, "version": "6.5.0", "frameworks": { @@ -33,29 +33,25 @@ "toolchain-xtensa-esp32": { "type": "toolchain", "owner": "espressif", - "version": "8.4.0+2021r2-patch5", - "optionalVersions": ["12.2.0+20230208"] + "version": "12.2.0+20230208" }, "toolchain-xtensa-esp32s2": { "type": "toolchain", "optional": true, "owner": "espressif", - "version": "8.4.0+2021r2-patch5", - "optionalVersions": ["12.2.0+20230208"] + "version": "12.2.0+20230208" }, "toolchain-xtensa-esp32s3": { "type": "toolchain", "optional": true, "owner": "espressif", - "version": "8.4.0+2021r2-patch5", - "optionalVersions": ["12.2.0+20230208"] + "version": "12.2.0+20230208" }, "toolchain-riscv32-esp": { "type": "toolchain", "optional": true, "owner": "espressif", - "version": "8.4.0+2021r2-patch5", - "optionalVersions": ["12.2.0+20230208"] + "version": "12.2.0+20230208" }, "toolchain-esp32ulp": { "type": "toolchain", @@ -91,8 +87,7 @@ "type": "framework", "optional": true, "owner": "platformio", - "version": "~3.50102.0", - "optionalVersions": ["~3.40406.0"] + "version": "~3.50102.0" }, "tool-esptoolpy": { "type": "uploader", diff --git a/platform.py b/platform.py index 17cf2ec1d..f62719924 100644 --- a/platform.py +++ b/platform.py @@ -135,7 +135,9 @@ def configure_default_packages(self, variables, targets): else: self.packages.pop("toolchain-xtensa-%s" % available_mcu, None) - if mcu in ("esp32s2", "esp32s3", "esp32c3", "esp32c6"): + if mcu in ("esp32s2", "esp32s3", "esp32c2", "esp32c3", "esp32c6", "esp32h2"): + if mcu in ("esp32c2", "esp32c3", "esp32c6", "esp32h2"): + self.packages.pop("toolchain-esp32ulp", None) # RISC-V based toolchain for ESP32C3, ESP32C6 ESP32S2, ESP32S3 ULP self.packages["toolchain-riscv32-esp"]["optional"] = False @@ -203,7 +205,7 @@ def _add_dynamic_options(self, board): if board.id == "esp32-s2-kaluga-1": supported_debug_tools.append("ftdi") - if board.get("build.mcu", "") in ("esp32c3", "esp32c6", "esp32s3"): + if board.get("build.mcu", "") in ("esp32c3", "esp32c6", "esp32s3", "esp32h2"): supported_debug_tools.append("esp-builtin") upload_protocol = board.manifest.get("upload", {}).get("protocol")