diff options
author | xengineering <me@xengineering.eu> | 2025-03-21 22:48:02 +0100 |
---|---|---|
committer | xengineering <me@xengineering.eu> | 2025-03-21 22:48:02 +0100 |
commit | a398f3b7420525b11c31dadf07b0cd696f1f6d3c (patch) | |
tree | 1715700740f9285b120bee8d3e8df7a53bc24efc | |
parent | 61238e93e2c5b3c672d3a55f6273bfd3615f05d7 (diff) | |
download | iot-contact-a398f3b7420525b11c31dadf07b0cd696f1f6d3c.tar iot-contact-a398f3b7420525b11c31dadf07b0cd696f1f6d3c.tar.zst iot-contact-a398f3b7420525b11c31dadf07b0cd696f1f6d3c.zip |
fw: Use MCUboot bootloader for nucleo_f767zi
Using it for the native_sim board is not trivial. Thus it is first only
added for the Nucleo board.
-rw-r--r-- | fw/CMakeLists.txt | 17 | ||||
-rw-r--r-- | fw/nucleo.conf | 5 | ||||
-rwxr-xr-x | fw/nucleo.sh | 29 | ||||
-rw-r--r-- | fw/zephyrproject/bootloader/bootloader.conf | 7 |
4 files changed, 52 insertions, 6 deletions
diff --git a/fw/CMakeLists.txt b/fw/CMakeLists.txt index 8d9591f..eff06f2 100644 --- a/fw/CMakeLists.txt +++ b/fw/CMakeLists.txt @@ -11,6 +11,23 @@ set(ZEPHYR_MODULES "${CMAKE_CURRENT_SOURCE_DIR}/zephyrproject/modules/crypto/mbedtls" "${CMAKE_CURRENT_SOURCE_DIR}/zephyrproject/bootloader/mcuboot" ) + +string(REPLACE ";" "," ZEPHYR_MODULES_COMMA "${ZEPHYR_MODULES}") +include(ExternalProject) +ExternalProject_Add( + bootloader + PREFIX bootloader + SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/zephyrproject/bootloader/mcuboot/boot/zephyr" + BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/bootloader" + INSTALL_COMMAND "" + LIST_SEPARATOR "," + CMAKE_ARGS + "-DBOARD=nucleo_f767zi" + "-DZEPHYR_MODULES=${ZEPHYR_MODULES_COMMA}" + "-DEXTRA_CONF_FILE=${CMAKE_CURRENT_SOURCE_DIR}/zephyrproject/bootloader/bootloader.conf" + -DCONFIG_BOOT_SIGNATURE_KEY_FILE="${KEY}" +) + find_package(Zephyr REQUIRED HINTS diff --git a/fw/nucleo.conf b/fw/nucleo.conf new file mode 100644 index 0000000..32e6d4a --- /dev/null +++ b/fw/nucleo.conf @@ -0,0 +1,5 @@ +# This Source Code Form is subject to the terms of the Mozilla Public License, +# v. 2.0. If a copy of the MPL was not distributed with this file, You can +# obtain one at https://mozilla.org/MPL/2.0/. + +CONFIG_BOOTLOADER_MCUBOOT=y diff --git a/fw/nucleo.sh b/fw/nucleo.sh index 24966b1..be694b8 100755 --- a/fw/nucleo.sh +++ b/fw/nucleo.sh @@ -23,24 +23,41 @@ SCRIPT="$(realpath "$0")" FW="$(dirname "$SCRIPT")" ROOT="$(dirname "$FW")" BUILD="${ROOT}/nucleo" -FIRMWARE="${BUILD}/fw/zephyr/zephyr.bin" -FLASH_ADDRESS='0x8000000' +BOOTLOADER_FIRMWARE="${BUILD}/fw/bootloader/zephyr/zephyr.bin" +APPLICATION_FIRMWARE="${BUILD}/fw/zephyr/zephyr.bin" +APPLICATION_FIRMWARE_SIGNED="${BUILD}/fw/zephyr/zephyr.signed.bin" +BOOTLOADER_FLASH_ADDRESS='0x8000000' +APPLICATION_FLASH_ADDRESS='0x8040000' +MCUBOOT="${ROOT}/fw/zephyrproject/bootloader/mcuboot" +IMGTOOL="${MCUBOOT}/scripts/imgtool.py" +KEY="${HOME}/mcuboot/key.pem" BOARD='nucleo_f767zi' +EXTRA_CONFIGS="${ROOT}/fw/nucleo.conf" BAUDRATE='115200' SERIAL_PORT='/dev/ttyACM0' CONFIG_OVERLAY="${FW}/my.conf" -overlay_config='' if test -f "$CONFIG_OVERLAY" then - overlay_config="-DEXTRA_CONF_FILE="${CONFIG_OVERLAY}"" + EXTRA_CONFIGS="${EXTRA_CONFIGS} ${CONFIG_OVERLAY}" fi set -x rm -rf "$BUILD" -cmake "-B${BUILD}" -GNinja -DBOARD="$BOARD" "$overlay_config" +cmake "-B${BUILD}" -GNinja -DBOARD="$BOARD" \ + -DEXTRA_CONF_FILE="${EXTRA_CONFIGS}" -DKEY="$KEY" ninja -C "$BUILD" -st-flash --connect-under-reset write "$FIRMWARE" "$FLASH_ADDRESS" +python "$IMGTOOL" sign \ + --version 0.0.0 \ + --header-size 0x200 \ + --slot-size 0xc0000 \ + --key "$KEY" \ + "$APPLICATION_FIRMWARE" \ + "$APPLICATION_FIRMWARE_SIGNED" +st-flash --connect-under-reset write "$BOOTLOADER_FIRMWARE" \ + "$BOOTLOADER_FLASH_ADDRESS" +st-flash --connect-under-reset write "$APPLICATION_FIRMWARE_SIGNED" \ + "$APPLICATION_FLASH_ADDRESS" picocom -b "$BAUDRATE" "$SERIAL_PORT" diff --git a/fw/zephyrproject/bootloader/bootloader.conf b/fw/zephyrproject/bootloader/bootloader.conf new file mode 100644 index 0000000..c42b7fc --- /dev/null +++ b/fw/zephyrproject/bootloader/bootloader.conf @@ -0,0 +1,7 @@ +# This Source Code Form is subject to the terms of the Mozilla Public License, +# v. 2.0. If a copy of the MPL was not distributed with this file, You can +# obtain one at https://mozilla.org/MPL/2.0/. + + +CONFIG_BOOT_MAX_IMG_SECTORS_AUTO=n +CONFIG_BOOT_SIGNATURE_TYPE_ED25519=y |