mirror of https://github.com/wolfSSL/wolfBoot.git
132 lines
4.0 KiB
Bash
Executable File
132 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# nRF5340 dual core: Creates internal and external flash images for testing
|
|
|
|
# run from wolfBoot root
|
|
# ./tools/scripts/nrf5340/build_flash.sh
|
|
|
|
# optionally run with "--erase" argument to rease both internal and external flash
|
|
|
|
# Defaults
|
|
MAKE_ARGS=
|
|
DO_BUILD=0
|
|
DO_BUILD_DEBUG=0
|
|
DO_ERASE=0
|
|
DO_PROGRAM=0
|
|
if [[ $# -eq 0 ]] ; then
|
|
DO_BUILD=1
|
|
DO_BUILD_DEBUG=0
|
|
DO_ERASE=1
|
|
DO_PROGRAM=1
|
|
echo "Build release with symbols, erase and program"
|
|
fi
|
|
|
|
while test $# -gt 0; do
|
|
case "$1" in
|
|
-h|--help|-?)
|
|
echo "nRF5340 build / flash script"
|
|
echo " "
|
|
echo "default: build, erase and program"
|
|
echo " "
|
|
echo "options:"
|
|
echo "-h, --help show brief help"
|
|
echo "-b, --build build release with symbols"
|
|
echo "-d, --debug build debug"
|
|
echo "-v, --verbose build verbose"
|
|
echo "-e, --erase do erase of internal/external flash"
|
|
echo "-p, --program program images built"
|
|
exit 0
|
|
;;
|
|
-b|--build)
|
|
DO_BUILD=1
|
|
MAKE_ARGS+=" DEBUG_SYMBOLS=1"
|
|
echo "Build release with symbols"
|
|
shift
|
|
;;
|
|
-d|--debug)
|
|
DO_BUILD=1
|
|
MAKE_ARGS+=" DEBUG=1"
|
|
echo "Build with debug"
|
|
shift
|
|
;;
|
|
-v|--verbose)
|
|
DO_BUILD=1
|
|
MAKE_ARGS+=" V=1"
|
|
echo "Build with verbose output"
|
|
shift
|
|
;;
|
|
-e|--erase)
|
|
DO_ERASE=1
|
|
echo "Do erase"
|
|
shift
|
|
;;
|
|
-p|--program)
|
|
DO_PROGRAM=1
|
|
echo "Do program"
|
|
shift
|
|
;;
|
|
*)
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ $DO_BUILD == 1 ]]; then
|
|
rm -f ./tools/scripts/nrf5340/*.bin
|
|
rm -f ./tools/scripts/nrf5340/*.hex
|
|
|
|
# Build internal flash images for both cores
|
|
|
|
# Build net
|
|
cp config/examples/nrf5340_net.config .config
|
|
make clean
|
|
make $MAKE_ARGS
|
|
cp factory.bin tools/scripts/nrf5340/factory_net.bin
|
|
# Sign flash update for testing (use partition type 2 for network update)
|
|
tools/keytools/sign --ecc256 --id 2 test-app/image.bin wolfboot_signing_private_key.der 2
|
|
cp test-app/image_v2_signed.bin tools/scripts/nrf5340/image_v2_signed_net.bin
|
|
|
|
# Build app
|
|
cp config/examples/nrf5340.config .config
|
|
make clean
|
|
make $MAKE_ARGS
|
|
|
|
cp factory.bin tools/scripts/nrf5340/factory_app.bin
|
|
# Sign flash update for testing
|
|
tools/keytools/sign --ecc256 test-app/image.bin wolfboot_signing_private_key.der 2
|
|
cp test-app/image_v2_signed.bin tools/scripts/nrf5340/image_v2_signed_app.bin
|
|
|
|
# Create a bin footer with wolfBoot trailer "BOOT" and "p" (ASCII for 0x70 == IMG_STATE_UPDATING):
|
|
echo -n "pBOOT" > tools/scripts/nrf5340/trigger_magic.bin
|
|
./tools/bin-assemble/bin-assemble \
|
|
tools/scripts/nrf5340/update_app_v2.bin \
|
|
0x0 tools/scripts/nrf5340/image_v2_signed_app.bin \
|
|
0xEDFFB tools/scripts/nrf5340/trigger_magic.bin
|
|
|
|
|
|
# Convert to HEX format for programmer tool
|
|
arm-none-eabi-objcopy -I binary -O ihex --change-addresses 0x00000000 tools/scripts/nrf5340/factory_app.bin tools/scripts/nrf5340/factory_app.hex
|
|
arm-none-eabi-objcopy -I binary -O ihex --change-addresses 0x01000000 tools/scripts/nrf5340/factory_net.bin tools/scripts/nrf5340/factory_net.hex
|
|
|
|
arm-none-eabi-objcopy -I binary -O ihex --change-addresses 0x10000000 tools/scripts/nrf5340/update_app_v2.bin tools/scripts/nrf5340/update_app_v2.hex
|
|
arm-none-eabi-objcopy -I binary -O ihex --change-addresses 0x10100000 tools/scripts/nrf5340/image_v2_signed_net.bin tools/scripts/nrf5340/image_v2_signed_net.hex
|
|
fi
|
|
|
|
if [[ $DO_ERASE == 1 ]]; then
|
|
nrfjprog -f nrf53 --recover
|
|
nrfjprog -f nrf53 --qspieraseall
|
|
fi
|
|
|
|
if [[ $DO_PROGRAM == 1 ]]; then
|
|
# Program external flash
|
|
nrfjprog -f nrf53 --program tools/scripts/nrf5340/update_app_v2.hex --verify
|
|
nrfjprog -f nrf53 --program tools/scripts/nrf5340/image_v2_signed_net.hex --verify
|
|
|
|
|
|
# Program Internal Flash
|
|
#nrfjprog -f nrf53 --program tools/scripts/nrf5340/factory_app.hex --verify
|
|
#nrfjprog -f nrf53 --program tools/scripts/nrf5340/factory_net.hex --verify --coprocessor CP_NETWORK
|
|
JLinkExe -CommandFile tools/scripts/nrf5340/flash_net.jlink
|
|
JLinkExe -CommandFile tools/scripts/nrf5340/flash_app.jlink
|
|
fi
|