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