From aeca3b46bc1726a06952cc2ff86f50c6d80ed1e1 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 4 Feb 2015 22:55:24 -0800 Subject: [PATCH] ao-bringup: Add turnon_teledonglev3 TeleDongle v3 uses the LPC11U14 processor which has no on-chip eeprom, so we must reflash the device to set the default radio calibration value. Signed-off-by: Keith Packard --- ao-bringup/cal-freq-file | 54 +++++++++++++++++++++ ao-bringup/turnon_teledonglev3 | 89 ++++++++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100755 ao-bringup/cal-freq-file create mode 100755 ao-bringup/turnon_teledonglev3 diff --git a/ao-bringup/cal-freq-file b/ao-bringup/cal-freq-file new file mode 100755 index 00000000..fb48907a --- /dev/null +++ b/ao-bringup/cal-freq-file @@ -0,0 +1,54 @@ +#!/bin/sh + +case $# in +2) + dev="$1" + serial="$2" + ;; +*) + echo "Usage: $0 " + exit 1; + ;; +esac + +echo 'E 0' > $dev + +while true; do + + dd if=$dev iflag=nonblock of=/dev/null > /dev/null 2>&1 + + echo 'C 1' > $dev + + echo -n "Generating RF carrier. Please enter measured frequency [enter for done]: " + + read FREQ + + echo 'C 0' > $dev + + calline=`./get-radio-cal $dev` + CURRENT_CAL=`echo $calline | awk '{print $2}'` + CURRENT_FREQ=`echo $calline | awk '{print $4}'` + CAL_VALUE=$CURRENT_CAL + + case "$FREQ" in + "") + echo $serial","$CAL_VALUE >> cal_values + exit 0 + ;; + *) + echo "Current radio calibration "$CURRENT_CAL + echo "Current radio frequency "$CURRENT_FREQ + + CAL_VALUE=`nickle -e "floor($CURRENT_FREQ / $FREQ * $CURRENT_CAL + 0.5)"` + + echo "Setting cal value" $CAL_VALUE + + dd if=$dev iflag=nonblock of=/dev/null > /dev/null 2>&1 + + cat << EOF > $dev +c f $CAL_VALUE +EOF + ;; + esac +done + diff --git a/ao-bringup/turnon_teledonglev3 b/ao-bringup/turnon_teledonglev3 new file mode 100755 index 00000000..e6750c45 --- /dev/null +++ b/ao-bringup/turnon_teledonglev3 @@ -0,0 +1,89 @@ +#!/bin/sh + +if [ -x ../ao-tools/ao-flash/ao-flash-lpc ]; then + FLASH_LPC=../ao-tools/ao-flash/ao-flash-lpc +elif [ -x /usr/bin/ao-flash-lpc ]; then + FLASH_LPC=/usr/bin/ao-flash-lpc +else + echo "Can't find ao-flash-lpc! Aborting." + exit 1 +fi + +if [ -x /usr/bin/ao-usbload ]; then + USBLOAD=/usr/bin/ao-usbload +else + echo "Can't find ao-usbload! Aborting." + exit 1 +fi + +PRODUCT=teledongle +PRODUCT_NAME=TeleDongle +VERSION=3.0 + +echo "$PRODUCT_NAME v$VERSION Turn-On and Calibration Program" +echo "Copyright © 2015 by Bdale Garbee. Released under GPL v2" +echo +echo "Expectations:" +echo "\t$PRODUCT_NAME v$VERSION powered from USB" +echo "\t\twith ST-Link-V2 cabled to debug header" +echo "\t\twith coax from UHF to frequency counter" +echo +echo -n "$PRODUCT_NAME-$VERSION serial number: " +read SERIAL + +BINARIES=$HOME/altusmetrumllc/Binaries + +LOADER="$BINARIES/loaders/$PRODUCT-v$VERSION-"*.elf +ALTOS="$BINARIES/$PRODUCT-v$VERSION"*.elf + +$FLASH_LPC $LOADER || exit 1 + +sleep 2 + +$USBLOAD --serial=$SERIAL $ALTOS || exit 1 + +sleep 5 + +dev=`ao-list | awk '/TeleDongle-v'"$VERSION"'/ { print $3; exit(0); }'` + +case "$dev" in +/dev/tty*) + echo "TeleDongle found on $dev" + ;; +*) + echo 'No TeleDongle-v'"$VERSION"' found' + exit 1 + ;; +esac + +echo 'E 0' > $dev + +./cal-freq-file $dev $SERIAL + +case $? in + 0) + ;; + *) + echo "Frequency calibration failed" + exit 1 + ;; +esac + +CAL_VALUE=`grep "^$SERIAL," cal_values | tail -1 | sed 's/^[^,]*,//'` + +case "$CAL_VALUE" in + [1-9]*) + ;; + *) + echo "Invalid calibration value: $CAL_VALUE" + exit 1 + ;; +esac + +echo "Reflashing with calibration: $CAL_VALUE" + +$USBLOAD --cal=$CAL_VALUE --tty=$dev $ALTOS || exit 1 + +echo "$PRODUCT_NAME-v$VERSION $SERIAL is ready to ship" + +exit $? -- 2.30.2