diff --git a/builder/main.py b/builder/main.py index 1f49350..67f1267 100644 --- a/builder/main.py +++ b/builder/main.py @@ -59,12 +59,24 @@ def _get_board_memory_type(env): ) -def _get_board_f_flash(env): - frequency = env.subst("$BOARD_F_FLASH") +def _normalize_frequency(frequency): frequency = str(frequency).replace("L", "") return str(int(int(frequency) / 1000000)) + "m" +def _get_board_f_flash(env): + frequency = env.subst("$BOARD_F_FLASH") + return _normalize_frequency(frequency) + + +def _get_board_f_image(env): + board_config = env.BoardConfig() + if "build.f_image" in board_config: + return _normalize_frequency(board_config.get("build.f_image")) + + return _get_board_f_flash(env) + + def _get_board_flash_mode(env): if ["arduino"] == env.get("PIOFRAMEWORK") and _get_board_memory_type(env) in ( "opi_opi", @@ -225,6 +237,7 @@ if "INTEGRATION_EXTRA_DATA" not in env: env.Replace( __get_board_boot_mode=_get_board_boot_mode, __get_board_f_flash=_get_board_f_flash, + __get_board_f_image=_get_board_f_image, __get_board_flash_mode=_get_board_flash_mode, __get_board_memory_type=_get_board_memory_type, @@ -296,7 +309,7 @@ env.Append( '"$PYTHONEXE" "$OBJCOPY"', "--chip", mcu, "elf2image", "--flash_mode", "${__get_board_flash_mode(__env__)}", - "--flash_freq", "${__get_board_f_flash(__env__)}", + "--flash_freq", "${__get_board_f_image(__env__)}", "--flash_size", board.get("upload.flash_size", "4MB"), "-o", "$TARGET", "$SOURCES" ]), "Building $TARGET"), @@ -432,7 +445,7 @@ elif upload_protocol == "esptool": "--after", board.get("upload.after_reset", "hard_reset"), "write_flash", "-z", "--flash_mode", "${__get_board_flash_mode(__env__)}", - "--flash_freq", "${__get_board_f_flash(__env__)}", + "--flash_freq", "${__get_board_f_image(__env__)}", "--flash_size", board.get("upload.flash_size", "detect") ], UPLOADCMD='"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS $ESP32_APP_OFFSET $SOURCE' @@ -450,7 +463,7 @@ elif upload_protocol == "esptool": "--after", board.get("upload.after_reset", "hard_reset"), "write_flash", "-z", "--flash_mode", "${__get_board_flash_mode(__env__)}", - "--flash_freq", "${__get_board_f_flash(__env__)}", + "--flash_freq", "${__get_board_f_image(__env__)}", "--flash_size", board.get("upload.flash_size", "detect"), "$FS_START" ],