diff options
author | Tom Hughes <tomhughes@chromium.org> | 2022-09-21 14:10:01 -0700 |
---|---|---|
committer | Tom Hughes <tomhughes@chromium.org> | 2022-09-22 12:49:33 -0700 |
commit | 2bcf863b492fe7ed8105c853814dba6ed32ba719 (patch) | |
tree | fcf6ce5810f9ff9e3c8cce434812dd75492269ed /util/flash_jlink.py | |
parent | e5fb0b9ba488614b5684e640530f00821ab7b943 (diff) | |
parent | 28712dae9d7ed1e694f7622cc083afa71090d4d5 (diff) | |
download | chrome-ec-firmware-fpmcu-bloonchipper-release.tar.gz |
Merge remote-tracking branch cros/main into firmware-fpmcu-bloonchipper-releasefirmware-fpmcu-bloonchipper-release
Generated by: ./util/update_release_branch.py --board bloonchipper
--relevant_paths_file ./util/fingerprint-relevant-paths.txt firmware-
fpmcu-bloonchipper-release
Relevant changes:
git log --oneline e5fb0b9ba4..28712dae9d -- board/hatch_fp
board/bloonchipper common/fpsensor docs/fingerprint driver/fingerprint
util/getversion.sh
ded9307b79 util/getversion.sh: Fix version when not in a git repo
956055e692 board: change Google USB vendor info
71b2ef709d Update license boilerplate text in source code files
33e11afda0 Revert "fpsensor: Build fpsensor source file with C++"
c8d0360723 fpsensor: Build fpsensor source file with C++
bc113abd53 fpsensor: Fix g++ compiler error
150a58a0dc fpsensor: Fix fp_set_sensor_mode return type
b33b5ce85b fpsensor: Remove nested designators for C++ compatibility
2e864b2539 tree-wide: const-ify argv for console commands
56d8b360f9 test: Add test for get ikm failure when seed not set
3a3d6c3690 test: Add test for fpsensor trivial key failure
233e6bbd08 fpsensor_crypto: Abstract calls to hmac_SHA256
0a041b285b docs/fingerprint: Typo correction
c03fab67e2 docs/fingerprint: Fix the path of fputils.py
0b5d4baf5a util/getversion.sh: Fix empty file list handling
6e128fe760 FPMCU dev board environment with Satlab
3eb29b6aa5 builtin: Move ssize_t to sys/types.h
345d62ebd1 docs/fingerprint: Update power numbers for latest dartmonkey release
c25ffdb316 common: Conditionally support printf %l and %i modifiers
9a3c514b45 test: Add a test to check if the debugger is connected
54e603413f Move standard library tests to their own file
43fa6b4bf8 docs/fingerprint: Update power numbers for latest bloonchipper release
25536f9a84 driver/fingerprint/fpc/bep/fpc_sensor_spi.c: Format with clang-format
4face99efd driver/fingerprint/fpc/libfp/fpc_sensor_pal.h: Format with clang-format
738de2b575 trng: Rename rand to trng_rand
14b8270edd docs/fingerprint: Update dragonclaw power numbers
0b268f93d1 driver/fingerprint/fpc/libfp/fpc_private.c: Format with clang-format
f80da163f2 driver/fingerprint/fpc/libfp/fpc_private.h: Format with clang-format
5e9c85c9b1 driver/fingerprint/fpc/libfp/fpc_sensor_pal.c: Format with clang-format
c1f9dd3cf8 driver/fingerprint/fpc/libfp/fpc_bio_algorithm.h: Format with clang-format
eb1e1bed8d driver/fingerprint/fpc/libfp/fpc1145_private.h: Format with clang-format
6e7b611821 driver/fingerprint/fpc/bep/fpc_bio_algorithm.h: Format with clang-format
e0589cd5e2 driver/fingerprint/fpc/bep/fpc1035_private.h: Format with clang-format
7905e556a0 common/fpsensor/fpsensor_crypto.c: Format with clang-format
21289d170c driver/fingerprint/fpc/bep/fpc1025_private.h: Format with clang-format
98a20f937e common/fpsensor/fpsensor_state.c: Format with clang-format
a2d255d8af common/fpsensor/fpsensor.c: Format with clang-format
73055eeb3f driver/fingerprint/fpc/bep/fpc_private.c: Format with clang-format
0f7b5cb509 common/fpsensor/fpsensor_private.h: Format with clang-format
1ceade6e65 driver/fingerprint/fpc/bep/fpc_private.h: Format with clang-format
dc3e9008b8 board/hatch_fp/board.h: Format with clang-format
dca9d74321 Revert "trng: Rename rand to trng_rand"
a6b0b3554f trng: Rename rand to trng_rand
28d0b75b70 third_party/boringssl: Remove unused header
BRANCH=None
BUG=b:246424843 b:234181908 b:244781166 b:234181908 b:244387210
BUG=b:242720240 chromium:1098010 b:180945056 b:236025198 b:234181908
BUG=b:234181908 b:237344361 b:131913998 b:236386294 b:234143158
BUG=b:234781655 b:215613183 b:242720910
TEST=`make -j buildall`
TEST=./test/run_device_tests.py --board bloonchipper
Test "aes": PASSED
Test "cec": PASSED
Test "cortexm_fpu": PASSED
Test "crc": PASSED
Test "flash_physical": PASSED
Test "flash_write_protect": PASSED
Test "fpsensor_hw": PASSED
Test "fpsensor_spi_ro": PASSED
Test "fpsensor_spi_rw": PASSED
Test "fpsensor_uart_ro": PASSED
Test "fpsensor_uart_rw": PASSED
Test "mpu_ro": PASSED
Test "mpu_rw": PASSED
Test "mutex": PASSED
Test "pingpong": PASSED
Test "printf": PASSED
Test "queue": PASSED
Test "rollback_region0": PASSED
Test "rollback_region1": PASSED
Test "rollback_entropy": PASSED
Test "rtc": PASSED
Test "sha256": PASSED
Test "sha256_unrolled": PASSED
Test "static_if": PASSED
Test "stdlib": PASSED
Test "system_is_locked_wp_on": PASSED
Test "system_is_locked_wp_off": PASSED
Test "timer_dos": PASSED
Test "utils": PASSED
Test "utils_str": PASSED
Test "stm32f_rtc": PASSED
Test "panic_data_bloonchipper_v2.0.4277": PASSED
Test "panic_data_bloonchipper_v2.0.5938": PASSED
Force-Relevant-Builds: all
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: I264ad0ffe7afcd507a1e483c6e934a9c4fea47c3
Diffstat (limited to 'util/flash_jlink.py')
-rwxr-xr-x | util/flash_jlink.py | 148 |
1 files changed, 87 insertions, 61 deletions
diff --git a/util/flash_jlink.py b/util/flash_jlink.py index 26c3c2e709..dc462e354b 100755 --- a/util/flash_jlink.py +++ b/util/flash_jlink.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# Copyright 2020 The Chromium OS Authors. All rights reserved. +# Copyright 2020 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -25,7 +25,6 @@ import sys import tempfile import time - DEFAULT_SEGGER_REMOTE_PORT = 19020 # Commands are documented here: https://wiki.segger.com/J-Link_Commander @@ -41,27 +40,34 @@ exit class BoardConfig: """Board configuration.""" + def __init__(self, interface, device, flash_address): self.interface = interface self.device = device self.flash_address = flash_address -SWD_INTERFACE = 'SWD' -STM32_DEFAULT_FLASH_ADDRESS = '0x8000000' -DRAGONCLAW_CONFIG = BoardConfig(interface=SWD_INTERFACE, device='STM32F412CG', - flash_address=STM32_DEFAULT_FLASH_ADDRESS) -ICETOWER_CONFIG = BoardConfig(interface=SWD_INTERFACE, device='STM32H743ZI', - flash_address=STM32_DEFAULT_FLASH_ADDRESS) +SWD_INTERFACE = "SWD" +STM32_DEFAULT_FLASH_ADDRESS = "0x8000000" +DRAGONCLAW_CONFIG = BoardConfig( + interface=SWD_INTERFACE, + device="STM32F412CG", + flash_address=STM32_DEFAULT_FLASH_ADDRESS, +) +ICETOWER_CONFIG = BoardConfig( + interface=SWD_INTERFACE, + device="STM32H743ZI", + flash_address=STM32_DEFAULT_FLASH_ADDRESS, +) BOARD_CONFIGS = { - 'dragonclaw': DRAGONCLAW_CONFIG, - 'bloonchipper': DRAGONCLAW_CONFIG, - 'nucleo-f412zg': DRAGONCLAW_CONFIG, - 'dartmonkey': ICETOWER_CONFIG, - 'icetower': ICETOWER_CONFIG, - 'nucleo-dartmonkey': ICETOWER_CONFIG, - 'nucleo-h743zi': ICETOWER_CONFIG, + "dragonclaw": DRAGONCLAW_CONFIG, + "bloonchipper": DRAGONCLAW_CONFIG, + "nucleo-f412zg": DRAGONCLAW_CONFIG, + "dartmonkey": ICETOWER_CONFIG, + "icetower": ICETOWER_CONFIG, + "nucleo-dartmonkey": ICETOWER_CONFIG, + "nucleo-h743zi": ICETOWER_CONFIG, } @@ -93,9 +99,11 @@ def is_tcp_port_open(host: str, tcp_port: int) -> bool: def create_jlink_command_file(firmware_file, config): tmp = tempfile.NamedTemporaryFile() - tmp.write(JLINK_COMMANDS.format(FIRMWARE=firmware_file, - FLASH_ADDRESS=config.flash_address).encode( - 'utf-8')) + tmp.write( + JLINK_COMMANDS.format( + FIRMWARE=firmware_file, FLASH_ADDRESS=config.flash_address + ).encode("utf-8") + ) tmp.flush() return tmp @@ -106,8 +114,8 @@ def flash(jlink_exe, remote, device, interface, cmd_file): ] if remote: - logging.debug(f'Connecting to J-Link over TCP/IP {remote}.') - remote_components = remote.split(':') + logging.debug(f"Connecting to J-Link over TCP/IP {remote}.") + remote_components = remote.split(":") if len(remote_components) not in [1, 2]: logging.debug(f'Given remote "{remote}" is malformed.') return 1 @@ -118,7 +126,7 @@ def flash(jlink_exe, remote, device, interface, cmd_file): except socket.gaierror as e: logging.error(f'Failed to resolve host "{host}": {e}.') return 1 - logging.debug(f'Resolved {host} as {ip}.') + logging.debug(f"Resolved {host} as {ip}.") port = DEFAULT_SEGGER_REMOTE_PORT if len(remote_components) == 2: @@ -126,29 +134,40 @@ def flash(jlink_exe, remote, device, interface, cmd_file): port = int(remote_components[1]) except ValueError: logging.error( - f'Given remote port "{remote_components[1]}" is malformed.') + f'Given remote port "{remote_components[1]}" is malformed.' + ) return 1 - remote = f'{ip}:{port}' + remote = f"{ip}:{port}" - logging.debug(f'Checking connection to {remote}.') + logging.debug(f"Checking connection to {remote}.") if not is_tcp_port_open(ip, port): logging.error( - f"JLink server doesn't seem to be listening on {remote}.") - logging.error('Ensure that JLinkRemoteServerCLExe is running.') + f"JLink server doesn't seem to be listening on {remote}." + ) + logging.error("Ensure that JLinkRemoteServerCLExe is running.") return 1 - cmd.extend(['-ip', remote]) - - cmd.extend([ - '-device', device, - '-if', interface, - '-speed', 'auto', - '-autoconnect', '1', - '-CommandFile', cmd_file, - ]) - logging.debug('Running command: "%s"', ' '.join(cmd)) - completed_process = subprocess.run(cmd) # pylint: disable=subprocess-run-check - logging.debug('JLink return code: %d', completed_process.returncode) + cmd.extend(["-ip", remote]) + + cmd.extend( + [ + "-device", + device, + "-if", + interface, + "-speed", + "auto", + "-autoconnect", + "1", + "-CommandFile", + cmd_file, + ] + ) + logging.debug('Running command: "%s"', " ".join(cmd)) + completed_process = subprocess.run( + cmd + ) # pylint: disable=subprocess-run-check + logging.debug("JLink return code: %d", completed_process.returncode) return completed_process.returncode @@ -156,36 +175,42 @@ def main(argv: list): parser = argparse.ArgumentParser() - default_jlink = './JLink_Linux_V684a_x86_64/JLinkExe' + default_jlink = "./JLink_Linux_V684a_x86_64/JLinkExe" if shutil.which(default_jlink) is None: - default_jlink = 'JLinkExe' + default_jlink = "JLinkExe" parser.add_argument( - '--jlink', '-j', - help='JLinkExe path (default: ' + default_jlink + ')', - default=default_jlink) + "--jlink", + "-j", + help="JLinkExe path (default: " + default_jlink + ")", + default=default_jlink, + ) parser.add_argument( - '--remote', '-n', - help='Use TCP/IP host[:port] to connect to a J-Link or ' - 'JLinkRemoteServerCLExe. If unspecified, connect over USB.') + "--remote", + "-n", + help="Use TCP/IP host[:port] to connect to a J-Link or " + "JLinkRemoteServerCLExe. If unspecified, connect over USB.", + ) - default_board = 'bloonchipper' + default_board = "bloonchipper" parser.add_argument( - '--board', '-b', - help='Board (default: ' + default_board + ')', - default=default_board) + "--board", + "-b", + help="Board (default: " + default_board + ")", + default=default_board, + ) - default_firmware = os.path.join('./build', default_board, 'ec.bin') + default_firmware = os.path.join("./build", default_board, "ec.bin") parser.add_argument( - '--image', '-i', - help='Firmware binary (default: ' + default_firmware + ')', - default=default_firmware) + "--image", + "-i", + help="Firmware binary (default: " + default_firmware + ")", + default=default_firmware, + ) - log_level_choices = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] + log_level_choices = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] parser.add_argument( - '--log_level', '-l', - choices=log_level_choices, - default='DEBUG' + "--log_level", "-l", choices=log_level_choices, default="DEBUG" ) args = parser.parse_args(argv) @@ -201,11 +226,12 @@ def main(argv: list): args.jlink = args.jlink cmd_file = create_jlink_command_file(args.image, config) - ret_code = flash(args.jlink, args.remote, config.device, config.interface, - cmd_file.name) + ret_code = flash( + args.jlink, args.remote, config.device, config.interface, cmd_file.name + ) cmd_file.close() return ret_code -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(main(sys.argv[1:])) |