def open_mboot() -> McuBoot: """Open USB communication with RT5xx boot-loader :return: McuBoot instance :raises ConnectionError: if device not connected """ assert not TEST_IMG_CONTENT devs = [] for _ in range( 5 ): # try three times to find USB device (wait until shadows registers are ready) devs = scan_usb("RT5xx") if len(devs) == 1: break sleep(1) if len(devs) != 1: raise ConnectionError( "RT5xx not connected via USB, " "ensure BOOT CONFIG SW7 is ON,OFF,ON and connect USB cable via J38" ) mboot = McuBoot(devs[0], True) mboot.open() assert mboot.is_opened # test connection # blhost -u 0x1FC9,0x20 get-property 1 res = mboot.get_property(PropertyTag.CURRENT_VERSION) assert res is not None return mboot
def main() -> None: """Main function.""" with open(f'{DATA_DIR}/ivt_flashloader.bin', 'rb') as f: flash_loader_data = f.read() if run_flash_loader(0x20000000, 0x20000400, flash_loader_data): sleep(6) # wait for device startup print('flash-loader executed') # Scan for MCU-BOOT device devices = mboot.scan_usb() if not devices: print("Not founded MCU-BOOT device") sys.exit() try: with mboot.McuBoot(devices[0], True) as mb: mb.reopen = False # data = mb.read_memory(0, 500) property_list = mb.get_property_list() mb.reset() except mboot.McuBootError as e: print(str(e)) sys.exit() for prop in property_list: print(prop)
def device(target, config): if target == 'VIRTUAL': device = VirtualDevice(config=config) else: devs = scan_usb(target) if not devs: raise Exception(f'Device {target} not connected') device = devs[0] return device
def mboot_properties(name: str = None) -> Optional[list]: """Get McuBoot properties. :param name: Device name ('KL27Z', 'LPC55', ...), VID:PID ('0x15A2:0x0073') or None (any from known devices) :return: Interface object """ props = None devices = scan_usb(name) if devices: with McuBoot(devices[0]) as mb: props = mb.get_property_list() return props
def main() -> None: """Main function.""" # Input values kek_value = unhexlify('AC701E99BD3492E419B756EADC0985B3D3D0BC0FDB6B057AA88252204C2DA732') app_path = f'{DATA_DIR}/blinky.bin' # Device name ('KL27Z', 'LPC55', ...), VID:PID ('0x15A2:0x0073') or None (any from known devices) devices = scan_usb('LPC55') for device in devices: with McuBoot(device, True) as mb: mb.flash_erase_all() try: mb.receive_sb_file(build_sb(app_path, kek_value)) except McuBootCommandError as e: if e.error_value != StatusCode.ROMLDR_UNEXPECTED_COMMAND: raise mb.reset(reopen=False)