Boot Linux faster!

Check our new training course

Boot Linux faster!

Check our new training course
and Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

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