Files
MeshCore/scripts/nrf52_embedded_bootloader_pio.py
T

34 lines
1.6 KiB
Python

"""Explicit, build-local OTAFIX 2.4.12 bootloader resource hook."""
Import("env")
import os
from pathlib import Path
import sys
requested = os.environ.get("MESHCORE_NRF52_EMBED_BOOTLOADER")
legacy = os.environ.get("MESHCORE_NRF52_LEGACY_BOOTLOADER")
if legacy and not requested:
raise RuntimeError("legacy bootloader pin requires MESHCORE_NRF52_EMBED_BOOTLOADER=2.4.12")
if requested:
if requested != "2.4.12":
raise RuntimeError("only the pinned OTAFIX 2.4.12 embedded bootloader is supported")
project = Path(env["PROJECT_DIR"])
sys.path.insert(0, str(project / "scripts"))
from nrf52_embedded_bootloader import emit_resource
board = env.BoardConfig()
if str(board.get("build.mcu", "")).lower() != "nrf52840":
raise RuntimeError("embedded OTAFIX bootloader requires an nRF52840")
generated = Path(env.subst("$BUILD_DIR")) / "bootloader-migration-resource"
src_filter = env.get("SRC_FILTER")
if src_filter is None:
src_filter = env.GetProjectOption("build_src_filter", "")
metadata = emit_resource(project, env["PIOENV"], generated,
flags=env.get("BUILD_FLAGS", ()), cppdefines=env.get("CPPDEFINES", ()),
src_filter=src_filter,
linker=board.get("build.ldscript", "") or board.get("build.arduino.ldscript", ""),
legacy_path=legacy)
env.AppendUnique(CPPDEFINES=[("OTA_BOOTLOADER_MIGRATION", 1)], CPPPATH=[str(generated)])
env.BuildSources(str(generated / "objects"), str(generated), src_filter=["+<*.cpp>"])
print(f"Embedded OTAFIX {metadata['release']}: {metadata['profile']}; 40960 bytes; "
f"SHA256 {metadata['candidate_sha256']}")