Files
openocd-utils/flash_nrf54l.sh
2025-07-10 16:11:09 +02:00

69 lines
1.3 KiB
Bash

#!/bin/bash
# flash_nrf54l.sh — Flash nRF54L device using OpenOCD via Raspberry Pi SWD
set -e # Exit on error
# Default values
INTERFACE="swd0"
HEX_FILE=""
# Help message
usage() {
echo "Usage: $0 -f <hex_file> [-i swd0|swd1] [-h]"
echo
echo "Options:"
echo " -f <hex_file> Path to the HEX file to flash (required)"
echo " -i <interface> SWD interface to use: swd0 (default) or swd1"
echo " -h Show this help message and exit"
exit 1
}
# Parse arguments
while getopts "f:i:h" opt; do
case "$opt" in
f)
HEX_FILE="$OPTARG"
;;
i)
if [[ "$OPTARG" == "swd0" || "$OPTARG" == "swd1" ]]; then
INTERFACE="$OPTARG"
else
echo "Invalid interface: $OPTARG"
usage
fi
;;
h)
usage
;;
*)
usage
;;
esac
done
# Verify HEX file is provided
if [[ -z "$HEX_FILE" ]]; then
echo "Error: HEX file not specified."
usage
fi
# Check if HEX file exists
if [[ ! -f "$HEX_FILE" ]]; then
echo "Error: HEX file '$HEX_FILE' not found!"
exit 1
fi
# Run OpenOCD flashing command
sudo openocd \
-f ./raspberrypi-${INTERFACE}.cfg \
-f target/nordic/nrf54l.cfg \
-c "init" \
-c "reset halt" \
-c "flash write_image erase $HEX_FILE" \
-c "verify_image $HEX_FILE" \
-c "reset run" \
-c "shutdown"
echo "✅ Flashing complete."