From 95e0a731cc4a21322610b8f3dbbf19cb9233ad35 Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Thu, 3 Aug 2023 15:50:34 +0300 Subject: [PATCH] Initial support for ESP32-C6-DevKitC-1 (#1054) Signed-off-by: Stijn Tintel --- boards/esp32-c6-devkitc-1.json | 25 ++++++++++++++++++++++ builder/frameworks/_embed_files.py | 6 +++--- builder/frameworks/espidf.py | 10 ++++----- builder/main.py | 2 +- examples/espidf-hello-world/platformio.ini | 3 +++ platform.py | 6 +++--- 6 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 boards/esp32-c6-devkitc-1.json diff --git a/boards/esp32-c6-devkitc-1.json b/boards/esp32-c6-devkitc-1.json new file mode 100644 index 0000000..6e90aee --- /dev/null +++ b/boards/esp32-c6-devkitc-1.json @@ -0,0 +1,25 @@ +{ + "build": { + "core": "esp32", + "f_cpu": "160000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "mcu": "esp32c6" + }, + "connectivity": [ + "wifi" + ], + "frameworks": [ + "espidf" + ], + "name": "Espressif ESP32-C6-DevKitC-1", + "upload": { + "flash_size": "8MB", + "maximum_ram_size": 524288, + "maximum_size": 8388608, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html", + "vendor": "Espressif" +} diff --git a/builder/frameworks/_embed_files.py b/builder/frameworks/_embed_files.py index 5469e3b..c89dc43 100644 --- a/builder/frameworks/_embed_files.py +++ b/builder/frameworks/_embed_files.py @@ -110,14 +110,14 @@ env.Append( " ".join( [ "riscv32-esp-elf-objcopy" - if mcu == "esp32c3" + if mcu in ("esp32c3", "esp32c6") else "xtensa-%s-elf-objcopy" % mcu, "--input-target", "binary", "--output-target", - "elf32-littleriscv" if mcu == "esp32c3" else "elf32-xtensa-le", + "elf32-littleriscv" if mcu in ("esp32c3","esp32c6") else "elf32-xtensa-le", "--binary-architecture", - "riscv" if mcu == "esp32c3" else "xtensa", + "riscv" if mcu in ("esp32c3","esp32c6") else "xtensa", "--rename-section", ".data=.rodata.embedded", "$SOURCE", diff --git a/builder/frameworks/espidf.py b/builder/frameworks/espidf.py index b627700..a273dce 100644 --- a/builder/frameworks/espidf.py +++ b/builder/frameworks/espidf.py @@ -62,7 +62,7 @@ IDF5 = platform.get_package_version("framework-espidf").split(".")[1].startswith 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 == "esp32c3" else ("xtensa-%s" % mcu)) + "toolchain-%s" % ("riscv32-esp" if mcu in ("esp32c3","esp32c6") else ("xtensa-%s" % mcu)) ) @@ -234,7 +234,7 @@ def populate_idf_env_vars(idf_env): os.path.dirname(get_python_exe()), ] - if mcu != "esp32c3": + if mcu not in ("esp32c3", "esp32c6"): additional_packages.append( os.path.join(platform.get_package_dir("toolchain-esp32ulp"), "bin"), ) @@ -489,7 +489,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 == "esp32c3": + if mcu in ("esp32c3", "esp32c6"): result.append(os.path.join(framework_components_dir, "riscv", "linker.lf")) # Add extra linker fragments @@ -1500,7 +1500,7 @@ env.Prepend( ( board.get( "upload.bootloader_offset", - "0x0" if mcu in ("esp32c3", "esp32s3") else "0x1000", + "0x0" if mcu in ("esp32c3", "esp32c6", "esp32s3") else "0x1000", ), os.path.join("$BUILD_DIR", "bootloader.bin"), ), @@ -1580,7 +1580,7 @@ env["BUILDERS"]["ElfToBin"].action = action # ulp_dir = os.path.join(PROJECT_DIR, "ulp") -if os.path.isdir(ulp_dir) and os.listdir(ulp_dir) and mcu != "esp32c3": +if os.path.isdir(ulp_dir) and os.listdir(ulp_dir) and mcu not in ("esp32c3", "esp32c6"): env.SConscript("ulp.py", exports="env sdk_config project_config idf_variant") # diff --git a/builder/main.py b/builder/main.py index c5579bf..0c97670 100644 --- a/builder/main.py +++ b/builder/main.py @@ -199,7 +199,7 @@ board = env.BoardConfig() mcu = board.get("build.mcu", "esp32") toolchain_arch = "xtensa-%s" % mcu filesystem = board.get("build.filesystem", "spiffs") -if mcu == "esp32c3": +if mcu in ("esp32c3", "esp32c6"): toolchain_arch = "riscv32-esp" if "INTEGRATION_EXTRA_DATA" not in env: diff --git a/examples/espidf-hello-world/platformio.ini b/examples/espidf-hello-world/platformio.ini index 226510e..8347b16 100644 --- a/examples/espidf-hello-world/platformio.ini +++ b/examples/espidf-hello-world/platformio.ini @@ -20,3 +20,6 @@ board = esp32-s2-kaluga-1 [env:esp32-c3-devkitm-1] board = esp32-c3-devkitm-1 + +[env:esp32-c6-devkitc-1] +board = esp32-c6-devkitc-1 diff --git a/platform.py b/platform.py index 6e43311..cc45624 100644 --- a/platform.py +++ b/platform.py @@ -119,8 +119,8 @@ class Espressif32Platform(PlatformBase): else: self.packages.pop("toolchain-xtensa-%s" % available_mcu, None) - if mcu in ("esp32s2", "esp32s3", "esp32c3"): - # RISC-V based toolchain for ESP32C3, ESP32S2, ESP32S3 ULP + if mcu in ("esp32s2", "esp32s3", "esp32c3", "esp32c6"): + # RISC-V based toolchain for ESP32C3, ESP32C6 ESP32S2, ESP32S3 ULP self.packages["toolchain-riscv32-esp"]["optional"] = False if build_core == "mbcwb": @@ -183,7 +183,7 @@ class Espressif32Platform(PlatformBase): "tumpa", ] - if board.get("build.mcu", "") in ("esp32c3", "esp32s3"): + if board.get("build.mcu", "") in ("esp32c3", "esp32c6", "esp32s3"): supported_debug_tools.append("esp-builtin") upload_protocol = board.manifest.get("upload", {}).get("protocol")