forked from zephyrproject-rtos/zephyr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnrf_flash.sh
executable file
·57 lines (48 loc) · 1.33 KB
/
nrf_flash.sh
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
#!/bin/sh
HEX_NAME=${O}/${KERNEL_HEX_NAME}
command -v nrfjprog >/dev/null 2>&1 || { echo >&2 "Can't flash nRF board,"\
"nrfjprog is not installed."\
"Aborting."; exit 1; }
CONNECTED_BOARDS=`nrfjprog --ids`
read -s -a BOARD_LIST <<< $CONNECTED_BOARDS
BOARDS_NUM=`echo "$CONNECTED_BOARDS" | wc -l`
if [ $BOARDS_NUM == 1 ]
then
BOARD_SNR=$BOARD_LIST
else
echo "There are multiple boards connected."
for i in $(seq 1 1 $BOARDS_NUM)
do
echo $i. ${BOARD_LIST[$i - 1]}
done
prompt="Please select one with desired serial number (1-$BOARDS_NUM):"
while true; do
read -p "$prompt" ANS
if [ 1 -le $ANS -a $ANS -le $BOARDS_NUM ]
then
break;
else
echo -n
fi
done
BOARD_SNR=${BOARD_LIST[$ANS - 1]}
fi
echo "Flashing file: "${HEX_NAME}
nrfjprog --eraseall -f $NRF_FAMILY --snr $BOARD_SNR &&
nrfjprog --program $HEX_NAME -f $NRF_FAMILY --snr $BOARD_SNR &&
if [ $NRF_FAMILY == NRF52 ]
then
# Set reset pin
nrfjprog --memwr 0x10001200 --val 0x00000015 \
-f $NRF_FAMILY --snr $BOARD_SNR
nrfjprog --memwr 0x10001204 --val 0x00000015 \
-f $NRF_FAMILY --snr $BOARD_SNR
nrfjprog --reset -f $NRF_FAMILY --snr $BOARD_SNR
fi
nrfjprog --pinreset -f $NRF_FAMILY --snr $BOARD_SNR
if [ $? -eq 0 ]; then
echo "${BOARD} Serial Number $BOARD_SNR flashed with success."
else
echo "Flashing ${BOARD} failed."
exit 2;
fi