From: Bdale Garbee Date: Fri, 3 Jul 2020 02:20:59 +0000 (-0600) Subject: Merge branch 'master' into branch-1.9 X-Git-Tag: 1.9.4~1 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=8359fcc23a93a37ee3aee4c5d2ef183f18ea3f27;hp=b95d6674d29534363c1d8f46280c028864bdca10;p=fw%2Faltos Merge branch 'master' into branch-1.9 --- diff --git a/Makefile.am b/Makefile.am index fcf2652c..3793d717 100644 --- a/Makefile.am +++ b/Makefile.am @@ -63,7 +63,8 @@ fat_altos = \ src/telemega-v2.0/telemega-v2.0-$(VERSION).ihx \ src/telemega-v3.0/telemega-v3.0-$(VERSION).ihx \ src/telemega-v4.0/telemega-v4.0-$(VERSION).ihx \ - src/telemetrum-v2.0/telemetrum-v2.0-$(VERSION).ihx + src/telemetrum-v2.0/telemetrum-v2.0-$(VERSION).ihx \ + src/telemetrum-v3.0/telemetrum-v3.0-$(VERSION).ihx keithp-fat: fat ssh keithp.com mkdir -p public_html/altos-$(VERSION) diff --git a/ao-bringup/test-easytimer b/ao-bringup/test-easytimer new file mode 100755 index 00000000..f93164c6 --- /dev/null +++ b/ao-bringup/test-easytimer @@ -0,0 +1,38 @@ +#!/bin/sh + +VERSION=1 +PRODUCT=EasyTimer +BASE=`echo $PRODUCT | tr 'A-Z' 'a-z'` + +echo "$PRODUCT-v$VERSION Test Program" +echo "Copyright 2020 by Bdale Garbee. Released under GPL v3" +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" + + ./test-igniters $dev 0 1 + echo"" + + case $? in + 0) + ;; + *) + echo "failed" + exit 1 + esac + echo"" + + echo "$PRODUCT-v$VERSION" serial "$serial" is ready to ship + echo "\007" + ret=0 + ;; + esac +done diff --git a/ao-bringup/turnon_easytimer b/ao-bringup/turnon_easytimer new file mode 100755 index 00000000..8953f900 --- /dev/null +++ b/ao-bringup/turnon_easytimer @@ -0,0 +1,78 @@ +#!/bin/sh + +if [ -x /usr/bin/ao-flash-stm ]; then + FLASH_STM=/usr/bin/ao-flash-stm +else + echo "Can't find ao-flash-stm! 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 +REPO=~/altusmetrumllc/Binaries +PRODUCT=EasyTimer + +echo "$PRODUCT v$VERSION Turn-On and Calibration Program" +echo "Copyright 2020 by Bdale Garbee. Released under GPL v3" +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 + +echo $FLASH_STM + +$FLASH_STM $REPO/loaders/easytimer-v$VERSION*.elf + +sleep 3 + +$USBLOAD --serial=$SERIAL --force $REPO/easytimer-v$VERSION*.elf || exit 1 + +sleep 5 + +dev=`ao-list | awk '/EasyTimer-v'"$VERSION"'/ { print $3; exit(0); }'` + +case "$dev" in +/dev/tty*) + echo "EasyTimer found on $dev" + ;; +*) + echo 'No EasyTimer-v'"$VERSION"' found' + exit 1 + ;; +esac + +echo 'E 0' > $dev + +failed=1 +while [ $failed = 1 ]; do + ../ao-tools/ao-cal-accel/ao-cal-accel $dev + failed=$? +done + +echo 'E 1' > $dev + +./test-easytimer + +exit $? diff --git a/configure.ac b/configure.ac index ca5262b5..8a037767 100644 --- a/configure.ac +++ b/configure.ac @@ -18,13 +18,13 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) -AC_INIT([altos], 1.9.3) +AC_INIT([altos], 1.9.4) ANDROID_VERSION=27 AC_CONFIG_SRCDIR([src/kernel/ao.h]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE -RELEASE_DATE=2020-06-15 +RELEASE_DATE=2020-07-02 AC_SUBST(RELEASE_DATE) DOC_DATE=`LC_ALL=C date -d $RELEASE_DATE +'%d %b %Y'` diff --git a/doc/Makefile.am b/doc/Makefile.am index acb223ca..e56e2a55 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -17,6 +17,7 @@ FAKETIME=TZ=UTC faketime -f '$(RELEASE_DATE) 00:00:00 i0' endif RELNOTES_INC=\ + release-notes-1.9.4.inc \ release-notes-1.9.3.inc \ release-notes-1.9.2.inc \ release-notes-1.9.1.inc \ diff --git a/doc/easymini-release-notes.inc b/doc/easymini-release-notes.inc index 53af8597..990ee69f 100644 --- a/doc/easymini-release-notes.inc +++ b/doc/easymini-release-notes.inc @@ -1,5 +1,9 @@ [appendix] == Release Notes + :leveloffset: 2 + include::release-notes-1.9.4.adoc[] + + <<<< :leveloffset: 2 include::release-notes-1.9.3.adoc[] diff --git a/doc/release-notes-1.9.4.inc b/doc/release-notes-1.9.4.inc new file mode 100644 index 00000000..5067314a --- /dev/null +++ b/doc/release-notes-1.9.4.inc @@ -0,0 +1,20 @@ += Release Notes for Version 1.9.4 +include::release-head.adoc[] +:doctype: article + + Version 1.9.4 + + == AltOS + + * Fixed firmware for TeleDongle v3.0 and TeleBT v4.0. Version 1.9.3 bricked those + devices requiring them to be opened up to get them working again. + + * Fixed firmware for EasyMini v1.0. Changes in the storage + code caused it to use significantly more RAM which made the + interrupt stack smash into other data structures and cause + the device to panic at startup time. + + == AltosUI + + * Add TeleMetrum v3.0 firmware to the Linux and Mac OSX + AltosUI packages. diff --git a/doc/release-notes.inc b/doc/release-notes.inc index 042059bc..160128b2 100644 --- a/doc/release-notes.inc +++ b/doc/release-notes.inc @@ -1,5 +1,9 @@ [appendix] == Release Notes + :leveloffset: 2 + include::release-notes-1.9.4.adoc[] + + <<<< :leveloffset: 2 include::release-notes-1.9.3.adoc[] diff --git a/doc/telegps-release-notes.inc b/doc/telegps-release-notes.inc index c0a258f1..8b315ccb 100644 --- a/doc/telegps-release-notes.inc +++ b/doc/telegps-release-notes.inc @@ -1,5 +1,9 @@ [appendix] == Release Notes + :leveloffset: 2 + include::release-notes-1.9.4.adoc[] + + <<<< :leveloffset: 2 include::release-notes-1.9.3.adoc[] diff --git a/src/kernel/ao_storage.c b/src/kernel/ao_storage.c index 73b31c64..ca5fcb46 100644 --- a/src/kernel/ao_storage.c +++ b/src/kernel/ao_storage.c @@ -19,7 +19,7 @@ #include #include -#define AO_STORAGE_DATA_SIZE 256 +#define AO_STORAGE_DATA_SIZE 128 static uint8_t storage_data[AO_STORAGE_DATA_SIZE]; @@ -214,6 +214,9 @@ ao_storage_zapall(void) #if AO_STORAGE_TEST +#define AO_STORAGE_TEST_SIZE 256 +static uint8_t storage_test[AO_STORAGE_TEST_SIZE]; + static void ao_storage_failure(uint32_t pos, char *format, ...) { @@ -230,16 +233,16 @@ ao_storage_check_block(uint32_t pos, uint8_t value) uint32_t offset; uint32_t byte; - for (offset = 0; offset < ao_storage_block; offset += sizeof (storage_data)) { - if (!ao_storage_read(pos + offset, storage_data, sizeof (storage_data))) { + for (offset = 0; offset < ao_storage_block; offset += sizeof (storage_test)) { + if (!ao_storage_read(pos + offset, storage_test, sizeof (storage_test))) { ao_storage_failure(pos + offset, "read failed\n"); return 0; } - for (byte = 0; byte < sizeof (storage_data); byte++) - if (storage_data[byte] != value) { + for (byte = 0; byte < sizeof (storage_test); byte++) + if (storage_test[byte] != value) { ao_storage_failure(pos + offset + byte, "want %02x got %02x\n", - value, storage_data[byte]); + value, storage_test[byte]); return 0; } } @@ -252,10 +255,10 @@ ao_storage_fill_block(uint32_t pos, uint8_t value) uint32_t offset; uint32_t byte; - for (byte = 0; byte < sizeof (storage_data); byte++) - storage_data[byte] = value; - for (offset = 0; offset < ao_storage_block; offset += sizeof (storage_data)) { - if (!ao_storage_write(pos + offset, storage_data, sizeof (storage_data))) { + for (byte = 0; byte < sizeof (storage_test); byte++) + storage_test[byte] = value; + for (offset = 0; offset < ao_storage_block; offset += sizeof (storage_test)) { + if (!ao_storage_write(pos + offset, storage_test, sizeof (storage_test))) { ao_storage_failure(pos + offset, "write failed\n"); return 0; } @@ -269,17 +272,17 @@ ao_storage_check_incr_block(uint32_t pos) uint32_t offset; uint32_t byte; - for (offset = 0; offset < ao_storage_block; offset += sizeof (storage_data)) { - if (!ao_storage_read(pos + offset, storage_data, sizeof (storage_data))) { + for (offset = 0; offset < ao_storage_block; offset += sizeof (storage_test)) { + if (!ao_storage_read(pos + offset, storage_test, sizeof (storage_test))) { ao_storage_failure(pos + offset, "read failed\n"); return 0; } - for (byte = 0; byte < sizeof (storage_data); byte++) { + for (byte = 0; byte < sizeof (storage_test); byte++) { uint8_t value = offset + byte; - if (storage_data[byte] != value) { + if (storage_test[byte] != value) { ao_storage_failure(pos + offset + byte, "want %02x got %02x\n", - value, storage_data[byte]); + value, storage_test[byte]); return 0; } } @@ -293,10 +296,10 @@ ao_storage_fill_incr_block(uint32_t pos) uint32_t offset; uint32_t byte; - for (offset = 0; offset < ao_storage_block; offset += sizeof (storage_data)) { - for (byte = 0; byte < sizeof (storage_data); byte++) - storage_data[byte] = offset + byte; - if (!ao_storage_write(pos + offset, storage_data, sizeof (storage_data))) { + for (offset = 0; offset < ao_storage_block; offset += sizeof (storage_test)) { + for (byte = 0; byte < sizeof (storage_test); byte++) + storage_test[byte] = offset + byte; + if (!ao_storage_write(pos + offset, storage_test, sizeof (storage_test))) { ao_storage_failure(pos + offset, "write failed\n"); return 0; } @@ -369,13 +372,13 @@ ao_storage_fill(void) return; printf("erase "); flush(); ao_storage_erase(0, ao_storage_log_max); - for (pos = 0; pos < sizeof (storage_data); pos++) - storage_data[pos] = (uint8_t) pos; - for (pos = 0; pos < ao_storage_log_max; pos += sizeof (storage_data)) { + for (pos = 0; pos < sizeof (storage_test); pos++) + storage_test[pos] = (uint8_t) pos; + for (pos = 0; pos < ao_storage_log_max; pos += sizeof (storage_test)) { if ((pos & 0xffff) == 0) { printf("Fill 0x%x\n", pos); flush(); } - ao_storage_write(pos, storage_data, sizeof (storage_data)); + ao_storage_write(pos, storage_test, sizeof (storage_test)); } printf("Fill complete\n"); }