diff --git a/builder/main.py b/builder/main.py index f8516c9..642fdb3 100644 --- a/builder/main.py +++ b/builder/main.py @@ -42,6 +42,23 @@ def BeforeUpload(target, source, env): env.Replace(UPLOAD_PORT=env.WaitForNewSerialPort(before_ports)) +def _get_board_memory_type(env): + board_config = env.BoardConfig() + default_type = "%s_%s" % ( + board_config.get("build.flash_mode", "dio"), + board_config.get("build.psram_type", "qspi"), + ) + + return board_config.get( + "build.memory_type", + board_config.get( + "build.%s.memory_type" + % env.subst("$PIOFRAMEWORK").strip().replace(" ", "_"), + default_type, + ), + ) + + def _get_board_f_flash(env): frequency = env.subst("$BOARD_F_FLASH") frequency = str(frequency).replace("L", "") @@ -49,10 +66,13 @@ def _get_board_f_flash(env): def _get_board_flash_mode(env): - memory_type = env.BoardConfig().get("build.arduino.memory_type", "qio_qspi") - mode = env.subst("$BOARD_FLASH_MODE") - if memory_type in ("opi_opi", "opi_qspi"): + if ["arduino"] == env.get("PIOFRAMEWORK") and _get_board_memory_type(env) in ( + "opi_opi", + "opi_qspi", + ): return "dout" + + mode = env.subst("$BOARD_FLASH_MODE") if mode in ("qio", "qout"): return "dio" return mode @@ -181,6 +201,7 @@ env.Replace( __get_board_boot_mode=_get_board_boot_mode, __get_board_f_flash=_get_board_f_flash, __get_board_flash_mode=_get_board_flash_mode, + __get_board_memory_type=_get_board_memory_type, AR="%s-elf-ar" % toolchain_arch, AS="%s-elf-as" % toolchain_arch,