Aaron Fischer
f24858d162
This step seems bold, but is saves us so much hassle. Even better, we have a reliable codebase, with all the dependencies (and their versions) we need in order to build the project. If a library got an update, we can replace it inplace if the code is still compatible.
121 lines
3.2 KiB
Bash
121 lines
3.2 KiB
Bash
#!/bin/sh
|
|
|
|
#WIFI_FW_PATH="/hardware/arduino/firmwares/wifishield/binary"
|
|
WIFI_FW_PATH="/libraries/WiFi/extras/binary"
|
|
AVR_TOOLS_PATH="/hardware/tools/avr/bin"
|
|
|
|
TARGET_MICRO="at32uc3a1256"
|
|
|
|
|
|
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 $TARGET_MICRO erase
|
|
dfu-programmer $TARGET_MICRO flash --suppress-bootloader-mem $WIFI_FW_PATH/wifi_dnld.hex
|
|
dfu-programmer $TARGET_MICRO start
|
|
|
|
if [ $? != 0 ] ; then
|
|
echo "\nError during device initialization, please close the J3 jumper and press the reset button.\nTry -h for help\n"
|
|
exit 1 # if the device is not recognized exit
|
|
fi
|
|
|
|
echo -n "\nPress 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 $TARGET_MICRO erase
|
|
dfu-programmer $TARGET_MICRO flash --suppress-bootloader-mem $WIFI_FW_PATH/wifiHD.hex
|
|
dfu-programmer $TARGET_MICRO start
|
|
|
|
if [ $? != 0 ] ; then
|
|
echo "\nError during device initialization, please close the J3 jumper and press the reset button.\nTry -h for help\n"
|
|
exit 1 # if the device is not recognized exit
|
|
fi
|
|
|
|
echo "\nDone. Remove the J3 jumper and press the RESET button on the shield."
|
|
echo "Thank you!\n"
|
|
}
|
|
|
|
|
|
cat <<EOF
|
|
|
|
Arduino WiFi Shield upgrade
|
|
=========================================
|
|
Instructions:
|
|
|
|
To access to the USB devices correctly, the dfu-programmer needs to have the root permissions.
|
|
|
|
You can upgrade the firmware of the antenna togheter with the shield firmware or only the shield firmware
|
|
if there aren't changes on the antenna firmware.
|
|
|
|
Use the '-h' parameter for help
|
|
=========================================
|
|
|
|
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 "Please retry running the script as root.\n"
|
|
fi
|
|
|
|
shift $(($OPTIND - 1))
|