This is an automated email from the ASF dual-hosted git repository. mehrdadh pushed a commit to branch micro/fix_nrf_flash in repository https://gitbox.apache.org/repos/asf/tvm.git
commit 4370c4c0df205b4177bfedce60a0fce75eef95be Author: Mehrdad Hessar <mhes...@octoml.ai> AuthorDate: Fri Jan 6 16:42:51 2023 -0800 Fix --- .../zephyr/template_project/microtvm_api_server.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/apps/microtvm/zephyr/template_project/microtvm_api_server.py b/apps/microtvm/zephyr/template_project/microtvm_api_server.py index b0cd21e4ad..40768a2fd4 100644 --- a/apps/microtvm/zephyr/template_project/microtvm_api_server.py +++ b/apps/microtvm/zephyr/template_project/microtvm_api_server.py @@ -263,6 +263,10 @@ def _get_openocd_device_args(serial_number: str = None): def _get_nrf_device_args(serial_number: str = None): + # iSerial has string type which could mistmatch with + # the output of `nrfjprog --ids`. Example: 001050007848 vs 1050007848 + serial_number = str(int(serial_number)) + nrfjprog_args = ["nrfjprog", "--ids"] nrfjprog_ids = subprocess.check_output(nrfjprog_args, encoding="utf-8") if not nrfjprog_ids.strip("\n"): @@ -277,7 +281,7 @@ def _get_nrf_device_args(serial_number: str = None): if serial_number not in boards: raise BoardError( - f"serial number ({serial_number}) not found in {nrfjprog_args}: {boards}" + f"serial number ({serial_number}) not found in {boards}" ) return ["--snr", serial_number] @@ -714,23 +718,27 @@ class Handler(server.ProjectAPIHandler): if _find_platform_from_cmake_file(API_SERVER_DIR / CMAKELIST_FILENAME): return # NOTE: qemu requires no flash step--it is launched from open_transport. + flash_runner = _get_flash_runner() # The nRF5340DK requires an additional `nrfjprog --recover` before each flash cycle. # This is because readback protection is enabled by default when this device is flashed. # Otherwise, flashing may fail with an error such as the following: # ERROR: The operation attempted is unavailable due to readback protection in # ERROR: your device. Please use --recover to unlock the device. zephyr_board = _find_board_from_cmake_file(API_SERVER_DIR / CMAKELIST_FILENAME) - if zephyr_board.startswith("nrf5340dk") and _get_flash_runner() == "nrfjprog": - recover_args = ["nrfjprog", "--recover"] - recover_args.extend(_get_nrf_device_args(serial_number)) - check_call(recover_args, cwd=API_SERVER_DIR / "build") + # if zephyr_board.startswith("nrf5340dk") and flash_runner == "nrfjprog": + # recover_args = ["nrfjprog", "--recover"] + # recover_args.extend(_get_nrf_device_args(serial_number)) + # check_call(recover_args, cwd=API_SERVER_DIR / "build") flash_extra_args = [] - if _get_flash_runner() == "openocd" and serial_number: + if flash_runner == "openocd" and serial_number: flash_extra_args = ["--cmd-pre-init", f"""hla_serial {serial_number}"""] + if flash_runner == "nrfjprog": + flash_extra_args = _get_nrf_device_args(serial_number) + check_call( - west_cmd_list + ["flash", "-r", _get_flash_runner()] + flash_extra_args, + west_cmd_list + ["flash", "-r", flash_runner] + flash_extra_args, cwd=API_SERVER_DIR / "build", )