From 4c68333548ab63c58d82522bef6e8e4290d47cfc Mon Sep 17 00:00:00 2001 From: Mehrdad Hessar Date: Mon, 22 Mar 2021 16:51:59 -0700 Subject: [PATCH 1/8] update nrfjprog and integration test --- apps/microtvm/reference-vm/base-box-tool.py | 48 +++++++++++++------ .../reference-vm/zephyr/base-box/setup.sh | 15 ++++-- .../zephyr/base-box/test-config.json | 16 +++++-- 3 files changed, 55 insertions(+), 24 deletions(-) diff --git a/apps/microtvm/reference-vm/base-box-tool.py b/apps/microtvm/reference-vm/base-box-tool.py index 0e82dc2e9c0e..598a666d07fa 100755 --- a/apps/microtvm/reference-vm/base-box-tool.py +++ b/apps/microtvm/reference-vm/base-box-tool.py @@ -42,6 +42,11 @@ "vmware_desktop", ) +# List of microTVM platforms for testing. +ALL_MICROTVM_PLATFORMS = ( + "stm32f746xx", + "nrf5340dk" +) def parse_virtualbox_devices(): output = subprocess.check_output(["VBoxManage", "list", "usbhost"], encoding="utf-8") @@ -109,6 +114,7 @@ def attach_virtualbox(uuid, vid_hex=None, pid_hex=None, serial=None): if serial is not None: rule_args.extend(["--serialnumber", serial]) subprocess.check_call(rule_args) + #TODO(mehrdadh): skip usb attach if it's already attached subprocess.check_call(["VBoxManage", "controlvm", uuid, "usbattach", dev["UUID"]]) return @@ -283,16 +289,17 @@ def do_build_release_test_vm(release_test_dir, user_box_dir, base_box_dir, provi def do_run_release_test(release_test_dir, provider_name, test_config, test_device_serial): - with open( - os.path.join(release_test_dir, ".vagrant", "machines", "default", provider_name, "id") - ) as f: - machine_uuid = f.read() - ATTACH_USB_DEVICE[provider_name]( - machine_uuid, - vid_hex=test_config["vid_hex"], - pid_hex=test_config["pid_hex"], - serial=test_device_serial, - ) + # with open( + # os.path.join(release_test_dir, ".vagrant", "machines", "default", provider_name, "id") + # ) as f: + # import pdb; pdb.set_trace() + # machine_uuid = f.read() + # ATTACH_USB_DEVICE[provider_name]( + # machine_uuid, + # vid_hex=test_config["vid_hex"], + # pid_hex=test_config["pid_hex"], + # serial=test_device_serial, + # ) tvm_home = os.path.realpath(os.path.join(THIS_DIR, "..", "..", "..")) def _quote_cmd(cmd): @@ -308,13 +315,17 @@ def test_command(args): test_config_file = os.path.join(base_box_dir, "test-config.json") with open(test_config_file) as f: test_config = json.load(f) + + # select microTVM test platform + microtvm_test_platform = test_config[args.microtvm_platform] + for key, expected_type in REQUIRED_TEST_CONFIG_KEYS.items(): - assert key in test_config and isinstance( - test_config[key], expected_type + assert key in microtvm_test_platform and isinstance( + microtvm_test_platform[key], expected_type ), f"Expected key {key} of type {expected_type} in {test_config_file}: {test_config!r}" - test_config["vid_hex"] = test_config["vid_hex"].lower() - test_config["pid_hex"] = test_config["pid_hex"].lower() + microtvm_test_platform["vid_hex"] = microtvm_test_platform["vid_hex"].lower() + microtvm_test_platform["pid_hex"] = microtvm_test_platform["pid_hex"].lower() providers = args.provider provider_passed = {p: False for p in providers} @@ -331,7 +342,7 @@ def test_command(args): release_test_dir, user_box_dir, base_box_dir, provider_name ) do_run_release_test( - release_test_dir, provider_name, test_config, args.test_device_serial + release_test_dir, provider_name, microtvm_test_platform, args.test_device_serial ) provider_passed[provider_name] = True @@ -444,6 +455,13 @@ def parse_args(): ), ) + parser.add_argument( + "--microtvm-platform", + default="stm32f746xx", + choices=ALL_MICROTVM_PLATFORMS, + help="For use with 'test' command. MicroTVM platfrom that are used for testing." + ) + return parser.parse_args() diff --git a/apps/microtvm/reference-vm/zephyr/base-box/setup.sh b/apps/microtvm/reference-vm/zephyr/base-box/setup.sh index 52af947c3e89..7299ceae6ad8 100644 --- a/apps/microtvm/reference-vm/zephyr/base-box/setup.sh +++ b/apps/microtvm/reference-vm/zephyr/base-box/setup.sh @@ -59,17 +59,22 @@ sudo apt install -y llvm sudo apt install -y protobuf-compiler libprotoc-dev # nrfjprog +NRF_COMMANDLINE_TOOLS_FILE=nRFCommandLineToolsLinuxamd64.tar.gz +NRF_COMMANDLINE_TOOLS_URL=https://www.nordicsemi.com/-/media/Software-and-other-downloads/Desktop-software/nRF-command-line-tools/sw/Versions-10-x-x/10-12-1/nRFCommandLineTools10121Linuxamd64.tar.gz +NRF_COMMANDLINE_TOOLS_INSTALLER=nRF-Command-Line-Tools_10_12_1_Linux-amd64.deb +JLINK_LINUX_INSTALLER=JLink_Linux_V688a_x86_64.deb + cd ~ mkdir -p nrfjprog -wget --no-verbose -O nRFCommandLineTools1090Linuxamd64.tar.gz https://www.nordicsemi.com/-/media/Software-and-other-downloads/Desktop-software/nRF-command-line-tools/sw/Versions-10-x-x/10-9-0/nRFCommandLineTools1090Linuxamd64tar.gz +wget --no-verbose -O $NRF_COMMANDLINE_TOOLS_FILE $NRF_COMMANDLINE_TOOLS_URL cd nrfjprog -tar -xzvf ../nRFCommandLineTools1090Linuxamd64.tar.gz -sudo apt install -y ./JLink_Linux_V680a_x86_64.deb -sudo apt install -y ./nRF-Command-Line-Tools_10_9_0_Linux-amd64.deb +tar -xzvf "../${NRF_COMMANDLINE_TOOLS_FILE}" +sudo apt install -y "./${JLINK_LINUX_INSTALLER}" +sudo apt install -y "./${NRF_COMMANDLINE_TOOLS_INSTALLER}" source ~/.profile nrfjprog --help cd .. -rm -rf nrfjprog nRFCommandLineTools1090Linuxamd64.tar.gz +rm -rf nrfjprog "${NRF_COMMANDLINE_TOOLS_FILE}" # Zephyr pip3 install --user -U west diff --git a/apps/microtvm/reference-vm/zephyr/base-box/test-config.json b/apps/microtvm/reference-vm/zephyr/base-box/test-config.json index 78a6bd216e65..426f5d6a9ba8 100644 --- a/apps/microtvm/reference-vm/zephyr/base-box/test-config.json +++ b/apps/microtvm/reference-vm/zephyr/base-box/test-config.json @@ -1,4 +1,12 @@ -{"vid_hex": "0483", - "pid_hex": "374b", - "test_cmd": ["pytest", "tests/micro/qemu/test_zephyr.py", "--microtvm-platforms=stm32f746xx"] -} +{ + "stm32f746xx": { + "vid_hex": "0483", + "pid_hex": "374b", + "test_cmd": ["pytest", "tests/micro/qemu/test_zephyr.py", "--microtvm-platforms=stm32f746xx"] + }, + "nrf5340dk": { + "vid_hex": "1366", + "pid_hex": "1055", + "test_cmd": ["pytest", "tests/micro/qemu/test_zephyr.py", "--microtvm-platforms=nrf5340dk"] + } +} \ No newline at end of file From 58d5d9187448e6580b6b780821eb2ea42ec34e8e Mon Sep 17 00:00:00 2001 From: Mehrdad Hessar Date: Mon, 22 Mar 2021 17:00:40 -0700 Subject: [PATCH 2/8] merge --- 3rdparty/dmlc-core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/dmlc-core b/3rdparty/dmlc-core index 21cc7de0dc9f..6c401e242c59 160000 --- a/3rdparty/dmlc-core +++ b/3rdparty/dmlc-core @@ -1 +1 @@ -Subproject commit 21cc7de0dc9fd6acb796e1be6181fa8e6b6c8f41 +Subproject commit 6c401e242c59a1f4c913918246591bb13fd714e7 From 578093e90f6909009c98a6e46ab58a0050b43f52 Mon Sep 17 00:00:00 2001 From: Mehrdad Hessar Date: Mon, 22 Mar 2021 17:07:21 -0700 Subject: [PATCH 3/8] Revert "merge" This reverts commit 58d5d9187448e6580b6b780821eb2ea42ec34e8e. --- 3rdparty/dmlc-core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/dmlc-core b/3rdparty/dmlc-core index 6c401e242c59..21cc7de0dc9f 160000 --- a/3rdparty/dmlc-core +++ b/3rdparty/dmlc-core @@ -1 +1 @@ -Subproject commit 6c401e242c59a1f4c913918246591bb13fd714e7 +Subproject commit 21cc7de0dc9fd6acb796e1be6181fa8e6b6c8f41 From a47a91f9b6e58c47afd91e8042bd7b0f34773509 Mon Sep 17 00:00:00 2001 From: Mehrdad Hessar Date: Mon, 22 Mar 2021 17:32:59 -0700 Subject: [PATCH 4/8] fix comments --- apps/microtvm/reference-vm/base-box-tool.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/apps/microtvm/reference-vm/base-box-tool.py b/apps/microtvm/reference-vm/base-box-tool.py index 598a666d07fa..7492da8f25a0 100755 --- a/apps/microtvm/reference-vm/base-box-tool.py +++ b/apps/microtvm/reference-vm/base-box-tool.py @@ -289,17 +289,16 @@ def do_build_release_test_vm(release_test_dir, user_box_dir, base_box_dir, provi def do_run_release_test(release_test_dir, provider_name, test_config, test_device_serial): - # with open( - # os.path.join(release_test_dir, ".vagrant", "machines", "default", provider_name, "id") - # ) as f: - # import pdb; pdb.set_trace() - # machine_uuid = f.read() - # ATTACH_USB_DEVICE[provider_name]( - # machine_uuid, - # vid_hex=test_config["vid_hex"], - # pid_hex=test_config["pid_hex"], - # serial=test_device_serial, - # ) + with open( + os.path.join(release_test_dir, ".vagrant", "machines", "default", provider_name, "id") + ) as f: + machine_uuid = f.read() + ATTACH_USB_DEVICE[provider_name]( + machine_uuid, + vid_hex=test_config["vid_hex"], + pid_hex=test_config["pid_hex"], + serial=test_device_serial, + ) tvm_home = os.path.realpath(os.path.join(THIS_DIR, "..", "..", "..")) def _quote_cmd(cmd): From e056347df549b0e6a0dda346770bf52171b27b8b Mon Sep 17 00:00:00 2001 From: Mehrdad Hessar Date: Mon, 22 Mar 2021 18:21:46 -0700 Subject: [PATCH 5/8] fix clang --- apps/microtvm/reference-vm/base-box-tool.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) mode change 100755 => 100644 apps/microtvm/reference-vm/base-box-tool.py diff --git a/apps/microtvm/reference-vm/base-box-tool.py b/apps/microtvm/reference-vm/base-box-tool.py old mode 100755 new mode 100644 index 7492da8f25a0..733efb507ca4 --- a/apps/microtvm/reference-vm/base-box-tool.py +++ b/apps/microtvm/reference-vm/base-box-tool.py @@ -36,17 +36,10 @@ # List of vagrant providers supported by this tool -ALL_PROVIDERS = ( - "parallels", - "virtualbox", - "vmware_desktop", -) +ALL_PROVIDERS = ("parallels", "virtualbox", "vmware_desktop",) # List of microTVM platforms for testing. -ALL_MICROTVM_PLATFORMS = ( - "stm32f746xx", - "nrf5340dk" -) +ALL_MICROTVM_PLATFORMS = ("stm32f746xx", "nrf5340dk",) def parse_virtualbox_devices(): output = subprocess.check_output(["VBoxManage", "list", "usbhost"], encoding="utf-8") @@ -114,7 +107,7 @@ def attach_virtualbox(uuid, vid_hex=None, pid_hex=None, serial=None): if serial is not None: rule_args.extend(["--serialnumber", serial]) subprocess.check_call(rule_args) - #TODO(mehrdadh): skip usb attach if it's already attached + # TODO(mehrdadh): skip usb attach if it's already attached subprocess.check_call(["VBoxManage", "controlvm", uuid, "usbattach", dev["UUID"]]) return @@ -458,7 +451,7 @@ def parse_args(): "--microtvm-platform", default="stm32f746xx", choices=ALL_MICROTVM_PLATFORMS, - help="For use with 'test' command. MicroTVM platfrom that are used for testing." + help="For use with 'test' command. MicroTVM platfrom that are used for testing.", ) return parser.parse_args() From b9c6bc14cb8bd9fe787ed3103bd36870a3ffd10e Mon Sep 17 00:00:00 2001 From: Mehrdad Hessar Date: Mon, 22 Mar 2021 18:50:04 -0700 Subject: [PATCH 6/8] revert format --- apps/microtvm/reference-vm/base-box-tool.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/microtvm/reference-vm/base-box-tool.py b/apps/microtvm/reference-vm/base-box-tool.py index 733efb507ca4..00ecb4e57d5c 100644 --- a/apps/microtvm/reference-vm/base-box-tool.py +++ b/apps/microtvm/reference-vm/base-box-tool.py @@ -36,10 +36,18 @@ # List of vagrant providers supported by this tool -ALL_PROVIDERS = ("parallels", "virtualbox", "vmware_desktop",) +ALL_PROVIDERS = ( + "parallels", + "virtualbox", + "vmware_desktop", +) # List of microTVM platforms for testing. -ALL_MICROTVM_PLATFORMS = ("stm32f746xx", "nrf5340dk",) +ALL_MICROTVM_PLATFORMS = ( + "stm32f746xx", + "nrf5340dk", +) + def parse_virtualbox_devices(): output = subprocess.check_output(["VBoxManage", "list", "usbhost"], encoding="utf-8") From bcbfa011730dac80b75746f05109c24563f2bcf9 Mon Sep 17 00:00:00 2001 From: Mehrdad Hessar Date: Mon, 22 Mar 2021 18:51:46 -0700 Subject: [PATCH 7/8] new line --- apps/microtvm/reference-vm/zephyr/base-box/test-config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/microtvm/reference-vm/zephyr/base-box/test-config.json b/apps/microtvm/reference-vm/zephyr/base-box/test-config.json index 426f5d6a9ba8..0d266797f04d 100644 --- a/apps/microtvm/reference-vm/zephyr/base-box/test-config.json +++ b/apps/microtvm/reference-vm/zephyr/base-box/test-config.json @@ -9,4 +9,4 @@ "pid_hex": "1055", "test_cmd": ["pytest", "tests/micro/qemu/test_zephyr.py", "--microtvm-platforms=nrf5340dk"] } -} \ No newline at end of file +} From 7ba7e591eac7f3c920217c036d75a3d48b28f7d4 Mon Sep 17 00:00:00 2001 From: Mehrdad Hessar Date: Mon, 22 Mar 2021 18:56:20 -0700 Subject: [PATCH 8/8] format --- apps/microtvm/reference-vm/base-box-tool.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/microtvm/reference-vm/base-box-tool.py b/apps/microtvm/reference-vm/base-box-tool.py index 00ecb4e57d5c..dbf05f016f67 100644 --- a/apps/microtvm/reference-vm/base-box-tool.py +++ b/apps/microtvm/reference-vm/base-box-tool.py @@ -44,7 +44,7 @@ # List of microTVM platforms for testing. ALL_MICROTVM_PLATFORMS = ( - "stm32f746xx", + "stm32f746xx", "nrf5340dk", )