summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xopenpicc/at91flash_automatic95
1 files changed, 95 insertions, 0 deletions
diff --git a/openpicc/at91flash_automatic b/openpicc/at91flash_automatic
new file mode 100755
index 0000000..40c23a9
--- /dev/null
+++ b/openpicc/at91flash_automatic
@@ -0,0 +1,95 @@
+#!/bin/bash
+# (C) Milosch Meriac <meriac@bitmanufaktur.de> 2006
+# (C) Henryk Plötz <henryk@ploetzli.ch> 2007
+
+#UART='/dev/ttyUSB1'
+FLASH_FILE=$1
+USB_ID='03eb:6124'
+USB_MODALIAS='usb:v03EBp6124d0110dc02dsc00dp00ic0Aisc00ip00'
+SAM7='/usr/local/bin/sam7'
+LSUSB='/usr/sbin/lsusb'
+
+echo "Automatic SAM-BA flasher ..."
+echo
+echo "Each time you want to reflash do the following:"
+echo "1. unplug the USB cable and insert the SAM-BA jumper (Pin 1+2)"
+echo "2. attach the USB cable"
+echo "3. wait ten seconds"
+echo "4. unplug the USB cable"
+echo "5. remove the SAM-BA jumper"
+echo "6. attach the USB cable"
+echo "7. wait several seconds to allow the device to be detected by Linux"
+echo "8. the device will automatically be flashed, wait for the confirmation message"
+echo "9. disconnect and reconnect USB to use the device"
+echo
+echo "Press Ctrl-C if you want to abort this program"
+echo
+
+do_flash() {
+ $SAM7 -l $UART << ENDOFMYTEXT
+set_clock
+unlock_regions
+flash $FLASH_FILE
+ENDOFMYTEXT
+}
+
+flashing_failed() {
+ :
+}
+flashing_successful() {
+ :
+}
+
+do_detect() {
+ ${LSUSB} -d ${USB_ID} > /dev/null
+ return $?
+}
+
+find_uart() {
+ DEV=`grep -l ${USB_MODALIAS} /sys/bus/usb-serial/devices/ttyUSB*/../modalias | head -n 1 | cut -d '/' --output-delimiter "
+" -f - | egrep -i '^ttyUSB'`
+ UART="/dev/${DEV}"
+ return $?
+}
+
+attention() {
+ echo '*********************************************************************************'
+ echo -n `date -R`": "
+}
+
+while true; do
+ if do_detect; then
+ echo "Device detected, flashing ${FLASH_FILE}"
+ if [ ! -r "${FLASH_FILE}" ]; then
+ attention
+ echo
+ echo "File to be flashed '${FLASH_FILE}' does not exist or is not readable"
+ echo "Please provide the file, then disconnect and reconnect the device"
+ echo "Or hit Ctrl-C to cancel flashing"
+ else
+ if ! find_uart; then
+ echo "Can't find UART, internal error, aborting"
+ break
+ else
+ echo "UART at $UART"
+ fi
+ if do_flash; then
+ echo
+ attention
+ echo "Flashing successful"
+ flashing_successful
+ echo
+ else
+ echo
+ attention
+ echo "Flashing failed"
+ flashing_failed
+ echo "Disconnect and reconnect the device to retry"
+ echo "Or hit Ctrl-C to cancel flashing"
+ echo
+ fi
+ fi
+ while do_detect; do sleep 1; done
+ fi
+ sleep 1
+done
personal git repositories of Harald Welte. Your mileage may vary