From 13dccd1869cdf00d4aa0df55a3ece33936cd520a Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Sun, 16 Feb 2014 15:51:32 -0700 Subject: have the cal-freq script save cal values to a file --- ao-bringup/cal-freq | 2 ++ 1 file changed, 2 insertions(+) (limited to 'ao-bringup') diff --git a/ao-bringup/cal-freq b/ao-bringup/cal-freq index dc2f2212..68a8ebf2 100755 --- a/ao-bringup/cal-freq +++ b/ao-bringup/cal-freq @@ -21,6 +21,7 @@ while true; do case "$FREQ" in "") + echo $SERIAL","$CAL_VALUE >> cal_values exit 0 ;; *) @@ -44,3 +45,4 @@ EOF ;; esac done + -- cgit v1.2.3 From 403b95ee27782309b564855b85285c9f5f5c7068 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Thu, 20 Feb 2014 13:23:32 -0700 Subject: update turnon scripts to store cal values --- ao-bringup/turnon_telebt | 3 ++- ao-bringup/turnon_teledongle | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'ao-bringup') diff --git a/ao-bringup/turnon_telebt b/ao-bringup/turnon_telebt index ef20e915..c4902f31 100755 --- a/ao-bringup/turnon_telebt +++ b/ao-bringup/turnon_telebt @@ -45,7 +45,8 @@ read FREQ CAL_VALUE=`nickle -e "floor(434.55 / $FREQ * 1186611 + 0.5)"` echo "Programming flash with cal value " $CAL_VALUE -$AOLOAD -D $DONGLE --cal $CAL_VALUE /usr/share/altos/stable/telebt-v1.0*.ihx $SERIAL +$AOLOAD -D $DONGLE --cal $CAL_VALUE /usr/share/altos/telebt-v1.0*.ihx $SERIAL echo "Serial number "$SERIAL" programmed with RF cal value "$CAL_VALUE +echo $SERIAL","$CAL_VALUE >> cal_values echo "Unplug debug cable, power cycle, cu to the board, confirm freq and record power" diff --git a/ao-bringup/turnon_teledongle b/ao-bringup/turnon_teledongle index a11683db..ddee5ee8 100755 --- a/ao-bringup/turnon_teledongle +++ b/ao-bringup/turnon_teledongle @@ -45,4 +45,5 @@ echo "Programming flash with cal value " $CAL_VALUE $AOLOAD -D 100 --cal $CAL_VALUE /usr/share/altos/teledongle-v0.2*.ihx $SERIAL echo "Serial number "$SERIAL" programmed with RF cal value "$CAL_VALUE +echo $SERIAL","$CAL_VALUE >> cal_values echo "Unplug and replug USB, cu to the board, confirm freq and record power" -- cgit v1.2.3 From 834cd051af1b80a98678de221d3c45cb30f8bb0d Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 2 Apr 2014 23:35:36 -0700 Subject: Add easymini turnon script and helpers Signed-off-by: Keith Packard --- ao-bringup/test-baro | 117 ++++++++++++++++++++++++++++++++++++++++++++ ao-bringup/test-flash | 119 +++++++++++++++++++++++++++++++++++++++++++++ ao-bringup/test-igniter | 114 +++++++++++++++++++++++++++++++++++++++++++ ao-bringup/turnon_easymini | 78 +++++++++++++++++++++++++++++ 4 files changed, 428 insertions(+) create mode 100755 ao-bringup/test-baro create mode 100755 ao-bringup/test-flash create mode 100755 ao-bringup/test-igniter create mode 100644 ao-bringup/turnon_easymini (limited to 'ao-bringup') diff --git a/ao-bringup/test-baro b/ao-bringup/test-baro new file mode 100755 index 00000000..45d7ccac --- /dev/null +++ b/ao-bringup/test-baro @@ -0,0 +1,117 @@ +#!/usr/bin/nickle + +import File; + +string timed_read(file f, int timeout) { + thread reader = fork func() { + try { + return fgets(f); + } catch Thread::signal(int i) { + return ""; + } + }(); + + thread killer = fork func() { + try { + sleep (timeout); + Thread::send_signal(reader, 1); + } catch Thread::signal(int i) { + return; + } + }(); + + poly v = Thread::join(reader); + Thread::send_signal(killer, 1); + Thread::join(killer); + if (is_string(v)) + return v; + return ""; +} + +void flush_input(file f) { + for (;;) { + string s = timed_read(f, 200); + if (s == "") + break; + } +} + +string[*] settings(file f) { + string[...] x = {}; + + flush_input(f); + fprintf (f, "c s\nv\n"); + flush(f); + for (;;) { + string l = File::fgets(f); + x[dim(x)] = l; + if (String::index(l, "software-version") == 0) + break; + } + return x; +} + +string[*] find_setting(string[*] s, string match) { + for (int i = 0; i < dim(s); i++) + if (String::index(s[i], match) == 0) + return String::wordsplit(s[i], " "); + return (string[*]) {}; +} + +string[*] baro(file f) { + string[...] x = {}; + + flush_input(f); + fprintf (f, "B\n"); + flush(f); + for (;;) { + string l = File::fgets(f); + x[dim(x)] = l; + if (String::index(l, "Altitude:") == 0) + break; + } + return x; +} + +string[*] find_baro(string[*] s, string match) { + for (int i = 0; i < dim(s); i++) + if (String::index(s[i], match) >= 0) + return String::wordsplit(s[i], " "); + return (string[*]) {}; +} + +bool +do_baro(file f) { + string[*] i = baro(f); + string[*] temp = find_baro(i, "Temperature"); + string[*] alt = find_baro(i, "Altitude"); + + real temperature = string_to_integer(temp[2]) / 100.0; + real altitude = string_to_integer(alt[1]); + + if (altitude < 0 || 3000 < altitude) { + printf ("weird altitude %f\n", altitude); + return false; + } + + if (temperature < 20 || 30 < temperature) { + printf ("weird temperature %f\n", temperature); + return false; + } + + printf ("altitude %f temperature %f\n", altitude, temperature); + + return true; +} + +void main () { + string name = argv[1]; + file f = open(name, "r+"); + bool ret = true; + + if (!do_baro(f)) + ret = false; + exit (ret? 0 : 1); +} + +main(); diff --git a/ao-bringup/test-flash b/ao-bringup/test-flash new file mode 100755 index 00000000..c42ddee3 --- /dev/null +++ b/ao-bringup/test-flash @@ -0,0 +1,119 @@ +#!/usr/bin/nickle + +import File; + +string timed_read(file f, int timeout) { + thread reader = fork func() { + try { + return fgets(f); + } catch Thread::signal(int i) { + return ""; + } + }(); + + thread killer = fork func() { + try { + sleep (timeout); + Thread::send_signal(reader, 1); + } catch Thread::signal(int i) { + return; + } + }(); + + poly v = Thread::join(reader); + Thread::send_signal(killer, 1); + Thread::join(killer); + if (is_string(v)) + return v; + return ""; +} + +void flush_input(file f) { + for (;;) { + string s = timed_read(f, 200); + if (s == "") + break; + } +} + +string[*] settings(file f) { + string[...] x = {}; + + flush_input(f); + fprintf (f, "c s\nv\n"); + flush(f); + for (;;) { + string l = File::fgets(f); + x[dim(x)] = l; + if (String::index(l, "software-version") == 0) + break; + } + return x; +} + +string[*] find_setting(string[*] s, string match) { + for (int i = 0; i < dim(s); i++) + if (String::index(s[i], match) == 0) + return String::wordsplit(s[i], " "); + return (string[*]) {}; +} + +string[*] flash(file f) { + string[...] x = {}; + + flush_input(f); + fprintf (f, "f\nv\n"); + flush(f); + for (;;) { + string l = File::fgets(f); + x[dim(x)] = l; + if (String::index(l, "software-version") == 0) + break; + } + return x; +} + +string[*] find_flash(string[*] s, string match) { + for (int i = 0; i < dim(s); i++) + if (String::index(s[i], match) >= 0) + return String::wordsplit(s[i], " "); + return (string[*]) {}; +} + +bool +do_flash(file f, int expected_size) { + string[*] i = flash(f); + string[*] size = find_flash(i, "Storage size:"); + string[*] erase = find_flash(i, "Storage erase unit:"); + + int actual_size = string_to_integer(size[2]); + + if (actual_size != expected_size) { + printf ("weird flash size %d != %d\n", actual_size, expected_size); + return false; + } + + int actual_erase = string_to_integer(erase[3]); + + if (actual_erase != 65536) { + printf ("weird erase size %d\n", actual_erase); + return false; + } + + printf ("flash size %d erase block %d\n", actual_size, actual_erase); + + return true; +} + +void main () { + string name = argv[1]; + string size = argv[2]; + file f = open(name, "r+"); + bool ret = true; + + if (!do_flash(f, string_to_integer(size))) + ret = false; + exit (ret? 0 : 1); +} + +main(); diff --git a/ao-bringup/test-igniter b/ao-bringup/test-igniter new file mode 100755 index 00000000..72dd7723 --- /dev/null +++ b/ao-bringup/test-igniter @@ -0,0 +1,114 @@ +#!/usr/bin/nickle + +import File; + +string timed_read(file f, int timeout) { + thread reader = fork func() { + try { + return fgets(f); + } catch Thread::signal(int i) { + return ""; + } + }(); + + thread killer = fork func() { + try { + sleep (timeout); + Thread::send_signal(reader, 1); + } catch Thread::signal(int i) { + return; + } + }(); + + poly v = Thread::join(reader); + Thread::send_signal(killer, 1); + Thread::join(killer); + if (is_string(v)) + return v; + return ""; +} + +void flush_input(file f) { + for (;;) { + string s = timed_read(f, 200); + if (s == "") + break; + } +} + +string[*] settings(file f) { + string[...] x = {}; + + flush_input(f); + fprintf (f, "c s\nv\n"); + flush(f); + for (;;) { + string l = File::fgets(f); + x[dim(x)] = l; + if (String::index(l, "software-version") == 0) + break; + } + return x; +} + +string[*] find_setting(string[*] s, string match) { + for (int i = 0; i < dim(s); i++) + if (String::index(s[i], match) == 0) + return String::wordsplit(s[i], " "); + return (string[*]) {}; +} + +string[*] igniters(file f) { + string[...] x = {}; + + flush_input(f); + fprintf (f, "t\nv\n"); + flush(f); + for (;;) { + string l = File::fgets(f); + x[dim(x)] = l; + if (String::index(l, "software-version") == 0) + break; + } + return x; +} + +string[*] find_igniter(string[*] s, string match) { + for (int i = 0; i < dim(s); i++) + if (String::index(s[i], match) >= 0) + return String::wordsplit(s[i], " "); + return (string[*]) {}; +} + +bool +do_igniter(file f, string igniter) { + string[*] i = igniters(f); + string[*] status = find_igniter(i, igniter); + if (dim(status) < 4) { + printf ("no igniter %s found in %v\n", igniter, i); + return false; + } + if (String::index(status[3], "ready") < 0) { + printf("igniter %s status is \"%s\"\n", igniter, status[3]); + return false; + } + fprintf(f, "i DoIt %s\n", igniter); + flush(f); + flush_input(f); + return true; +} + +void main () { + string name = argv[1]; + string[dim(argv)-2] igniters = { [i] = argv[i+2] }; + file f = open(name, "r+"); + bool ret = true; + + for (int i = 0; i < dim(igniters); i++) { + if (!do_igniter(f, igniters[i])) + ret = false; + } + exit (ret? 0 : 1); +} + +main(); diff --git a/ao-bringup/turnon_easymini b/ao-bringup/turnon_easymini new file mode 100644 index 00000000..3c24aa21 --- /dev/null +++ b/ao-bringup/turnon_easymini @@ -0,0 +1,78 @@ +#!/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 ../ao-tools/ao-usbload/ao-usbload ]; then + USBLOAD=../ao-tools/ao-usbload/ao-usbload +elif [ -x /usr/bin/ao-usbload ]; then + USBLOAD=/usr/bin/ao-usbload +else + echo "Can't find ao-usbload! Aborting." + exit 1 +fi + +VERSION=1.0 +PRODUCT=EasyMini +#VERSION=0.1 + +echo "$PRODUCT v$VERSION Turn-On and Calibration Program" +echo "Copyright 2010 by Bdale Garbee. Released under GPL v2" +echo +echo "Expectations:" +echo "\t$PRODUCT v$VERSION powered from USB" +echo "\t\twith ST-Link-V2 cabled to debug header" +echo +echo -n "$PRODUCT-$VERSION serial number: " +read SERIAL + +echo $FLASH_LPC + +$FLASH_LPC ../src/easymini-v$VERSION/flash-loader/*.elf || exit 1 + +sleep 2 + +$USBLOAD --serial=$SERIAL ../src/easymini-v$VERSION/*.ihx || exit 1 +#$USBLOAD --serial=$SERIAL /usr/share/altos/telemega-v$VERSION*.ihx || exit 1 + +sleep 2 + +dev=`ao-list | awk '/$PRODUCT-v'"$VERSION"'/ { print $3; exit(0); }'` + +case "$dev" in +/dev/tty*) + echo "$PRODUCT found on $dev" + ;; +*) + echo 'No $PRODUCT-v'"$VERSION"' found' + exit 1 + ;; +esac + +echo "Testing igniters. Both should flash" +./test-igniter "$dev" drogue main + +case $? in +0) + ;; +*) + echo "failed" + exit 1 +esac + +echo "Testing baro sensor" +./test-baro "$dev" + +case $? in +0) + ;; +*) + echo "failed" + exit 1 +esac -- cgit v1.2.3 From 4800497fa1fc449807ef0097cc3fed367641ae29 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 4 Apr 2014 23:36:34 -0700 Subject: ao-bringup: Get turnon_telemini working This script now does complete testing of the board Signed-off-by: Keith Packard --- ao-bringup/test-igniter | 24 +++++++++++++++++++++++- ao-bringup/turnon_easymini | 32 +++++++++++++++++++++++++------- 2 files changed, 48 insertions(+), 8 deletions(-) mode change 100644 => 100755 ao-bringup/turnon_easymini (limited to 'ao-bringup') diff --git a/ao-bringup/test-igniter b/ao-bringup/test-igniter index 72dd7723..454f6328 100755 --- a/ao-bringup/test-igniter +++ b/ao-bringup/test-igniter @@ -98,10 +98,32 @@ do_igniter(file f, string igniter) { return true; } +file +open_tty(string name) +{ + int i = 0; + for (;;) { + try { + return open (name, "r+"); + } catch open_error(string error, File::error_type error, string name) { + if (error == File::error_type.BUSY) { + if (i < 30) { + printf ("waiting for %s to be usable\n", name); + sleep(2000); + continue; + } + } else { + printf ("%s: %s\n", name, error); + exit(1); + } + } + } +} + void main () { string name = argv[1]; string[dim(argv)-2] igniters = { [i] = argv[i+2] }; - file f = open(name, "r+"); + file f = open_tty(name); bool ret = true; for (int i = 0; i < dim(igniters); i++) { diff --git a/ao-bringup/turnon_easymini b/ao-bringup/turnon_easymini old mode 100644 new mode 100755 index 3c24aa21..db2b3248 --- a/ao-bringup/turnon_easymini +++ b/ao-bringup/turnon_easymini @@ -20,7 +20,8 @@ fi VERSION=1.0 PRODUCT=EasyMini -#VERSION=0.1 +BASE=`echo $PRODUCT | tr 'A-Z' 'a-z'` +echo $FILE echo "$PRODUCT v$VERSION Turn-On and Calibration Program" echo "Copyright 2010 by Bdale Garbee. Released under GPL v2" @@ -34,23 +35,24 @@ read SERIAL echo $FLASH_LPC -$FLASH_LPC ../src/easymini-v$VERSION/flash-loader/*.elf || exit 1 +$FLASH_LPC ../src/$BASE-v$VERSION/flash-loader/$BASE-v$VERSION-altos-flash-*.elf || exit 1 -sleep 2 +sleep 1 + +echo $USBLOAD -$USBLOAD --serial=$SERIAL ../src/easymini-v$VERSION/*.ihx || exit 1 -#$USBLOAD --serial=$SERIAL /usr/share/altos/telemega-v$VERSION*.ihx || exit 1 +$USBLOAD --serial=$SERIAL ../src/$BASE-v$VERSION/*.ihx || exit 1 sleep 2 -dev=`ao-list | awk '/$PRODUCT-v'"$VERSION"'/ { print $3; exit(0); }'` +dev=`ao-list | awk '/'"$PRODUCT"'-v'"$VERSION"'/ { print $3; exit(0); }'` case "$dev" in /dev/tty*) echo "$PRODUCT found on $dev" ;; *) - echo 'No $PRODUCT-v'"$VERSION"' found' + echo 'No '"$PRODUCT"'-v'"$VERSION"' found' exit 1 ;; esac @@ -76,3 +78,19 @@ case $? in echo "failed" exit 1 esac + +FLASHSIZE=1048576 + +echo "Testing flash" +./test-flash "$dev" "$FLASHSIZE" + +case $? in +0) + ;; +*) + echo "failed" + exit 1 +esac + +echo "$PRODUCT-v$VERSION" serial "$SERIAL" is ready to ship +exit 0 -- cgit v1.2.3 From c14cfb1436c988eb0a0d26d7c4d83aeccecbc8a3 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 5 Apr 2014 18:16:21 -0700 Subject: ao-bringup: Split out easymini test into separate script This lets you run the easy mini testing code without also flashing the device. Signed-off-by: Keith Packard --- ao-bringup/test-baro | 28 ++++------------- ao-bringup/test-easymini | 63 ++++++++++++++++++++++++++++++++++++++ ao-bringup/test-flash | 28 ++++------------- ao-bringup/turnon_easymini | 75 ++++++++++++++-------------------------------- 4 files changed, 96 insertions(+), 98 deletions(-) create mode 100755 ao-bringup/test-easymini (limited to 'ao-bringup') diff --git a/ao-bringup/test-baro b/ao-bringup/test-baro index 45d7ccac..2116dce4 100755 --- a/ao-bringup/test-baro +++ b/ao-bringup/test-baro @@ -36,28 +36,6 @@ void flush_input(file f) { } } -string[*] settings(file f) { - string[...] x = {}; - - flush_input(f); - fprintf (f, "c s\nv\n"); - flush(f); - for (;;) { - string l = File::fgets(f); - x[dim(x)] = l; - if (String::index(l, "software-version") == 0) - break; - } - return x; -} - -string[*] find_setting(string[*] s, string match) { - for (int i = 0; i < dim(s); i++) - if (String::index(s[i], match) == 0) - return String::wordsplit(s[i], " "); - return (string[*]) {}; -} - string[*] baro(file f) { string[...] x = {}; @@ -65,7 +43,11 @@ string[*] baro(file f) { fprintf (f, "B\n"); flush(f); for (;;) { - string l = File::fgets(f); + string l = timed_read(f, 1000); + if (l == "") { + File::fprintf(stderr, "read timedout\n"); + exit(1); + } x[dim(x)] = l; if (String::index(l, "Altitude:") == 0) break; diff --git a/ao-bringup/test-easymini b/ao-bringup/test-easymini new file mode 100755 index 00000000..29139385 --- /dev/null +++ b/ao-bringup/test-easymini @@ -0,0 +1,63 @@ +#!/bin/sh + +VERSION=1.0 +PRODUCT=EasyMini +BASE=`echo $PRODUCT | tr 'A-Z' 'a-z'` + +echo "$PRODUCT-v$VERSION Test Program" +echo "Copyright 2014 by Keith Packard. Released under GPL v2" +echo +echo "Expectations:" +echo "\t$PRODUCT v$VERSION powered from USB" +echo + +ret=1 +ao-list | while read product serial dev; do + case "$product" in + "$PRODUCT-v$VERSION") + + echo "Testing $product $serial $dev" + + echo "Testing igniters. Both should flash" + ./test-igniter "$dev" drogue main + + case $? in + 0) + ;; + *) + echo "failed" + exit 1 + esac + + echo "Testing baro sensor" + ./test-baro "$dev" + + case $? in + 0) + ;; + *) + echo "failed" + exit 1 + esac + + FLASHSIZE=1048576 + + echo "Testing flash" + ./test-flash "$dev" "$FLASHSIZE" + + case $? in + 0) + ;; + *) + echo "failed" + exit 1 + esac + + echo "$PRODUCT-v$VERSION" serial "$serial" is ready to ship + ret=0 + ;; + *) + echo "Skipping $product $serial $dev" + ;; + esac +done diff --git a/ao-bringup/test-flash b/ao-bringup/test-flash index c42ddee3..d79de320 100755 --- a/ao-bringup/test-flash +++ b/ao-bringup/test-flash @@ -36,28 +36,6 @@ void flush_input(file f) { } } -string[*] settings(file f) { - string[...] x = {}; - - flush_input(f); - fprintf (f, "c s\nv\n"); - flush(f); - for (;;) { - string l = File::fgets(f); - x[dim(x)] = l; - if (String::index(l, "software-version") == 0) - break; - } - return x; -} - -string[*] find_setting(string[*] s, string match) { - for (int i = 0; i < dim(s); i++) - if (String::index(s[i], match) == 0) - return String::wordsplit(s[i], " "); - return (string[*]) {}; -} - string[*] flash(file f) { string[...] x = {}; @@ -65,7 +43,11 @@ string[*] flash(file f) { fprintf (f, "f\nv\n"); flush(f); for (;;) { - string l = File::fgets(f); + string l = timed_read(f, 1000); + if (l == "") { + File::fprintf(stderr, "Read timedout\n"); + exit(1); + } x[dim(x)] = l; if (String::index(l, "software-version") == 0) break; diff --git a/ao-bringup/turnon_easymini b/ao-bringup/turnon_easymini index db2b3248..255db0bf 100755 --- a/ao-bringup/turnon_easymini +++ b/ao-bringup/turnon_easymini @@ -30,67 +30,38 @@ echo "Expectations:" echo "\t$PRODUCT v$VERSION powered from USB" echo "\t\twith ST-Link-V2 cabled to debug header" echo -echo -n "$PRODUCT-$VERSION serial number: " -read SERIAL -echo $FLASH_LPC - -$FLASH_LPC ../src/$BASE-v$VERSION/flash-loader/$BASE-v$VERSION-altos-flash-*.elf || exit 1 - -sleep 1 - -echo $USBLOAD - -$USBLOAD --serial=$SERIAL ../src/$BASE-v$VERSION/*.ihx || exit 1 - -sleep 2 - -dev=`ao-list | awk '/'"$PRODUCT"'-v'"$VERSION"'/ { print $3; exit(0); }'` - -case "$dev" in -/dev/tty*) - echo "$PRODUCT found on $dev" +case $# in + 1) + SERIAL="$1" + echo "$PRODUCT-$VERSION serial number: $SERIAL" ;; -*) - echo 'No '"$PRODUCT"'-v'"$VERSION"' found' - exit 1 + 0) + echo -n "$PRODUCT-$VERSION serial number: " + read SERIAL + ;; + *) + echo "Usage: $0 " 1>&2 + exit 1; ;; esac -echo "Testing igniters. Both should flash" -./test-igniter "$dev" drogue main +FLASH_FILE=../src/$BASE-v$VERSION/flash-loader/$BASE-v$VERSION-altos-flash-*.elf -case $? in -0) - ;; -*) - echo "failed" - exit 1 -esac +echo $FLASH_LPC $FLASH_FILE -echo "Testing baro sensor" -./test-baro "$dev" +$FLASH_LPC $FLASH_FILE || exit 1 -case $? in -0) - ;; -*) - echo "failed" - exit 1 -esac +sleep 10 -FLASHSIZE=1048576 +ALTOS_FILE=../src/$BASE-v$VERSION/*.ihx -echo "Testing flash" -./test-flash "$dev" "$FLASHSIZE" +echo $USBLOAD $ALTOS_FILE -case $? in -0) - ;; -*) - echo "failed" - exit 1 -esac +$USBLOAD --serial=$SERIAL $ALTOS_FILE || exit 1 + +sleep 2 + +./test-easymini -echo "$PRODUCT-v$VERSION" serial "$SERIAL" is ready to ship -exit 0 +exit $? -- cgit v1.2.3 From f8429152e438eb72618edaf5983ae1cd5d3d4dab Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Sun, 13 Apr 2014 08:58:36 -0600 Subject: ugly hack (just make sleep longer) to work around ttyACM* discovery issue --- ao-bringup/turnon_telemetrum | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ao-bringup') diff --git a/ao-bringup/turnon_telemetrum b/ao-bringup/turnon_telemetrum index bcf6239f..80193c4c 100755 --- a/ao-bringup/turnon_telemetrum +++ b/ao-bringup/turnon_telemetrum @@ -39,7 +39,7 @@ sleep 2 $USBLOAD --serial=$SERIAL /usr/share/altos/telemetrum-v$VERSION*.ihx || exit 1 -sleep 2 +sleep 5 dev=`ao-list | awk '/TeleMetrum-v'"$VERSION"'/ { print $3; exit(0); }'` -- cgit v1.2.3 From 3bcf4bdd3e3f3751ad9d517696b5573dd4593846 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Mon, 12 May 2014 17:31:14 -0600 Subject: update TeleMega turn-on script and Releasing for new stable firmware home --- Releasing | 12 +++++++++++- ao-bringup/turnon_telemega | 21 ++++++++------------- 2 files changed, 19 insertions(+), 14 deletions(-) (limited to 'ao-bringup') diff --git a/Releasing b/Releasing index fdd681bd..965c93cf 100644 --- a/Releasing +++ b/Releasing @@ -6,7 +6,6 @@ These are Bdale's notes on how to do a release. - make sure that doc/altusmetrum.xsl has the right copyright year, and add release to the revision history at the front (release notes will be pulled in automatically) - - do the same for doc/micropeak.xsl - update the version in configure.ac git log > ChangeLog @@ -57,6 +56,17 @@ These are Bdale's notes on how to do a release. this pushes packages for each platform to web site + # store a stable copy of ARM binaries for production use + cp src/easymini-v1.0/*.elf \ + src/telemega-v1.0/*.elf \ + src/telemetrum-v2.0/*.elf \ + ~/altusmetrumllc/Binaries/ + cp src/easymini-v1.0/flash-loader/*.elf \ + src/telemega-v1.0/flash-loader/*.elf \ + src/telemetrum-v2.0/flash-loader/*.elf \ + ~/altusmetrumllc/Binaries/loaders/ + (cd ~/altusmetrumllc ; git commit -a) + - copy the relevant release notes file from doc/ to /home/bdale/web/altusmetrum/AltOS/releases/ diff --git a/ao-bringup/turnon_telemega b/ao-bringup/turnon_telemega index 3880b197..39a63642 100755 --- a/ao-bringup/turnon_telemega +++ b/ao-bringup/turnon_telemega @@ -1,17 +1,13 @@ #!/bin/sh -if [ -x ../ao-tools/ao-stmload/ao-stmload ]; then - STMLOAD=../ao-tools/ao-stmload/ao-stmload -elif [ -x /usr/bin/ao-stmload ]; then - STMLOAD=/usr/bin/ao-stmload +if [ -x /usr/bin/ao-flash-stm ]; then + STMLOAD=/usr/bin/ao-flash-stm else - echo "Can't find ao-stmload! Aborting." + echo "Can't find ao-flash-stm! Aborting." exit 1 fi -if [ -x ../ao-tools/ao-usbload/ao-usbload ]; then - USBLOAD=../ao-tools/ao-usbload/ao-usbload -elif [ -x /usr/bin/ao-usbload ]; then +if [ -x /usr/bin/ao-usbload ]; then USBLOAD=/usr/bin/ao-usbload else echo "Can't find ao-usbload! Aborting." @@ -19,10 +15,10 @@ else fi VERSION=1.0 -#VERSION=0.1 +REPO=~/altusmetrumllc/Binaries echo "TeleMega v$VERSION Turn-On and Calibration Program" -echo "Copyright 2010 by Bdale Garbee. Released under GPL v2" +echo "Copyright 2014 by Bdale Garbee. Released under GPL v2" echo echo "Expectations:" echo "\tTeleMega v$VERSIOn powered from USB" @@ -34,12 +30,11 @@ read SERIAL echo $STMLOAD -$STMLOAD --raw ../src/telemega-v$VERSION/flash-loader/*.elf || exit 1 +$STMLOAD $REPO/loaders/telemega-v$VERSION*.elf || exit 1 sleep 2 -#$USBLOAD --serial=$SERIAL ../src/telemega-v$VERSION/*.ihx || exit 1 -$USBLOAD --serial=$SERIAL /usr/share/altos/telemega-v$VERSION*.ihx || exit 1 +$USBLOAD --serial=$SERIAL $REPO/telemega-v$VERSION*.elf || exit 1 sleep 2 -- cgit v1.2.3 From 5f4a1b3e553276a4d6727c111fe290fa3690fa1e Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 12 May 2014 22:48:45 -0700 Subject: ao-bringup: test-baro should accept altitudes a bit below sea level Testing baro sensors on a particularly high pressure day at Keith's house yields altitudes down to -20m or so. Signed-off-by: Keith Packard --- ao-bringup/test-baro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ao-bringup') diff --git a/ao-bringup/test-baro b/ao-bringup/test-baro index 2116dce4..ce5b7f80 100755 --- a/ao-bringup/test-baro +++ b/ao-bringup/test-baro @@ -71,7 +71,7 @@ do_baro(file f) { real temperature = string_to_integer(temp[2]) / 100.0; real altitude = string_to_integer(alt[1]); - if (altitude < 0 || 3000 < altitude) { + if (altitude < -50 || 3000 < altitude) { printf ("weird altitude %f\n", altitude); return false; } -- cgit v1.2.3 From 47750e236c45ab03f28fc3393996edb2bd4312e3 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 12 May 2014 22:49:39 -0700 Subject: ao-bringup: Use official binaries for EasyMini turnon Don't use locally built ones, use the official ones found in ~/altusmetrumllc/Binaries to ensure that all devices are shipped with known firmware. Signed-off-by: Keith Packard --- ao-bringup/turnon_easymini | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'ao-bringup') diff --git a/ao-bringup/turnon_easymini b/ao-bringup/turnon_easymini index 255db0bf..0b915c5e 100755 --- a/ao-bringup/turnon_easymini +++ b/ao-bringup/turnon_easymini @@ -46,15 +46,20 @@ case $# in ;; esac -FLASH_FILE=../src/$BASE-v$VERSION/flash-loader/$BASE-v$VERSION-altos-flash-*.elf +# +# Use released versions of everything +# +FLASH_FILE=~/altusmetrumllc/Binaries/loaders/easymini-v1.0-altos-flash-*.elf +ALTOS_FILE=~/altusmetrumllc/Binaries/easymini-v1.0-*.elf + +#FLASH_FILE=../src/$BASE-v$VERSION/flash-loader/$BASE-v$VERSION-altos-flash-*.elf +#ALTOS_FILE=../src/$BASE-v$VERSION/*.ihx echo $FLASH_LPC $FLASH_FILE $FLASH_LPC $FLASH_FILE || exit 1 -sleep 10 - -ALTOS_FILE=../src/$BASE-v$VERSION/*.ihx +sleep 1 echo $USBLOAD $ALTOS_FILE -- cgit v1.2.3 From 9ab3a1de95b705783c31a7e16447f52c10b6b480 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Sun, 15 Jun 2014 17:44:42 -0600 Subject: turn-on support for TeleGPS --- ao-bringup/test-gps | 102 ++++++++++++++++++++++++++++++++++++++++++++++ ao-bringup/test-telegps | 52 +++++++++++++++++++++++ ao-bringup/turnon_telegps | 81 ++++++++++++++++++++++++++++++++++++ 3 files changed, 235 insertions(+) create mode 100755 ao-bringup/test-gps create mode 100755 ao-bringup/test-telegps create mode 100755 ao-bringup/turnon_telegps (limited to 'ao-bringup') diff --git a/ao-bringup/test-gps b/ao-bringup/test-gps new file mode 100755 index 00000000..a1e21626 --- /dev/null +++ b/ao-bringup/test-gps @@ -0,0 +1,102 @@ +#!/usr/bin/nickle + +import File; + +string timed_read(file f, int timeout) { + thread reader = fork func() { + try { + return fgets(f); + } catch Thread::signal(int i) { + return ""; + } + }(); + + thread killer = fork func() { + try { + sleep (timeout); + Thread::send_signal(reader, 1); + } catch Thread::signal(int i) { + return; + } + }(); + + poly v = Thread::join(reader); + Thread::send_signal(killer, 1); + Thread::join(killer); + if (is_string(v)) + return v; + return ""; +} + +void flush_input(file f) { + for (;;) { + string s = timed_read(f, 200); + if (s == "") + break; + } +} + +string[*] gps(file f) { + string[...] x = {}; + + flush_input(f); + fprintf (f, "g\nv\n"); + flush(f); + for (;;) { + string l = timed_read(f, 1000); + if (l == "") { + File::fprintf(stderr, "Read timedout\n"); + exit(1); + } + x[dim(x)] = l; + if (String::index(l, "software-version") == 0) + break; + } + return x; +} + +string[*] find_gps(string[*] s, string match) { + for (int i = 0; i < dim(s); i++) + if (String::index(s[i], match) >= 0) + return String::wordsplit(s[i], " "); + return (string[*]) {}; +} + +bool +do_gps(file f) { + + string[*] i = gps(f); + string[*] flags = find_gps(i, "Flags:"); + string[*] sats = find_gps(i, "Sats:"); + + int actual_flags = string_to_integer(flags[1]); + + while ((actual_flags & (1 << 4)) == 0) { + printf("Flags: %s\n", flags[1]); + printf("Sats: %s\n", sats[1]); + + sleep(1000); + i = gps(f); + flags = find_gps(i, "Flags:"); + sats = find_gps(i, "Sats:"); + + actual_flags = string_to_integer(flags[1]); + } + + printf("Flags: %s\n", flags[1]); + printf("Sats: %s\n", sats[1]); + printf("GPS locked\n"); + return true; +} + +void main () { + string name = argv[1]; + file f = open(name, "r+"); + bool ret = true; + + if (!do_gps(f)) + ret = false; + exit (ret? 0 : 1); +} + +main(); diff --git a/ao-bringup/test-telegps b/ao-bringup/test-telegps new file mode 100755 index 00000000..f3174485 --- /dev/null +++ b/ao-bringup/test-telegps @@ -0,0 +1,52 @@ +#!/bin/sh + +VERSION=1.0 +PRODUCT=TeleGPS +BASE=`echo $PRODUCT | tr 'A-Z' 'a-z'` + +echo "$PRODUCT-v$VERSION Test Program" +echo "Copyright 2014 by Bdale Garbee. Released under GPL v2" +echo +echo "Expectations:" +echo "\t$PRODUCT v$VERSION powered from USB" +echo + +ret=1 +ao-list | while read product serial dev; do + case "$product" in + "$PRODUCT-v$VERSION") + + echo "Testing $product $serial $dev" + + FLASHSIZE=2097152 + + echo "Testing flash" + ./test-flash "$dev" "$FLASHSIZE" + + case $? in + 0) + ;; + *) + echo "failed" + exit 1 + esac + + echo "Testing GPS" + ./test-gps "$dev" + + case $? in + 0) + ;; + *) + echo "failed" + exit 1 + esac + + echo "$PRODUCT-v$VERSION" serial "$serial" is ready to ship + ret=0 + ;; + *) + echo "Skipping $product $serial $dev" + ;; + esac +done diff --git a/ao-bringup/turnon_telegps b/ao-bringup/turnon_telegps new file mode 100755 index 00000000..123f0b54 --- /dev/null +++ b/ao-bringup/turnon_telegps @@ -0,0 +1,81 @@ +#!/bin/sh + +if [ -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 + +VERSION=1.0 +PRODUCT=TeleGPS +BASE=`echo $PRODUCT | tr 'A-Z' 'a-z'` +echo $FILE + +echo "$PRODUCT v$VERSION Turn-On and Calibration Program" +echo "Copyright 2014 by Bdale Garbee. Released under GPL v2" +echo +echo "Expectations:" +echo "\t$PRODUCT v$VERSION powered from USB" +echo "\t\twith ST-Link-V2 cabled to debug header" +echo + +case $# in + 1) + SERIAL="$1" + echo "$PRODUCT-$VERSION serial number: $SERIAL" + ;; + 0) + echo -n "$PRODUCT-$VERSION serial number: " + read SERIAL + ;; + *) + echo "Usage: $0 " 1>&2 + exit 1; + ;; +esac + +# +# Use released versions of everything +# +FLASH_FILE=~/altusmetrumllc/Binaries/loaders/telegps-v1.0-altos-flash-*.elf +ALTOS_FILE=~/altusmetrumllc/Binaries/telegps-v1.0-*.elf + +echo $FLASH_LPC $FLASH_FILE + +$FLASH_LPC $FLASH_FILE || exit 1 + +sleep 2 + +echo $USBLOAD $ALTOS_FILE + +$USBLOAD --serial=$SERIAL $ALTOS_FILE || exit 1 + +sleep 2 + +dev=`ao-list | awk '/TeleGPS-v'"$VERSION"'/ { print $3; exit(0); }'` + +case "$dev" in +/dev/tty*) + echo "TeleGPS found on $dev" + ;; +*) + echo 'No TeleGPS-v'"$VERSION"' found' + exit 1 + ;; +esac + +echo 'E 0' > $dev + +./test-telegps + +SERIAL=$SERIAL ./cal-freq $dev + +exit $? -- cgit v1.2.3