A generic flashing and verification script draft (will be edited over time):
#!/usr/bin/env bash
#
# Authors:
# Jarkko Sakkinen <jarkko.sakkinen@tuni.fi>
set -e
if [ $# -ne 2 ]; then
echo "`basename $0` <payload> <block device>"
exit 1
fi
PAYLOAD=`realpath $1`
SIZE=`wc -c $1 | cut -d' ' -f1`
START="2048"
END="$((START + (SIZE >> 9) + 1))"
parted --script $2 mklabel gpt
parted --script $2 mkpart primary fat32 ${START}s ${END}s
PARTITION="${2}1"
if [ ! -b $PARTITION ]; then
echo "Invalid partition"
exit 1
fi
echo "Payload: $PAYLOAD"
echo "Partition: $PARTITION"
DD_OPTIONS="count=$((END - START)) bs=512 status=progress conv=sync"
dd if="$PAYLOAD" of="$PARTITION" $DD_OPTIONS
sync
echo "Payload MD5: `dd if="$PAYLOAD" $DD_OPTIONS 2> /dev/null | md5sum`"
echo "Partition MD5: `dd if="$PARTITION" $DD_OPTIONS 2> /dev/null | md5sum`"
#flashing #firmware #image #riscv #CVA6 #Keystone #EFI #note