Skip to content

Commit

Permalink
Add support for esp32-h2 and esp32-c2
Browse files Browse the repository at this point in the history
  • Loading branch information
luar123 committed Mar 25, 2024
1 parent b0a7f56 commit 4731be5
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 23 deletions.
30 changes: 30 additions & 0 deletions boards/esp32-c2-devkitm-1.json
Original file line number Diff line number Diff line change
@@ -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"
}
40 changes: 40 additions & 0 deletions boards/esp32-h2-devkitm-1.json
Original file line number Diff line number Diff line change
@@ -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"
}
6 changes: 3 additions & 3 deletions builder/frameworks/_embed_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
10 changes: 5 additions & 5 deletions builder/frameworks/espidf.py
Original file line number Diff line number Diff line change
Expand Up @@ -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))
)


Expand Down Expand Up @@ -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"),
)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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"),
),
Expand Down Expand Up @@ -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")

#
Expand Down
4 changes: 2 additions & 2 deletions builder/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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 "",
Expand Down
17 changes: 6 additions & 11 deletions platform.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand All @@ -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",
Expand Down Expand Up @@ -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",
Expand Down
6 changes: 4 additions & 2 deletions platform.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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")
Expand Down

0 comments on commit 4731be5

Please sign in to comment.