From 0a38339b8e5167b48b79e6eed457fdadc5efa986 Mon Sep 17 00:00:00 2001 From: Guillaume Endignoux Date: Fri, 24 Apr 2020 11:20:12 +0200 Subject: [PATCH 1/5] Upgrade to Tock-1.5-rc2 --- third_party/tock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/tock b/third_party/tock index ba44dd6..f1f9d71 160000 --- a/third_party/tock +++ b/third_party/tock @@ -1 +1 @@ -Subproject commit ba44dd690f2db52ab9c928975f85c34c1c6f5bea +Subproject commit f1f9d717a4d9b5ae934a3b50ce6a18e6dff3e7c7 From 5ea58bc0183207f4632d9a2403d8720f9982a0ca Mon Sep 17 00:00:00 2001 From: Jean-Michel Picod Date: Fri, 24 Apr 2020 12:38:10 +0200 Subject: [PATCH 2/5] Fix style being used with yapf 0.30.0 --- .github/workflows/python.yml | 4 ++-- .vscode/settings.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index f6051a3..86f78da 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -39,8 +39,8 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip setuptools wheel - pip install yapf tockloader + pip install 'yapf>=0.30.0' tockloader - name: Test code formatting with yapf run: | echo ::add-matcher::./.github/python_matcher.json - yapf --style=chromium --recursive --exclude third_party --diff . + yapf --style=yapf --recursive --exclude third_party --diff . diff --git a/.vscode/settings.json b/.vscode/settings.json index 1666683..138097a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,7 +15,7 @@ // Try to make VSCode formating as close as possible to the Google style. "python.formatting.provider": "yapf", "python.formatting.yapfArgs": [ - "--style=chromium" + "--style=yapf" ], "python.linting.enabled": true, "python.linting.lintOnSave": true, From 7516badab0cfc514ee859089c8aed0a1082c7143 Mon Sep 17 00:00:00 2001 From: Jean-Michel Picod Date: Fri, 24 Apr 2020 12:45:58 +0200 Subject: [PATCH 3/5] Fix formating because of new style in yapf --- deploy.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy.py b/deploy.py index 486750d..639b70b 100755 --- a/deploy.py +++ b/deploy.py @@ -291,8 +291,8 @@ class OpenSKInstaller: # empty value. target_toolchain.append("") current_version = self.checked_command_output(["rustc", "--version"]) - if not all((target_toolchain[0] in current_version, - target_toolchain[1] in current_version)): + if not (target_toolchain[0] in current_version and + target_toolchain[1] in current_version): info("Updating rust toolchain to {}".format("-".join(target_toolchain))) # Need to update self.checked_command_output( From c9773e0f8077ebb13388111fcd8712c7bcec7be3 Mon Sep 17 00:00:00 2001 From: Jean-Michel Picod Date: Tue, 28 Apr 2020 10:02:47 +0200 Subject: [PATCH 4/5] Fix dependency on tockloader 1.4 Now that it has been released and pushed to pypi, make sure that tockloader is at least 1.4 version --- .github/workflows/python.yml | 2 +- deploy.py | 23 ++++++++++++++++++----- setup.sh | 2 +- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 86f78da..6df27d9 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -22,7 +22,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip setuptools wheel - pip install tockloader pylint + pip install 'tockloader~=1.4' pylint - name: Register matcher run: echo ::add-matcher::./.github/python_matcher.json - name: Test code with pylint diff --git a/deploy.py b/deploy.py index 6b552fa..a7d6f62 100755 --- a/deploy.py +++ b/deploy.py @@ -29,6 +29,7 @@ import sys import colorama from six.moves import input +import tockloader from tockloader import tab from tockloader import tbfh from tockloader import tockloader as loader @@ -252,12 +253,16 @@ class OpenSKInstaller: board=self.args.board, debug=False, force=False, + jlink_cmd="JLinkExe", jlink=self.args.programmer == "jlink", jlink_device=board.jlink_device, jlink_if=board.jlink_if, jlink_speed=1200, openocd=self.args.programmer == "openocd", openocd_board=board.openocd_board, + openocd_cmd="openocd", + openocd_commands=copy.copy(board.openocd_commands), + openocd_options=copy.copy(board.openocd_options), jtag=False, no_bootloader_entry=False, page_size=board.page_size, @@ -399,7 +404,7 @@ class OpenSKInstaller: setattr(args, "make", False) setattr(args, "no_replace", False) tock = loader.TockLoader(args) - tock.open(args) + tock.open() tabs = [tab.TAB(tab_filename)] try: tock.install(tabs, replace="yes", erase=args.erase) @@ -428,7 +433,7 @@ class OpenSKInstaller: args = copy.copy(self.tockloader_default_args) setattr(args, "address", board_props.app_address) tock = loader.TockLoader(args) - tock.open(args) + tock.open() try: tock.flash_binary(kernel, board_props.kernel_address) except TockLoaderException as e: @@ -441,7 +446,7 @@ class OpenSKInstaller: args = copy.copy(self.tockloader_default_args) setattr(args, "address", board_props.padding_address) tock = loader.TockLoader(args) - tock.open(args) + tock.open() try: tock.flash_binary(padding, args.address) except TockLoaderException as e: @@ -451,11 +456,14 @@ class OpenSKInstaller: args = copy.copy(self.tockloader_default_args) board_props = SUPPORTED_BOARDS[self.args.board] setattr(args, "app_address", board_props.app_address) + # Ensure we don't force erase all apps but only the apps starting + # at `board.app_address`. This makes sure we don't erase the padding. + setattr(args, "force", False) info("Erasing all installed applications") tock = loader.TockLoader(args) - tock.open(args) + tock.open() try: - tock.erase_apps(False) + tock.erase_apps() except TockLoaderException as e: # Erasing apps is not critical info(("A non-critical error occurred while erasing " @@ -467,6 +475,7 @@ class OpenSKInstaller: return False args = copy.copy(self.tockloader_default_args) tock = loader.TockLoader(args) + tock.open() app_found = False with tock._start_communication_with_board(): apps = [app.name for app in tock._extract_all_app_headers()] @@ -515,6 +524,10 @@ class OpenSKInstaller: final_hex.tofile(dest_file, format="hex") def check_prerequisites(self): + if not tockloader.__version__.startswith("1.4"): + fatal(("Your version of tockloader is too old: found {}, expected " + "1.4.0.".format(tockloader.__version__))) + if self.args.programmer == "jlink": assert_mandatory_binary("JLinkExe") diff --git a/setup.sh b/setup.sh index c4297ad..439003b 100755 --- a/setup.sh +++ b/setup.sh @@ -86,7 +86,7 @@ source tools/gen_key_materials.sh generate_crypto_materials N rustup install $(head -n 1 rust-toolchain) -pip3 install --user --upgrade tockloader six intelhex +pip3 install --user --upgrade 'tockloader~=1.4' six intelhex rustup target add thumbv7em-none-eabi # Install dependency to create applications. From a0601145eddfaa1afb1c51344633914b74674bef Mon Sep 17 00:00:00 2001 From: Jean-Michel Picod Date: Tue, 28 Apr 2020 10:05:16 +0200 Subject: [PATCH 5/5] More accurate error message regarding tockloader version. --- deploy.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy.py b/deploy.py index a7d6f62..bb1c056 100755 --- a/deploy.py +++ b/deploy.py @@ -524,9 +524,9 @@ class OpenSKInstaller: final_hex.tofile(dest_file, format="hex") def check_prerequisites(self): - if not tockloader.__version__.startswith("1.4"): - fatal(("Your version of tockloader is too old: found {}, expected " - "1.4.0.".format(tockloader.__version__))) + if not tockloader.__version__.startswith("1.4."): + fatal(("Your version of tockloader seems incompatible: found {}, " + "expected 1.4.x.".format(tockloader.__version__))) if self.args.programmer == "jlink": assert_mandatory_binary("JLinkExe")