#!/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 [-i swd0|swd1] [-h]" echo echo "Options:" echo " -f Path to the HEX file to flash (required)" echo " -i 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."