From f3125422dd921b5abfe716e17331a6418b2601a9 Mon Sep 17 00:00:00 2001 From: Yann Locatelli Date: Thu, 5 Jan 2023 14:43:02 +0100 Subject: [PATCH 1/6] :recycle: (bootloader): bootloader.hex destination as argument --- tools/firmware/build_bootloader.sh | 10 ++++++---- tools/firmware/build_firmware.sh | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/tools/firmware/build_bootloader.sh b/tools/firmware/build_bootloader.sh index 6518247600..00def318bd 100755 --- a/tools/firmware/build_bootloader.sh +++ b/tools/firmware/build_bootloader.sh @@ -2,10 +2,12 @@ # Variables BOOTLOADER_HEX_SOURCE="_build/LEKA_V1_2_DEV/app/bootloader/bootloader.hex" -BOOTLOADER_HEX_DEST="_tmp/bootloader.hex" +BOOTLOADER_HEX_DESTINATION="$1" -# Create dir -mkdir -p _tmp +if [ -z "$BOOTLOADER_HEX_DESTINATION" ]; then + echo "APPLICATION_HEX_SOURCE is unset" + exit 1 +fi # Compile bootloader make deep_clean @@ -13,4 +15,4 @@ make config make bootloader # Get bootloader binary -cp $BOOTLOADER_HEX_SOURCE $BOOTLOADER_HEX_DEST +cp $BOOTLOADER_HEX_SOURCE $BOOTLOADER_HEX_DESTINATION diff --git a/tools/firmware/build_firmware.sh b/tools/firmware/build_firmware.sh index b64060353f..4bb5b9a3fa 100755 --- a/tools/firmware/build_firmware.sh +++ b/tools/firmware/build_firmware.sh @@ -25,7 +25,7 @@ FIRMWARE_RELEASE="_release/firmware.bin" if [ "$RECOMPILE_BOOTLOADER" = "true" ]; then echo "Build bootloader" - ./tools/firmware/build_bootloader.sh + ./tools/firmware/build_bootloader.sh $BOOTLOADER_HEX fi; # Get application From 15bc0701db58ed54094f131946646af3bcc852c8 Mon Sep 17 00:00:00 2001 From: Yann Locatelli Date: Thu, 5 Jan 2023 14:36:23 +0100 Subject: [PATCH 2/6] :recycle: (os): Simplify use of build_os.sh Remove not relevant argument Rename variable APPLICATION_HEX Exit if argument is empty --- tools/firmware/build_firmware.sh | 8 +++----- tools/firmware/build_os.sh | 24 ++++++++++-------------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/tools/firmware/build_firmware.sh b/tools/firmware/build_firmware.sh index 4bb5b9a3fa..a6007941fd 100755 --- a/tools/firmware/build_firmware.sh +++ b/tools/firmware/build_firmware.sh @@ -14,9 +14,7 @@ do done BOOTLOADER_HEX="_tmp/bootloader.hex" - -APPLICATION_HEX_SOURCE="_build/LEKA_V1_2_DEV/app/os/LekaOS.hex" -APPLICATION_SIGNED_HEX="_tmp/application-signed.hex" +APPLICATION_HEX="_tmp/application-signed.hex" FIRMWARE_HEX="_release/firmware.hex" FIRMWARE_RELEASE="_release/firmware.bin" @@ -30,9 +28,9 @@ fi; # Get application echo "Build application" -./tools/firmware/build_os.sh $RECOMPILE_BOOTLOADER $APPLICATION_HEX_SOURCE $APPLICATION_VERSION $APPLICATION_SIGNED_HEX +./tools/firmware/build_os.sh $RECOMPILE_BOOTLOADER $APPLICATION_HEX $APPLICATION_VERSION # Merge bootloader and application echo "Merge bootloader & applications" -hexmerge.py -o $FIRMWARE_HEX --no-start-addr $BOOTLOADER_HEX $APPLICATION_SIGNED_HEX +hexmerge.py -o $FIRMWARE_HEX --no-start-addr $BOOTLOADER_HEX $APPLICATION_HEX arm-none-eabi-objcopy -I ihex -O binary $FIRMWARE_HEX $FIRMWARE_RELEASE diff --git a/tools/firmware/build_os.sh b/tools/firmware/build_os.sh index 9dc7018c20..286d961ba1 100755 --- a/tools/firmware/build_os.sh +++ b/tools/firmware/build_os.sh @@ -6,28 +6,24 @@ mkdir -p _release # Variables RECOMPILE_APPLICATIONS="$1" -APPLICATION_HEX_SOURCE="$2" +APPLICATION_HEX_SOURCE="_build/LEKA_V1_2_DEV/app/os/LekaOS.hex" +APPLICATION_HEX_DESTINATION="$2" + APPLICATION_VERSION="$3" APPLICATION_HEX="_tmp/application.hex" -APPLICATION_SIGNED_HEX="$4" +APPLICATION_SIGNED_HEX=$APPLICATION_HEX_DESTINATION APPLICATION_SIGNED_BIN="_release/application-signed.bin" -if [ -z "$APPLICATION_HEX_SOURCE" ]; then - echo "APPLICATION_HEX_SOURCE is unset" - APPLICATION_HEX_SOURCE="_build/LEKA_V1_2_DEV/app/os/LekaOS.hex" -fi - if [ -z "$APPLICATION_VERSION" ]; then echo "APPLICATION_VERSION is unset" - APPLICATION_VERSION="1.2.3+4" -else - epoch=$(date +%s) - APPLICATION_VERSION=$APPLICATION_VERSION+$epoch + exit 1 fi +epoch=$(date +%s) +APPLICATION_VERSION=$APPLICATION_VERSION+$epoch -if [ -z "$APPLICATION_SIGNED_HEX" ]; then - echo "APPLICATION_SIGNED_HEX is unset" - APPLICATION_SIGNED_HEX="_tmp/application-signed.hex" +if [ -z "$APPLICATION_HEX_DESTINATION" ]; then + echo "APPLICATION_HEX_DESTINATION is unset" + exit 1 fi # Compile applications From 7cc9a9027dde015951d4b62312e2ae47e2548267 Mon Sep 17 00:00:00 2001 From: Yann Locatelli Date: Thu, 5 Jan 2023 14:54:16 +0100 Subject: [PATCH 3/6] :recycle: (firmware): Rename variable + fix typo + add comment --- tools/firmware/build_firmware.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tools/firmware/build_firmware.sh b/tools/firmware/build_firmware.sh index a6007941fd..ebe6583d76 100755 --- a/tools/firmware/build_firmware.sh +++ b/tools/firmware/build_firmware.sh @@ -17,7 +17,7 @@ BOOTLOADER_HEX="_tmp/bootloader.hex" APPLICATION_HEX="_tmp/application-signed.hex" FIRMWARE_HEX="_release/firmware.hex" -FIRMWARE_RELEASE="_release/firmware.bin" +FIRMWARE_BIN="_release/firmware.bin" # Get bootloader if [ "$RECOMPILE_BOOTLOADER" = "true" ]; @@ -31,6 +31,8 @@ echo "Build application" ./tools/firmware/build_os.sh $RECOMPILE_BOOTLOADER $APPLICATION_HEX $APPLICATION_VERSION # Merge bootloader and application -echo "Merge bootloader & applications" +echo "Merge bootloader & application" hexmerge.py -o $FIRMWARE_HEX --no-start-addr $BOOTLOADER_HEX $APPLICATION_HEX -arm-none-eabi-objcopy -I ihex -O binary $FIRMWARE_HEX $FIRMWARE_RELEASE + +# Convert in binary +arm-none-eabi-objcopy -I ihex -O binary $FIRMWARE_HEX $FIRMWARE_BIN From c6119090db56be6a02999279f78de07bec7e04d0 Mon Sep 17 00:00:00 2001 From: Yann Locatelli Date: Thu, 5 Jan 2023 14:57:00 +0100 Subject: [PATCH 4/6] :recycle: (firmware): Set build number in version in firmware instead of os build --- tools/firmware/build_firmware.sh | 8 ++++++++ tools/firmware/build_os.sh | 2 -- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/firmware/build_firmware.sh b/tools/firmware/build_firmware.sh index ebe6583d76..b6c3773dcf 100755 --- a/tools/firmware/build_firmware.sh +++ b/tools/firmware/build_firmware.sh @@ -13,6 +13,14 @@ do esac done +if [ -z "$APPLICATION_VERSION" ]; then + echo "APPLICATION_VERSION is unset" + exit 1 +fi + +BUILD_NUMBER=$(date +%s) +APPLICATION_VERSION="$APPLICATION_VERSION+$BUILD_NUMBER" + BOOTLOADER_HEX="_tmp/bootloader.hex" APPLICATION_HEX="_tmp/application-signed.hex" diff --git a/tools/firmware/build_os.sh b/tools/firmware/build_os.sh index 286d961ba1..7857cc0ce2 100755 --- a/tools/firmware/build_os.sh +++ b/tools/firmware/build_os.sh @@ -18,8 +18,6 @@ if [ -z "$APPLICATION_VERSION" ]; then echo "APPLICATION_VERSION is unset" exit 1 fi -epoch=$(date +%s) -APPLICATION_VERSION=$APPLICATION_VERSION+$epoch if [ -z "$APPLICATION_HEX_DESTINATION" ]; then echo "APPLICATION_HEX_DESTINATION is unset" From 4c5814db83698192e0fd309e622aee733b7d6488 Mon Sep 17 00:00:00 2001 From: Yann Locatelli Date: Thu, 5 Jan 2023 15:00:21 +0100 Subject: [PATCH 5/6] :hammer: (firmware): Rename release files Release files contain version (major, minor, patch, build) --- .github/workflows/ci-create_release.yml | 4 ++-- tools/firmware/build_firmware.sh | 6 +++--- tools/firmware/build_os.sh | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci-create_release.yml b/.github/workflows/ci-create_release.yml index 1692c76a98..807d7960cb 100644 --- a/.github/workflows/ci-create_release.yml +++ b/.github/workflows/ci-create_release.yml @@ -70,5 +70,5 @@ jobs: name: bootloader_os_firmware retention-days: 7 path: | - _release/firmware.hex - _release/application-signed.bin + _release/Firmware-*.hex + _release/LekaOS-*.bin diff --git a/tools/firmware/build_firmware.sh b/tools/firmware/build_firmware.sh index b6c3773dcf..260ba835a0 100755 --- a/tools/firmware/build_firmware.sh +++ b/tools/firmware/build_firmware.sh @@ -22,10 +22,10 @@ BUILD_NUMBER=$(date +%s) APPLICATION_VERSION="$APPLICATION_VERSION+$BUILD_NUMBER" BOOTLOADER_HEX="_tmp/bootloader.hex" -APPLICATION_HEX="_tmp/application-signed.hex" +APPLICATION_HEX="_tmp/LekaOS-$APPLICATION_VERSION.hex" -FIRMWARE_HEX="_release/firmware.hex" -FIRMWARE_BIN="_release/firmware.bin" +FIRMWARE_HEX="_release/Firmware-$APPLICATION_VERSION.hex" +FIRMWARE_BIN="_release/Firmware-$APPLICATION_VERSION.bin" # Get bootloader if [ "$RECOMPILE_BOOTLOADER" = "true" ]; diff --git a/tools/firmware/build_os.sh b/tools/firmware/build_os.sh index 7857cc0ce2..e1f3e07326 100755 --- a/tools/firmware/build_os.sh +++ b/tools/firmware/build_os.sh @@ -10,9 +10,9 @@ APPLICATION_HEX_SOURCE="_build/LEKA_V1_2_DEV/app/os/LekaOS.hex" APPLICATION_HEX_DESTINATION="$2" APPLICATION_VERSION="$3" -APPLICATION_HEX="_tmp/application.hex" +APPLICATION_HEX="_tmp/LekaOS.hex" APPLICATION_SIGNED_HEX=$APPLICATION_HEX_DESTINATION -APPLICATION_SIGNED_BIN="_release/application-signed.bin" +APPLICATION_SIGNED_BIN="_release/LekaOS-$APPLICATION_VERSION.bin" if [ -z "$APPLICATION_VERSION" ]; then echo "APPLICATION_VERSION is unset" From 624a69ec2ab4cfb3f1feb245dc216511f6944718 Mon Sep 17 00:00:00 2001 From: Yann Locatelli Date: Fri, 6 Jan 2023 12:42:19 +0100 Subject: [PATCH 6/6] :recycle: (firmware): Rename application by application_os application_os: "application" is the term used by MCUBoot, "os" is the term used by Leka --- tools/firmware/build_application_os.sh | 45 ++++++++++++++++++++++++++ tools/firmware/build_firmware.sh | 28 ++++++++-------- tools/firmware/build_os.sh | 43 ------------------------ 3 files changed, 60 insertions(+), 56 deletions(-) create mode 100755 tools/firmware/build_application_os.sh delete mode 100755 tools/firmware/build_os.sh diff --git a/tools/firmware/build_application_os.sh b/tools/firmware/build_application_os.sh new file mode 100755 index 0000000000..da43f0ae41 --- /dev/null +++ b/tools/firmware/build_application_os.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# ? application_os: "application" is the term used by MCUBoot, "os" is the term used by Leka + +mkdir -p _tmp +mkdir -p _release + +# Variables +RECOMPILE_APPLICATION_OS="$1" + +APPLICATION_OS_HEX_SOURCE="_build/LEKA_V1_2_DEV/app/os/LekaOS.hex" +APPLICATION_OS_HEX_DESTINATION="$2" + +APPLICATION_OS_VERSION="$3" +APPLICATION_OS_HEX="_tmp/LekaOS.hex" +APPLICATION_OS_SIGNED_HEX=$APPLICATION_OS_HEX_DESTINATION +APPLICATION_OS_SIGNED_BIN="_release/LekaOS-$APPLICATION_OS_VERSION.bin" + +if [ -z "$APPLICATION_OS_VERSION" ]; then + echo "APPLICATION_OS_VERSION is unset" + exit 1 +fi + +if [ -z "$APPLICATION_OS_HEX_DESTINATION" ]; then + echo "APPLICATION_OS_HEX_DESTINATION is unset" + exit 1 +fi + +# Compile application_os +if [ "$RECOMPILE_APPLICATION_OS" = "true" ]; +then + make deep_clean + make config BUILD_TARGETS_TO_USE_WITH_BOOTLOADER=ON +fi; + +make + +# Get application_os binary +cp $APPLICATION_OS_HEX_SOURCE $APPLICATION_OS_HEX + +# Sign application_os with private key +imgtool sign -k signing-keys.pem --align 4 -v $APPLICATION_OS_VERSION --header-size 4096 --pad-header -S 0x180000 $APPLICATION_OS_HEX $APPLICATION_OS_SIGNED_HEX + +# Convert in binary +arm-none-eabi-objcopy -I ihex -O binary $APPLICATION_OS_SIGNED_HEX $APPLICATION_OS_SIGNED_BIN diff --git a/tools/firmware/build_firmware.sh b/tools/firmware/build_firmware.sh index 260ba835a0..c47103f611 100755 --- a/tools/firmware/build_firmware.sh +++ b/tools/firmware/build_firmware.sh @@ -1,5 +1,7 @@ #!/bin/bash +# ? application_os: "application" is the term used by MCUBoot, "os" is the term used by Leka + mkdir -p _tmp mkdir -p _release @@ -9,23 +11,23 @@ while getopts rv: flag do case "${flag}" in r) RECOMPILE_BOOTLOADER="true";; - v) APPLICATION_VERSION=$OPTARG;; + v) APPLICATION_OS_VERSION=$OPTARG;; esac done -if [ -z "$APPLICATION_VERSION" ]; then - echo "APPLICATION_VERSION is unset" +if [ -z "$APPLICATION_OS_VERSION" ]; then + echo "APPLICATION_OS_VERSION is unset" exit 1 fi BUILD_NUMBER=$(date +%s) -APPLICATION_VERSION="$APPLICATION_VERSION+$BUILD_NUMBER" +APPLICATION_OS_VERSION="$APPLICATION_OS_VERSION+$BUILD_NUMBER" BOOTLOADER_HEX="_tmp/bootloader.hex" -APPLICATION_HEX="_tmp/LekaOS-$APPLICATION_VERSION.hex" +APPLICATION_OS_HEX="_tmp/LekaOS-$APPLICATION_OS_VERSION.hex" -FIRMWARE_HEX="_release/Firmware-$APPLICATION_VERSION.hex" -FIRMWARE_BIN="_release/Firmware-$APPLICATION_VERSION.bin" +FIRMWARE_HEX="_release/Firmware-$APPLICATION_OS_VERSION.hex" +FIRMWARE_BIN="_release/Firmware-$APPLICATION_OS_VERSION.bin" # Get bootloader if [ "$RECOMPILE_BOOTLOADER" = "true" ]; @@ -34,13 +36,13 @@ then ./tools/firmware/build_bootloader.sh $BOOTLOADER_HEX fi; -# Get application -echo "Build application" -./tools/firmware/build_os.sh $RECOMPILE_BOOTLOADER $APPLICATION_HEX $APPLICATION_VERSION +# Get application_os +echo "Build application_os" +./tools/firmware/build_application_os.sh $RECOMPILE_BOOTLOADER $APPLICATION_OS_HEX $APPLICATION_OS_VERSION -# Merge bootloader and application -echo "Merge bootloader & application" -hexmerge.py -o $FIRMWARE_HEX --no-start-addr $BOOTLOADER_HEX $APPLICATION_HEX +# Merge bootloader and application_os +echo "Merge bootloader & application_os" +hexmerge.py -o $FIRMWARE_HEX --no-start-addr $BOOTLOADER_HEX $APPLICATION_OS_HEX # Convert in binary arm-none-eabi-objcopy -I ihex -O binary $FIRMWARE_HEX $FIRMWARE_BIN diff --git a/tools/firmware/build_os.sh b/tools/firmware/build_os.sh deleted file mode 100755 index e1f3e07326..0000000000 --- a/tools/firmware/build_os.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -mkdir -p _tmp -mkdir -p _release - -# Variables -RECOMPILE_APPLICATIONS="$1" - -APPLICATION_HEX_SOURCE="_build/LEKA_V1_2_DEV/app/os/LekaOS.hex" -APPLICATION_HEX_DESTINATION="$2" - -APPLICATION_VERSION="$3" -APPLICATION_HEX="_tmp/LekaOS.hex" -APPLICATION_SIGNED_HEX=$APPLICATION_HEX_DESTINATION -APPLICATION_SIGNED_BIN="_release/LekaOS-$APPLICATION_VERSION.bin" - -if [ -z "$APPLICATION_VERSION" ]; then - echo "APPLICATION_VERSION is unset" - exit 1 -fi - -if [ -z "$APPLICATION_HEX_DESTINATION" ]; then - echo "APPLICATION_HEX_DESTINATION is unset" - exit 1 -fi - -# Compile applications -if [ "$RECOMPILE_APPLICATIONS" = "true" ]; -then - make deep_clean - make config BUILD_TARGETS_TO_USE_WITH_BOOTLOADER=ON -fi; - -make - -# Get application binary -cp $APPLICATION_HEX_SOURCE $APPLICATION_HEX - -# Sign application with private key -imgtool sign -k signing-keys.pem --align 4 -v $APPLICATION_VERSION --header-size 4096 --pad-header -S 0x180000 $APPLICATION_HEX $APPLICATION_SIGNED_HEX - -# Convert in binary -arm-none-eabi-objcopy -I ihex -O binary $APPLICATION_SIGNED_HEX $APPLICATION_SIGNED_BIN