diff --git a/boards/esp32-c5-devkitc-1.json b/boards/esp32-c5-devkitc-1.json new file mode 100644 index 000000000..d54bd947c --- /dev/null +++ b/boards/esp32-c5-devkitc-1.json @@ -0,0 +1,32 @@ +{ + "build": { + "core": "esp32", + "f_cpu": "240000000L", + "f_flash": "40000000L", + "flash_mode": "qio", + "mcu": "esp32c5", + "variant": "esp32c5" + }, + "connectivity": [ + "wifi", + "bluetooth", + "ieee802154" + ], + "debug": { + "openocd_board": "esp32c5-builtin.cfg" + }, + "frameworks": [ + "espidf", + "arduino" + ], + "name": "Espressif ESP32-C5-DevKitC-1", + "upload": { + "flash_size": "8MB", + "maximum_ram_size": 393216, + "maximum_size": 8388608, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://www.espressif.com/en/products/socs/esp32-c5", + "vendor": "Espressif" +} \ No newline at end of file diff --git a/builder/frameworks/espidf.py b/builder/frameworks/espidf.py index 690a33021..f6b706f51 100644 --- a/builder/frameworks/espidf.py +++ b/builder/frameworks/espidf.py @@ -69,7 +69,7 @@ FRAMEWORK_DIR = platform.get_package_dir("framework-espidf") TOOLCHAIN_DIR = platform.get_package_dir( "toolchain-riscv32-esp" - if mcu in ("esp32c3", "esp32c6") + if mcu in ("esp32c3", "esp32c5", "esp32c6") else ( ( "toolchain-xtensa-esp-elf" @@ -262,7 +262,7 @@ def populate_idf_env_vars(idf_env): os.path.join(platform.get_package_dir("tool-cmake"), "bin"), os.path.dirname(get_python_exe()), ] - + if mcu not in ("esp32c3", "esp32c6"): additional_packages.append( os.path.join(platform.get_package_dir("toolchain-esp32ulp"), "bin"), @@ -531,7 +531,7 @@ def extract_linker_script_fragments_backup(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 ("esp32c3", "esp32c5", "esp32c6", "esp32h2"): result.append(os.path.join(framework_components_dir, "riscv", "linker.lf")) # Add extra linker fragments @@ -1905,12 +1905,21 @@ def generate_partition_table(partition_table_offset): # # Compile bootloader # +default_boot_offsets = { + "esp32": "0x1000", + "esp32s2": "0x1000", + "esp32s3": "0x0", + "esp32c3": "0x0", + "esp32c5": "0x2000", + "esp32c6": "0x0", + "esp32h2": "0x0", +} bootloader_offset = board.get( "upload.bootloader_offset", sdk_config.get( "BOOTLOADER_OFFSET_IN_FLASH", - ("0x0" if mcu in ("esp32c3", "esp32c6", "esp32s3") else "0x1000"), + default_boot_offsets.get(mcu, "0x1000"), ), ) diff --git a/builder/main.py b/builder/main.py index 415883d42..58ba5442c 100644 --- a/builder/main.py +++ b/builder/main.py @@ -236,7 +236,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 ("esp32c3", "esp32c5", "esp32c6", "esp32h2"): toolchain_arch = "riscv32-esp" if "INTEGRATION_EXTRA_DATA" not in env: @@ -257,7 +257,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 ("esp32c3", "esp32c5", "esp32c6", "esp32h2") else "tool-xtensa-esp-elf-gdb" ) or "", diff --git a/platform.json b/platform.json index 585d74fb7..8d80fe125 100644 --- a/platform.json +++ b/platform.json @@ -48,12 +48,12 @@ "version": "8.4.0+2021r2-patch5" }, "toolchain-riscv32-esp": { - "type": "toolchain", - "optional": true, - "owner": "espressif", - "version": "8.4.0+2021r2-patch5", - "optionalVersions": ["14.2.0+20241119"] - }, + "type": "toolchain", + "optional": true, + "owner": "espressif", + "version": "8.4.0+2021r2-patch5", + "optionalVersions": ["14.2.0+20241119"] + }, "toolchain-xtensa-esp-elf": { "type": "toolchain", "optional": true, diff --git a/platform.py b/platform.py index f71a4f7fb..2b9a27625 100644 --- a/platform.py +++ b/platform.py @@ -131,7 +131,7 @@ def configure_default_packages(self, variables, targets): ): self.packages.pop("toolchain-%s" % target, None) - if mcu in ("esp32c3", "esp32c6"): + if mcu in ("esp32c3", "esp32c5", "esp32c6"): self.packages.pop("toolchain-xtensa-esp-elf", None) else: self.packages["toolchain-xtensa-esp-elf"][ @@ -155,7 +155,7 @@ 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", "esp32c3", "esp32c5", "esp32c6"): # RISC-V based toolchain for ESP32C3, ESP32C6 ESP32S2, ESP32S3 ULP self.packages["toolchain-riscv32-esp"]["optional"] = False