summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/avr-demo/ao_demo.c2
-rw-r--r--src/product/ao_teledongle.c2
-rw-r--r--src/product/ao_telelaunch.c2
-rw-r--r--src/product/ao_telemetrum.c2
-rw-r--r--src/product/ao_telemini.c2
-rw-r--r--src/product/ao_telenano.c2
-rw-r--r--src/product/ao_telepyro.c2
-rw-r--r--src/product/ao_telescience.c2
-rw-r--r--src/product/ao_teleterra.c2
-rw-r--r--src/product/ao_teleterra_0_2.c2
-rw-r--r--src/product/ao_test.c2
-rw-r--r--src/product/ao_tidongle.c3
-rw-r--r--src/spiradio-v0.1/ao_spiradio.c2
-rw-r--r--src/stm-demo/ao_demo.c2
-rw-r--r--src/stm-flash/ao_stm_flash.c137
-rw-r--r--src/teleballoon-v1.1/ao_teleballoon.c2
-rw-r--r--src/telebt-v1.0/ao_telebt.c3
-rw-r--r--src/telefire-v0.1/ao_telefire.c2
-rw-r--r--src/telelco-v0.1/ao_telelco.c2
-rw-r--r--src/telescience-v0.2/ao_telescience.c4
-rw-r--r--src/teleshield-v0.1/ao_teleshield.c1
21 files changed, 179 insertions, 1 deletions
diff --git a/src/avr-demo/ao_demo.c b/src/avr-demo/ao_demo.c
index 756dd0d4..e35babb3 100644
--- a/src/avr-demo/ao_demo.c
+++ b/src/avr-demo/ao_demo.c
@@ -34,6 +34,8 @@ main(void)
{
ao_clock_init();
+ ao_task_init();
+
ao_serial_init();
ao_led_init(LEDS_AVAILABLE);
diff --git a/src/product/ao_teledongle.c b/src/product/ao_teledongle.c
index 25ebe73e..8bfd8b84 100644
--- a/src/product/ao_teledongle.c
+++ b/src/product/ao_teledongle.c
@@ -26,6 +26,8 @@ main(void)
/* Turn on the LED until the system is stable */
ao_led_init(LEDS_AVAILABLE);
ao_led_on(AO_LED_RED);
+ ao_task_init();
+
ao_timer_init();
ao_cmd_init();
ao_usb_init();
diff --git a/src/product/ao_telelaunch.c b/src/product/ao_telelaunch.c
index b6e4bfc1..dde66090 100644
--- a/src/product/ao_telelaunch.c
+++ b/src/product/ao_telelaunch.c
@@ -27,6 +27,8 @@ main(void)
ao_led_init(LEDS_AVAILABLE);
ao_led_on(AO_LED_RED);
+ ao_task_init();
+
ao_timer_init();
ao_adc_init();
ao_beep_init();
diff --git a/src/product/ao_telemetrum.c b/src/product/ao_telemetrum.c
index ea77f5af..221498d6 100644
--- a/src/product/ao_telemetrum.c
+++ b/src/product/ao_telemetrum.c
@@ -42,6 +42,8 @@ main(void)
while (P1_3 == 0)
;
}
+ ao_task_init();
+
ao_timer_init();
ao_adc_init();
ao_beep_init();
diff --git a/src/product/ao_telemini.c b/src/product/ao_telemini.c
index 21551ee9..a0d8e18a 100644
--- a/src/product/ao_telemini.c
+++ b/src/product/ao_telemini.c
@@ -46,6 +46,8 @@ main(void)
;
}
+ ao_task_init();
+
ao_timer_init();
ao_adc_init();
ao_cmd_init();
diff --git a/src/product/ao_telenano.c b/src/product/ao_telenano.c
index d91983d0..77750efd 100644
--- a/src/product/ao_telenano.c
+++ b/src/product/ao_telenano.c
@@ -28,6 +28,8 @@ main(void)
ao_led_init(LEDS_AVAILABLE);
ao_led_on(AO_LED_RED);
+ ao_task_init();
+
ao_timer_init();
ao_adc_init();
ao_cmd_init();
diff --git a/src/product/ao_telepyro.c b/src/product/ao_telepyro.c
index 79454fb7..6f09be64 100644
--- a/src/product/ao_telepyro.c
+++ b/src/product/ao_telepyro.c
@@ -25,6 +25,8 @@ main(void)
PORTE |= (1 << 6);
DDRE |= (1 << 6);
+ ao_task_init();
+
ao_avr_stdio_init();
ao_timer_init();
ao_cmd_init();
diff --git a/src/product/ao_telescience.c b/src/product/ao_telescience.c
index d448d318..2888c266 100644
--- a/src/product/ao_telescience.c
+++ b/src/product/ao_telescience.c
@@ -28,6 +28,8 @@ main(void)
PORTE |= (1 << 6);
DDRE |= (1 << 6);
+ ao_task_init();
+
ao_avr_stdio_init();
ao_timer_init();
ao_cmd_init();
diff --git a/src/product/ao_teleterra.c b/src/product/ao_teleterra.c
index d696b914..e739ae0b 100644
--- a/src/product/ao_teleterra.c
+++ b/src/product/ao_teleterra.c
@@ -26,6 +26,8 @@ main(void)
/* Turn on the red LED until the system is stable */
ao_led_init(AO_LED_RED|AO_LED_GREEN);
ao_led_on(AO_LED_RED);
+ ao_task_init();
+
ao_timer_init();
ao_beep_init();
ao_cmd_init();
diff --git a/src/product/ao_teleterra_0_2.c b/src/product/ao_teleterra_0_2.c
index 68f02596..4f7530f7 100644
--- a/src/product/ao_teleterra_0_2.c
+++ b/src/product/ao_teleterra_0_2.c
@@ -23,6 +23,8 @@ main(void)
{
ao_clock_init();
+ ao_task_init();
+
ao_timer_init();
ao_beep_init();
ao_cmd_init();
diff --git a/src/product/ao_test.c b/src/product/ao_test.c
index 14c2eb75..273a73b5 100644
--- a/src/product/ao_test.c
+++ b/src/product/ao_test.c
@@ -102,6 +102,8 @@ main(void)
{
ao_clock_init();
+ ao_task_init();
+
// ao_add_task(&blink_0_task, blink_0);
// ao_add_task(&blink_1_task, blink_1);
// ao_add_task(&wakeup_task, wakeup);
diff --git a/src/product/ao_tidongle.c b/src/product/ao_tidongle.c
index cba0b122..b1a96bdd 100644
--- a/src/product/ao_tidongle.c
+++ b/src/product/ao_tidongle.c
@@ -27,6 +27,9 @@ main(void)
/* Turn on the LED until the system is stable */
ao_led_init(AO_LED_RED);
ao_led_on(AO_LED_RED);
+
+ ao_task_init();
+
ao_timer_init();
ao_cmd_init();
ao_usb_init();
diff --git a/src/spiradio-v0.1/ao_spiradio.c b/src/spiradio-v0.1/ao_spiradio.c
index d3647cc7..de9ea706 100644
--- a/src/spiradio-v0.1/ao_spiradio.c
+++ b/src/spiradio-v0.1/ao_spiradio.c
@@ -25,6 +25,8 @@ main(void)
ao_led_init(LEDS_AVAILABLE);
+ ao_task_init();
+
ao_serial_init();
ao_timer_init();
ao_cmd_init();
diff --git a/src/stm-demo/ao_demo.c b/src/stm-demo/ao_demo.c
index b82cb735..9ee0be03 100644
--- a/src/stm-demo/ao_demo.c
+++ b/src/stm-demo/ao_demo.c
@@ -183,6 +183,8 @@ main(void)
{
ao_clock_init();
+ ao_task_init();
+
ao_serial_init();
ao_timer_init();
ao_dma_init();
diff --git a/src/stm-flash/ao_stm_flash.c b/src/stm-flash/ao_stm_flash.c
new file mode 100644
index 00000000..df466d85
--- /dev/null
+++ b/src/stm-flash/ao_stm_flash.c
@@ -0,0 +1,137 @@
+/*
+ * Copyright © 2011 Keith Packard <keithp@keithp.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+#include "ao.h"
+#include <ao_exti.h>
+#include <ao_boot.h>
+#include <ao_flash_stm.h>
+
+void
+ao_panic(uint8_t reason)
+{
+ for (;;);
+}
+
+void
+ao_application(void)
+{
+ ao_boot_reboot(AO_BOOT_APPLICATION_BASE);
+}
+
+static uint32_t
+ao_cmd_hex32(void)
+{
+ __pdata uint8_t r = ao_cmd_lex_error;
+ int8_t n;
+ uint32_t v = 0;
+
+ ao_cmd_white();
+ for(;;) {
+ n = ao_cmd_hexchar(ao_cmd_lex_c);
+ if (n < 0)
+ break;
+ v = (v << 4) | n;
+ r = ao_cmd_success;
+ ao_cmd_lex();
+ }
+ if (r != ao_cmd_success)
+ ao_cmd_status = r;
+ return v;
+}
+
+void
+ao_block_erase(void)
+{
+ uint32_t addr = ao_cmd_hex32();
+ uint32_t *p = (uint32_t *) addr;
+
+ ao_flash_erase_page(p);
+}
+
+void
+ao_block_write(void)
+{
+ uint32_t addr = ao_cmd_hex32();
+ uint32_t *p = (uint32_t *) addr;
+ union {
+ uint8_t data8[256];
+ uint32_t data32[64];
+ } u;
+ uint16_t i;
+
+ if (addr < 0x08002000 || 0x08200000 <= addr) {
+ puts("Invalid address");
+ return;
+ }
+ for (i = 0; i < 256; i++)
+ u.data8[i] = i;
+ ao_flash_page(p, u.data32);
+}
+
+static void
+puthex(uint8_t c)
+{
+ c &= 0xf;
+ if (c < 10)
+ c += '0';
+ else
+ c += 'a' - 10;
+ putchar (c);
+}
+
+void
+ao_block_read(void)
+{
+ uint32_t addr = ao_cmd_hex32();
+ uint8_t *p = (uint8_t *) addr;
+ uint16_t i;
+ uint8_t c;
+
+ for (i = 0; i < 256; i++) {
+ c = *p++;
+ puthex(c);
+ puthex(c>>4);
+ if ((i & 0xf) == 0xf)
+ putchar('\n');
+ }
+}
+
+__code struct ao_cmds ao_flash_cmds[] = {
+ { ao_application, "a\0Switch to application" },
+ { ao_block_erase, "e <addr>\0Erase block." },
+ { ao_block_write, "W <addr>\0Write block. 256 binary bytes follow newline" },
+ { ao_block_read, "R <addr>\0Read block. Returns 256 bytes" },
+ { 0, NULL },
+};
+
+int
+main(void)
+{
+ ao_clock_init();
+
+ ao_task_init();
+
+ ao_timer_init();
+// ao_dma_init();
+ ao_cmd_init();
+// ao_exti_init();
+ ao_usb_init();
+
+ ao_cmd_register(&ao_flash_cmds[0]);
+ ao_start_scheduler();
+ return 0;
+}
diff --git a/src/teleballoon-v1.1/ao_teleballoon.c b/src/teleballoon-v1.1/ao_teleballoon.c
index c8bf7760..867e98ab 100644
--- a/src/teleballoon-v1.1/ao_teleballoon.c
+++ b/src/teleballoon-v1.1/ao_teleballoon.c
@@ -52,6 +52,8 @@ main(void)
while (P1_3 == 0)
;
}
+ ao_task_init();
+
ao_timer_init();
ao_adc_init();
ao_beep_init();
diff --git a/src/telebt-v1.0/ao_telebt.c b/src/telebt-v1.0/ao_telebt.c
index 4a50a9d4..935cde7d 100644
--- a/src/telebt-v1.0/ao_telebt.c
+++ b/src/telebt-v1.0/ao_telebt.c
@@ -25,6 +25,9 @@ main(void)
/* Turn on the LED until the system is stable */
ao_led_init(LEDS_AVAILABLE);
ao_led_on(AO_LED_RED);
+
+ ao_task_init();
+
ao_timer_init();
ao_cmd_init();
ao_usb_init();
diff --git a/src/telefire-v0.1/ao_telefire.c b/src/telefire-v0.1/ao_telefire.c
index cc0f668f..afa09e20 100644
--- a/src/telefire-v0.1/ao_telefire.c
+++ b/src/telefire-v0.1/ao_telefire.c
@@ -27,6 +27,8 @@ main(void)
ao_led_init(LEDS_AVAILABLE);
+ ao_task_init();
+
ao_timer_init();
ao_adc_init();
ao_beep_init();
diff --git a/src/telelco-v0.1/ao_telelco.c b/src/telelco-v0.1/ao_telelco.c
index 080a140b..70665ec6 100644
--- a/src/telelco-v0.1/ao_telelco.c
+++ b/src/telelco-v0.1/ao_telelco.c
@@ -36,6 +36,8 @@ main(void)
ao_led_init(LEDS_AVAILABLE);
ao_led_on(AO_LED_GREEN);
+ ao_task_init();
+
ao_timer_init();
ao_spi_init();
diff --git a/src/telescience-v0.2/ao_telescience.c b/src/telescience-v0.2/ao_telescience.c
index 2fb3186a..74eef8f4 100644
--- a/src/telescience-v0.2/ao_telescience.c
+++ b/src/telescience-v0.2/ao_telescience.c
@@ -29,9 +29,11 @@ main(void)
ao_mpu_init();
#endif
- ao_task_init();
ao_led_init(LEDS_AVAILABLE);
ao_led_on(AO_LED_GREEN);
+
+ ao_task_init();
+
ao_timer_init();
ao_spi_init();
diff --git a/src/teleshield-v0.1/ao_teleshield.c b/src/teleshield-v0.1/ao_teleshield.c
index 4c32817a..d602f646 100644
--- a/src/teleshield-v0.1/ao_teleshield.c
+++ b/src/teleshield-v0.1/ao_teleshield.c
@@ -29,6 +29,7 @@ main(void)
/* Turn on the LED until the system is stable */
ao_led_init(LEDS_AVAILABLE);
ao_led_on(AO_LED_RED);
+ ao_task_init();
ao_timer_init();
ao_cmd_init();
ao_spi_init();