diff --git a/flashing/flash_firmware.py b/flashing/flash_firmware.py new file mode 100644 index 0000000..ec79262 --- /dev/null +++ b/flashing/flash_firmware.py @@ -0,0 +1,42 @@ +import argparse + +from pathlib import Path + +from pyocd.core.helpers import ConnectHelper +from pyocd.core.target import Target +from pyocd.flash.file_programmer import FileProgrammer + +from mac_converter import MacConverter + +parser = argparse.ArgumentParser() +parser.add_argument("-a", "--all", action="store_true", help="Flash softdevice and firmware.") +parser.add_argument("--only-mac", action="store_true", help="Read only the mac address from controller.") +parser.add_argument("-s", "--softdevice", action="store", help="File path to softdevice file.", default="../sdk/s140nrf52720/s140_nrf52_7.2.0_softdevice.hex", type=Path) +parser.add_argument("-f", "--firmware", action="store", help="File path to firmware file.", default="../code/b-parasite/_build/nrf52840_xxaa.hex", type=Path) + +args = parser.parse_args() + +with ConnectHelper.session_with_chosen_probe() as session: + + board = session.board + target: Target = board.target + + if not args.only_mac: + if args.all: + softdevice_path: Path = args.softdevice + print(f"Flashing softdevice {softdevice_path.name}...") + FileProgrammer(session).program(str(softdevice_path)) + + target.reset_and_halt() + target.resume() + + firmware_path: Path = args.firmware + print(f"Flashing firmware {firmware_path.name}...") + FileProgrammer(session).program(str(firmware_path)) + + target.reset_and_halt() + target.resume() + + mac_converter = MacConverter(target) + mac_address = mac_converter.get_mac_address() + print(f'Device MAC Address: {mac_address}')