diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 86f78da1c713ecbcace49e84046e7ba915936784..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 diff --git a/deploy.py b/deploy.py index 6b552faad1e6c6dd474bf0b924ec1da2e2fbb786..a7d6f62603a2a495d26b8b03a7123f05b8d643e5 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 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.