summaryrefslogtreecommitdiff
path: root/fw/nucleo.sh
blob: b48b759e4310957d5289c0c2cf19a3ff7cece267 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/sh


# 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/.


# nucleo.sh
#
# This script builds the firmware for the ST Nucleo F767ZI board instead of the
# native_sim board. After the build it flashes it to the target and opens the
# serial console.
#
# This may be used to quickly test the current simulation-based development
# state on real hardware.


set -euf


SCRIPT="$(realpath "$0")"
FW="$(dirname "$SCRIPT")"
ROOT="$(dirname "$FW")"
BUILD="${ROOT}/nucleo"
BOOTLOADER_FIRMWARE="${BUILD}/fw/btl/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/btl/mcuboot"
IMGTOOL="${MCUBOOT}/scripts/imgtool.py"
KEY="${HOME}/mcuboot/key.pem"
BOARD='nucleo_f767zi'
EXTRA_CONFIGS=''
BAUDRATE='115200'
SERIAL_PORT='/dev/ttyACM0'
CONFIG_OVERLAY="${FW}/my.conf"


if test -f "$CONFIG_OVERLAY"
then
	EXTRA_CONFIGS="${EXTRA_CONFIGS} ${CONFIG_OVERLAY}"
fi

set -x

rm -rf "$BUILD"
cmake "-B${BUILD}" -GNinja -DBOARD="$BOARD" \
	-DEXTRA_CONF_FILE="${EXTRA_CONFIGS}" -DKEY="$KEY"
ninja -C "$BUILD"
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"