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
This commit is contained in:
Jean-Michel Picod
2020-04-28 10:02:47 +02:00
parent dc12e10415
commit c9773e0f80
3 changed files with 20 additions and 7 deletions

View File

@@ -22,7 +22,7 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: | run: |
python -m pip install --upgrade pip setuptools wheel python -m pip install --upgrade pip setuptools wheel
pip install tockloader pylint pip install 'tockloader~=1.4' pylint
- name: Register matcher - name: Register matcher
run: echo ::add-matcher::./.github/python_matcher.json run: echo ::add-matcher::./.github/python_matcher.json
- name: Test code with pylint - name: Test code with pylint

View File

@@ -29,6 +29,7 @@ import sys
import colorama import colorama
from six.moves import input from six.moves import input
import tockloader
from tockloader import tab from tockloader import tab
from tockloader import tbfh from tockloader import tbfh
from tockloader import tockloader as loader from tockloader import tockloader as loader
@@ -252,12 +253,16 @@ class OpenSKInstaller:
board=self.args.board, board=self.args.board,
debug=False, debug=False,
force=False, force=False,
jlink_cmd="JLinkExe",
jlink=self.args.programmer == "jlink", jlink=self.args.programmer == "jlink",
jlink_device=board.jlink_device, jlink_device=board.jlink_device,
jlink_if=board.jlink_if, jlink_if=board.jlink_if,
jlink_speed=1200, jlink_speed=1200,
openocd=self.args.programmer == "openocd", openocd=self.args.programmer == "openocd",
openocd_board=board.openocd_board, openocd_board=board.openocd_board,
openocd_cmd="openocd",
openocd_commands=copy.copy(board.openocd_commands),
openocd_options=copy.copy(board.openocd_options),
jtag=False, jtag=False,
no_bootloader_entry=False, no_bootloader_entry=False,
page_size=board.page_size, page_size=board.page_size,
@@ -399,7 +404,7 @@ class OpenSKInstaller:
setattr(args, "make", False) setattr(args, "make", False)
setattr(args, "no_replace", False) setattr(args, "no_replace", False)
tock = loader.TockLoader(args) tock = loader.TockLoader(args)
tock.open(args) tock.open()
tabs = [tab.TAB(tab_filename)] tabs = [tab.TAB(tab_filename)]
try: try:
tock.install(tabs, replace="yes", erase=args.erase) tock.install(tabs, replace="yes", erase=args.erase)
@@ -428,7 +433,7 @@ class OpenSKInstaller:
args = copy.copy(self.tockloader_default_args) args = copy.copy(self.tockloader_default_args)
setattr(args, "address", board_props.app_address) setattr(args, "address", board_props.app_address)
tock = loader.TockLoader(args) tock = loader.TockLoader(args)
tock.open(args) tock.open()
try: try:
tock.flash_binary(kernel, board_props.kernel_address) tock.flash_binary(kernel, board_props.kernel_address)
except TockLoaderException as e: except TockLoaderException as e:
@@ -441,7 +446,7 @@ class OpenSKInstaller:
args = copy.copy(self.tockloader_default_args) args = copy.copy(self.tockloader_default_args)
setattr(args, "address", board_props.padding_address) setattr(args, "address", board_props.padding_address)
tock = loader.TockLoader(args) tock = loader.TockLoader(args)
tock.open(args) tock.open()
try: try:
tock.flash_binary(padding, args.address) tock.flash_binary(padding, args.address)
except TockLoaderException as e: except TockLoaderException as e:
@@ -451,11 +456,14 @@ class OpenSKInstaller:
args = copy.copy(self.tockloader_default_args) args = copy.copy(self.tockloader_default_args)
board_props = SUPPORTED_BOARDS[self.args.board] board_props = SUPPORTED_BOARDS[self.args.board]
setattr(args, "app_address", board_props.app_address) 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") info("Erasing all installed applications")
tock = loader.TockLoader(args) tock = loader.TockLoader(args)
tock.open(args) tock.open()
try: try:
tock.erase_apps(False) tock.erase_apps()
except TockLoaderException as e: except TockLoaderException as e:
# Erasing apps is not critical # Erasing apps is not critical
info(("A non-critical error occurred while erasing " info(("A non-critical error occurred while erasing "
@@ -467,6 +475,7 @@ class OpenSKInstaller:
return False return False
args = copy.copy(self.tockloader_default_args) args = copy.copy(self.tockloader_default_args)
tock = loader.TockLoader(args) tock = loader.TockLoader(args)
tock.open()
app_found = False app_found = False
with tock._start_communication_with_board(): with tock._start_communication_with_board():
apps = [app.name for app in tock._extract_all_app_headers()] apps = [app.name for app in tock._extract_all_app_headers()]
@@ -515,6 +524,10 @@ class OpenSKInstaller:
final_hex.tofile(dest_file, format="hex") final_hex.tofile(dest_file, format="hex")
def check_prerequisites(self): 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": if self.args.programmer == "jlink":
assert_mandatory_binary("JLinkExe") assert_mandatory_binary("JLinkExe")

View File

@@ -86,7 +86,7 @@ source tools/gen_key_materials.sh
generate_crypto_materials N generate_crypto_materials N
rustup install $(head -n 1 rust-toolchain) 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 rustup target add thumbv7em-none-eabi
# Install dependency to create applications. # Install dependency to create applications.