scripts:nrf: Add 'make flash' for nrf boards.
Tested on nrf52_pca10040 and nrf51_pca10028 using hello_world sample.
Change-Id: I7cdf1d21e7f8232da737a06e5afbfb1eaec05cde
Signed-off-by: Michał Kruszewski <mkru1992@gmail.com>
diff --git a/boards/arm/nrf51_pca10028/Makefile.board b/boards/arm/nrf51_pca10028/Makefile.board
new file mode 100644
index 0000000..ed04317
--- /dev/null
+++ b/boards/arm/nrf51_pca10028/Makefile.board
@@ -0,0 +1,5 @@
+FLASH_SCRIPT = nrf_flash.sh
+
+NRF_FAMILY = NRF51
+
+export FLASH_SCRIPT NRF_FAMILY
diff --git a/boards/arm/nrf52840_pca10056/Makefile.board b/boards/arm/nrf52840_pca10056/Makefile.board
new file mode 100644
index 0000000..d804968
--- /dev/null
+++ b/boards/arm/nrf52840_pca10056/Makefile.board
@@ -0,0 +1,5 @@
+FLASH_SCRIPT = nrf_flash.sh
+
+NRF_FAMILY = NRF52
+
+export FLASH_SCRIPT NRF_FAMILY
diff --git a/boards/arm/nrf52_pca10040/Makefile.board b/boards/arm/nrf52_pca10040/Makefile.board
new file mode 100644
index 0000000..d804968
--- /dev/null
+++ b/boards/arm/nrf52_pca10040/Makefile.board
@@ -0,0 +1,5 @@
+FLASH_SCRIPT = nrf_flash.sh
+
+NRF_FAMILY = NRF52
+
+export FLASH_SCRIPT NRF_FAMILY
diff --git a/scripts/support/nrf_flash.sh b/scripts/support/nrf_flash.sh
new file mode 100755
index 0000000..f867a18
--- /dev/null
+++ b/scripts/support/nrf_flash.sh
@@ -0,0 +1,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