Skip to content

Commit 32d50ab

Browse files
committed
Add preliminary support for ESP32-S2
1 parent d53f95b commit 32d50ab

File tree

3 files changed

+32
-15
lines changed

3 files changed

+32
-15
lines changed

builder/main.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -130,20 +130,21 @@ def __fetch_spiffs_size(target, source, env):
130130
env = DefaultEnvironment()
131131
platform = env.PioPlatform()
132132
board = env.BoardConfig()
133+
mcu = board.get("build.mcu", "esp32")
133134

134135
env.Replace(
135136
__get_board_f_flash=_get_board_f_flash,
136137
__get_board_flash_mode=_get_board_flash_mode,
137138

138-
AR="xtensa-esp32-elf-ar",
139-
AS="xtensa-esp32-elf-as",
140-
CC="xtensa-esp32-elf-gcc",
141-
CXX="xtensa-esp32-elf-g++",
142-
GDB="xtensa-esp32-elf-gdb",
139+
AR="xtensa-%s-elf-ar" % mcu,
140+
AS="xtensa-%s-elf-as" % mcu,
141+
CC="xtensa-%s-elf-gcc" % mcu,
142+
CXX="xtensa-%s-elf-g++" % mcu,
143+
GDB="xtensa-%s-elf-gdb" % mcu,
143144
OBJCOPY=join(
144145
platform.get_package_dir("tool-esptoolpy") or "", "esptool.py"),
145-
RANLIB="xtensa-esp32-elf-ranlib",
146-
SIZETOOL="xtensa-esp32-elf-size",
146+
RANLIB="xtensa-%s-elf-ranlib" % mcu,
147+
SIZETOOL="xtensa-%s-elf-size" % mcu,
147148

148149
ARFLAGS=["rc"],
149150

@@ -153,7 +154,7 @@ def __fetch_spiffs_size(target, source, env):
153154
SIZEPRINTCMD="$SIZETOOL -B -d $SOURCES",
154155

155156
ERASEFLAGS=[
156-
"--chip", "esp32",
157+
"--chip", mcu,
157158
"--port", '"$UPLOAD_PORT"'
158159
],
159160
ERASECMD='"$PYTHONEXE" "$OBJCOPY" $ERASEFLAGS erase_flash',
@@ -177,7 +178,7 @@ def __fetch_spiffs_size(target, source, env):
177178
ElfToBin=Builder(
178179
action=env.VerboseAction(" ".join([
179180
'"$PYTHONEXE" "$OBJCOPY"',
180-
"--chip", "esp32",
181+
"--chip", mcu,
181182
"elf2image",
182183
"--flash_mode", "$BOARD_FLASH_MODE",
183184
"--flash_freq", "${__get_board_f_flash(__env__)}",
@@ -293,7 +294,7 @@ def __fetch_spiffs_size(target, source, env):
293294
UPLOADER=join(
294295
platform.get_package_dir("tool-esptoolpy") or "", "esptool.py"),
295296
UPLOADERFLAGS=[
296-
"--chip", "esp32",
297+
"--chip", mcu,
297298
"--port", '"$UPLOAD_PORT"',
298299
"--baud", "$UPLOAD_SPEED",
299300
"--before", "default_reset",
@@ -311,7 +312,7 @@ def __fetch_spiffs_size(target, source, env):
311312
if "uploadfs" in COMMAND_LINE_TARGETS:
312313
env.Replace(
313314
UPLOADERFLAGS=[
314-
"--chip", "esp32",
315+
"--chip", mcu,
315316
"--port", '"$UPLOAD_PORT"',
316317
"--baud", "$UPLOAD_SPEED",
317318
"--before", "default_reset",

platform.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@
4242
"type": "toolchain",
4343
"version": "~2.50200.0"
4444
},
45+
"toolchain-xtensa32s2": {
46+
"type": "toolchain",
47+
"optional": true,
48+
"version": "~1.80200.0"
49+
},
4550
"toolchain-esp32ulp": {
4651
"type": "toolchain",
4752
"optional": true,

platform.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@
2121
class Espressif32Platform(PlatformBase):
2222

2323
def configure_default_packages(self, variables, targets):
24+
if not variables.get("board"):
25+
return PlatformBase.configure_default_packages(
26+
self, variables, targets)
27+
28+
board_config = self.board_config(variables.get("board"))
29+
mcu = variables.get("board_build.mcu", board_config.get(
30+
"build.mcu", "esp32"))
2431
if "buildfs" in targets:
2532
self.packages['tool-mkspiffs']['optional'] = False
2633
if variables.get("upload_protocol"):
@@ -29,15 +36,19 @@ def configure_default_packages(self, variables, targets):
2936
self.packages['toolchain-esp32ulp']['optional'] = False
3037
if "espidf" in variables.get("pioframework", []):
3138
for p in self.packages:
32-
if p in ("tool-cmake", "tool-ninja", "toolchain-esp32ulp"):
33-
self.packages[p]['optional'] = False
39+
if p in ("tool-cmake", "tool-ninja", "toolchain-%sulp" % mcu):
40+
self.packages[p]["optional"] = False
3441
elif p in ("tool-mconf", "tool-idf") and "windows" in get_systype():
3542
self.packages[p]['optional'] = False
3643
self.packages['toolchain-xtensa32']['version'] = "~2.80200.0"
44+
# ESP32-S2 toolchain is identical for both Arduino and ESP-IDF
45+
if mcu == "esp32s2":
46+
self.packages.pop("toolchain-xtensa32", None)
47+
self.packages['toolchain-xtensa32s2']['optional'] = False
48+
self.packages['tool-esptoolpy']['version'] = "~1.30000.0"
3749

3850
build_core = variables.get(
39-
"board_build.core", self.board_config(variables.get("board")).get(
40-
"build.core", "arduino")).lower()
51+
"board_build.core", board_config.get("build.core", "arduino")).lower()
4152
if build_core == "mbcwb":
4253
self.packages['framework-arduinoespressif32']['optional'] = True
4354
self.packages['framework-arduino-mbcwb']['optional'] = False

0 commit comments

Comments
 (0)