aboutsummaryrefslogtreecommitdiff
path: root/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh
diff options
context:
space:
mode:
authorDavid A. Mellis <d.mellis@arduino.cc>2012-09-13 10:42:25 -0400
committerDavid A. Mellis <d.mellis@arduino.cc>2012-09-13 10:42:25 -0400
commitbd45bf50c7c68ec35c3aad8c5e7bf4d3db9cafc1 (patch)
treec02065cc7b15ce5f0a8eaa9f0030a268b37c89bb /firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh
parent6225a8596005bfb0be68fa641f5b47d01a95c12d (diff)
parent0d9a111face4f3629bcae8e52af843792af3b453 (diff)
Merge branch 'master' of ../wifishield
Diffstat (limited to 'firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh')
-rw-r--r--firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh96
1 files changed, 96 insertions, 0 deletions
diff --git a/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh b/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh
new file mode 100644
index 0000000..5082392
--- /dev/null
+++ b/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh
@@ -0,0 +1,96 @@
+#!/bin/sh
+
+WIFI_FW_PATH="/hardware/arduino/firmwares/wifi-shield"
+AVR_TOOLS_PATH="/hardware/tools/avr/bin"
+
+progname=$0
+
+usage () {
+cat <<EOF
+Usage: $progname [-a Arduino_path] [-f which_firmware] [-h]
+ -a set the path where the Arduino IDE is installed
+ -f the firmware you want to upload, valid parameters are:
+ shield - to upgrade the WiFi shield firmware
+ all - to upgrade both firmwares
+ -h help
+EOF
+ exit 0
+}
+
+upgradeHDmodule () {
+ sleep 1 # Give time to the shield to end the boot
+ echo "****Upgrade HD WiFi module firmware****\n"
+ dfu-programmer at32uc3a1256 erase
+ dfu-programmer at32uc3a1256 flash --suppress-bootloader-mem $WIFI_FW_PATH/wifi_dnld.hex
+ dfu-programmer at32uc3a1256 start
+ echo -n "\nRemove the J3 jumper then press the RESET button on the shield then type [ENTER] to upgrade the firmware of the shield..\n"
+ read readEnter
+}
+
+upgradeShield () {
+ sleep 1 # Give time to the shield to end the boot
+ echo "****Upgrade WiFi Shield firmware****\n"
+ dfu-programmer at32uc3a1256 erase
+ dfu-programmer at32uc3a1256 flash --suppress-bootloader-mem $WIFI_FW_PATH/wifiHD.hex
+ dfu-programmer at32uc3a1256 start
+ echo "\nDone. Remove the J3 jumper and press the RESET button on the shield."
+ echo "Thank you!\n"
+}
+
+cat <<EOF
+
+ Arduino WiFi Shield upgrade
+=========================================
+Disclaimer: to access to the USB devices correctly, the dfu-programmer needs to be used as root. Run this script as root.
+
+EOF
+
+if [ $USER = 'root' ] ; then #check if the current user is root
+ while getopts ":a:f:h" opt; do
+ case $opt in
+ a)
+ ARDUINO_PATH=$OPTARG
+ WIFI_FW_PATH=$ARDUINO_PATH$WIFI_FW_PATH
+ AVR_TOOLS_PATH=$ARDUINO_PATH$AVR_TOOLS_PATH
+ cd $AVR_TOOLS_PATH
+ ./avr-objcopy --output-target=ihex $WIFI_FW_PATH/wifi_dnld.elf $WIFI_FW_PATH/wifi_dnld.hex
+ ./avr-objcopy --output-target=ihex $WIFI_FW_PATH/wifiHD.elf $WIFI_FW_PATH/wifiHD.hex
+ ;;
+ f)
+ if [ "$ARDUINO_PATH" != "" ] ; then
+ if [ "$OPTARG" = "all" ] ; then
+ upgradeHDmodule
+ upgradeShield
+ exit 0
+ else
+ if [ "$OPTARG" = "shield" ] ; then
+ upgradeShield
+ exit 0
+ else
+ echo "invalid parameter for the -f [firmware] option, please retry."
+ echo "Type -h for help\n"
+ exit 1
+ fi
+ fi
+ else
+ echo "Arduino Path not setted. Retry...\n"
+ fi
+ ;;
+ h)
+ usage ;;
+ \?)
+ echo "Invalid option: $OPTARG" >&2
+ usage
+ exit 1
+ ;;
+ :)
+ echo "Option -$OPTARG requires an argument." >&2
+ exit 1
+ ;;
+ esac
+ done
+else
+ echo "You are not root!\n"
+fi
+
+shift $(($OPTIND - 1))