Пример #1
0
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
Пример #2
0
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)
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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)