diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index f6051a3e9fda0f7ddfa9208c89d51fa5b9309886..6df27d94ac810deee88791310b9038584f22e625 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 @@ -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 16666833b87006eea09cefb03bbb9a602a18b45e..138097a22a8cc2816c4ce20f07e79766ea0be980 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, diff --git a/deploy.py b/deploy.py index e9e599d967286bb319a7cc4acbe727fd770ef472..89921ca41cbff888f5f562e57a1a8ba0312d80c5 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, @@ -291,8 +296,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( @@ -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 seems incompatible: found {}, " + "expected 1.4.x.".format(tockloader.__version__))) + if self.args.programmer == "jlink": assert_mandatory_binary("JLinkExe") diff --git a/setup.sh b/setup.sh index c4297adc9ccae692ed06aa5e588285e7a1046129..439003b05d72e42d7f1ef4cd92fce609c665d07e 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. diff --git a/third_party/tock b/third_party/tock index ba44dd690f2db52ab9c928975f85c34c1c6f5bea..f1f9d717a4d9b5ae934a3b50ce6a18e6dff3e7c7 160000 --- a/third_party/tock +++ b/third_party/tock @@ -1 +1 @@ -Subproject commit ba44dd690f2db52ab9c928975f85c34c1c6f5bea +Subproject commit f1f9d717a4d9b5ae934a3b50ce6a18e6dff3e7c7