From 843fcab46d633e5bb6959286adeb68e41a4c30a3 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sun, 29 Jul 2012 19:44:56 -0700 Subject: altos: Add telefire-v0.1 Signed-off-by: Keith Packard --- src/telefire-v0.1/Makefile | 101 ++++++++++++++++++++++++++++++++++++++++ src/telefire-v0.1/ao_pins.h | 94 +++++++++++++++++++++++++++++++++++++ src/telefire-v0.1/ao_telefire.c | 41 ++++++++++++++++ 3 files changed, 236 insertions(+) create mode 100644 src/telefire-v0.1/Makefile create mode 100644 src/telefire-v0.1/ao_pins.h create mode 100644 src/telefire-v0.1/ao_telefire.c (limited to 'src/telefire-v0.1') diff --git a/src/telefire-v0.1/Makefile b/src/telefire-v0.1/Makefile new file mode 100644 index 00000000..09cb88fb --- /dev/null +++ b/src/telefire-v0.1/Makefile @@ -0,0 +1,101 @@ +# +# TeleFire build file +# + +TELEFIRE_VER=0.1 +TELEFIRE_DEF=0_1 + +vpath %.c ..:../core:../cc1111:../drivers:../product +vpath %.h ..:../core:../cc1111:../drivers:../product +vpath ao-make-product.5c ../util + +ifndef VERSION +include ../Version +endif + +INC = \ + ao.h \ + ao_pins.h \ + ao_arch.h \ + ao_arch_funcs.h \ + cc1111.h \ + ao_product.h + +CORE_SRC = \ + ao_cmd.c \ + ao_config.c \ + ao_convert.c \ + ao_mutex.c \ + ao_panic.c \ + ao_stdio.c \ + ao_storage.c \ + ao_task.c \ + ao_freq.c + +CC1111_SRC = \ + ao_adc.c \ + ao_aes.c \ + ao_beep.c \ + ao_dma.c \ + ao_intflash.c \ + ao_radio.c \ + ao_radio_cmac.c \ + ao_romconfig.c \ + ao_serial.c \ + ao_spi.c \ + ao_string.c \ + ao_timer.c \ + ao_usb.c \ + _bp.c + +DRIVER_SRC = \ + ao_pca9922.c \ + ao_74hc497.c \ + ao_pad.c + +PRODUCT_SRC = \ + ao_telefire.c + +SRC = \ + $(CORE_SRC) \ + $(CC1111_SRC) \ + $(DRIVER_SRC) \ + $(PRODUCT_SRC) + +PROGNAME = telefire-v$(TELEFIRE_VER) +PROG = $(PROGNAME)-$(VERSION).ihx +PRODUCT=TeleFire-v$(TELEFIRE_VER) +PRODUCT_DEF=-DTELEFIRE_V_$(TELEFIRE_DEF) +IDPRODUCT=0x000f +CODESIZE=0x6700 + +include ../cc1111/Makefile.cc1111 + +NICKLE=nickle +CHECK_STACK=sh ../util/check-stack + +V=0 +# The user has explicitly enabled quiet compilation. +ifeq ($(V),0) +quiet = @printf " $1 $2 $@\n"; $($1) +endif +# Otherwise, print the full command line. +quiet ?= $($1) + +all: ../$(PROG) + +../$(PROG): $(REL) Makefile + $(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(REL) && cp $(PROG) $(PMAP) .. + $(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM) || rm $@ + +ao_product.h: ao-make-product.5c ../Version + $(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@ + +distclean: clean + +clean: clean-cc1111 + +install: + +uninstall: + diff --git a/src/telefire-v0.1/ao_pins.h b/src/telefire-v0.1/ao_pins.h new file mode 100644 index 00000000..4cf523fc --- /dev/null +++ b/src/telefire-v0.1/ao_pins.h @@ -0,0 +1,94 @@ +/* + * Copyright © 2010 Keith Packard + * + * 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. + */ + +#ifndef _AO_PINS_H_ +#define _AO_PINS_H_ + +#define HAS_RADIO 1 + +#define HAS_FLIGHT 0 +#define HAS_USB 1 +#define HAS_BEEP 1 +#define HAS_GPS 0 +#define HAS_SERIAL_1 0 +#define HAS_ADC 1 +#define HAS_DBG 0 +#define HAS_EEPROM 1 +#define HAS_LOG 0 +#define USE_INTERNAL_FLASH 1 +#define DBG_ON_P1 0 +#define IGNITE_ON_P2 0 +#define IGNITE_ON_P1 1 +#define IGNITE_ON_P0 0 +#define PACKET_HAS_MASTER 0 +#define PACKET_HAS_SLAVE 0 +#define AO_LED_RED 2 +#define AO_LED_GREEN 1 +#define LEDS_AVAILABLE (0xff) +#define HAS_EXTERNAL_TEMP 0 +#define HAS_ACCEL_REF 0 +#define SPI_CS_ON_P1 1 +#define HAS_AES 1 + +#define SPI_CS_PORT P1 +#define SPI_CS_SEL P1SEL +#define SPI_CS_DIR P1DIR + +#define AO_74HC497_CS_PORT P1 +#define AO_74HC497_CS_PIN 4 +#define AO_74HC497_CS P1_4 + +#define AO_PCA9922_CS_PORT P1 +#define AO_PCA9922_CS_PIN 4 +#define AO_PCA9922_CS P1_4 + +#define AO_PAD_NUM 4 +#define AO_PAD_PORT P1 +#define AO_PAD_DIR P1DIR +#define AO_PAD_PIN_0 0 +#define AO_PAD_0 P1_0 +#define AO_PAD_PIN_1 1 +#define AO_PAD_1 P1_1 +#define AO_PAD_PIN_2 2 +#define AO_PAD_2 P1_2 +#define AO_PAD_PIN_3 3 +#define AO_PAD_3 P1_3 +#define AO_PAD_ALL_PINS ((1 << AO_PAD_PIN_0) | (1 << AO_PAD_PIN_1) | (1 << AO_PAD_PIN_2) | (1 << AO_PAD_PIN_3)) + +/* test these values with real igniters */ +#define AO_PAD_RELAY_CLOSED 3524 +#define AO_PAD_NO_IGNITER 16904 +#define AO_PAD_GOOD_IGNITER 22514 + +struct ao_adc { + int16_t sense[4]; + int16_t pyro; + int16_t batt; +}; + +#define AO_ADC_DUMP(p) \ + printf ("tick: %5u 0: %5d 1: %5d 2: %5d 3: %5d pyro: %5d batt %5d\n", \ + (p)->adc.sense[0], \ + (p)->adc.sense[1], \ + (p)->adc.sense[2], \ + (p)->adc.sense[3], \ + (p)->adc.pyro, \ + (p)->adc.batt) + +#define AO_ADC_PINS ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5)) + +#endif /* _AO_PINS_H_ */ diff --git a/src/telefire-v0.1/ao_telefire.c b/src/telefire-v0.1/ao_telefire.c new file mode 100644 index 00000000..96413a63 --- /dev/null +++ b/src/telefire-v0.1/ao_telefire.c @@ -0,0 +1,41 @@ +/* + * Copyright © 2012 Keith Packard + * + * 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_pins.h" + +void +main(void) +{ + ao_clock_init(); + + ao_led_init(LEDS_AVAILABLE); + + ao_timer_init(); + ao_adc_init(); + ao_beep_init(); + ao_cmd_init(); + ao_spi_init(); + ao_storage_init(); + ao_usb_init(); + ao_radio_init(); + ao_aes_init(); + ao_radio_cmac_init(); + ao_pad_init(); + ao_config_init(); + ao_start_scheduler(); +} -- cgit v1.2.3 From 7ecb429fe4682faf209452b1738ff3c8096fc5d5 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 24 Aug 2012 00:46:55 -0700 Subject: altos: Configure telefire SPI and LEDs correctly This places the telefire SPI bus on USART1 option 2 and marks the various LED functions with symbolic names. Signed-off-by: Keith Packard --- src/telefire-v0.1/Makefile | 1 + src/telefire-v0.1/ao_pins.h | 22 ++++++++++++++++++++-- src/telefire-v0.1/ao_telefire.c | 9 +++++---- 3 files changed, 26 insertions(+), 6 deletions(-) (limited to 'src/telefire-v0.1') diff --git a/src/telefire-v0.1/Makefile b/src/telefire-v0.1/Makefile index 09cb88fb..cfa4b3ed 100644 --- a/src/telefire-v0.1/Makefile +++ b/src/telefire-v0.1/Makefile @@ -18,6 +18,7 @@ INC = \ ao_pins.h \ ao_arch.h \ ao_arch_funcs.h \ + ao_pad.h \ cc1111.h \ ao_product.h diff --git a/src/telefire-v0.1/ao_pins.h b/src/telefire-v0.1/ao_pins.h index 4cf523fc..d3a9e9e3 100644 --- a/src/telefire-v0.1/ao_pins.h +++ b/src/telefire-v0.1/ao_pins.h @@ -29,6 +29,7 @@ #define HAS_DBG 0 #define HAS_EEPROM 1 #define HAS_LOG 0 +#define HAS_PAD 1 #define USE_INTERNAL_FLASH 1 #define DBG_ON_P1 0 #define IGNITE_ON_P2 0 @@ -36,8 +37,17 @@ #define IGNITE_ON_P0 0 #define PACKET_HAS_MASTER 0 #define PACKET_HAS_SLAVE 0 -#define AO_LED_RED 2 -#define AO_LED_GREEN 1 + +#define AO_LED_CONTINUITY(c) (1 << (c)) +#define AO_LED_CONTINUITY_MASK (0xf) +#define AO_LED_RX 0x10 +#define AO_LED_TX 0x20 +#define AO_LED_ARMED 0x40 +#define AO_LED_POWER 0x80 + +#define AO_LED_RED AO_LED_TX +#define AO_LED_GREEN AO_LED_RX + #define LEDS_AVAILABLE (0xff) #define HAS_EXTERNAL_TEMP 0 #define HAS_ACCEL_REF 0 @@ -48,6 +58,13 @@ #define SPI_CS_SEL P1SEL #define SPI_CS_DIR P1DIR +#define SPI_CONST 0x00 + +#define HAS_SPI_0 0 +#define HAS_SPI_1 1 +#define SPI_1_ALT_1 0 +#define SPI_1_ALT_2 1 + #define AO_74HC497_CS_PORT P1 #define AO_74HC497_CS_PIN 4 #define AO_74HC497_CS P1_4 @@ -82,6 +99,7 @@ struct ao_adc { #define AO_ADC_DUMP(p) \ printf ("tick: %5u 0: %5d 1: %5d 2: %5d 3: %5d pyro: %5d batt %5d\n", \ + (p)->tick, \ (p)->adc.sense[0], \ (p)->adc.sense[1], \ (p)->adc.sense[2], \ diff --git a/src/telefire-v0.1/ao_telefire.c b/src/telefire-v0.1/ao_telefire.c index 96413a63..c1335d66 100644 --- a/src/telefire-v0.1/ao_telefire.c +++ b/src/telefire-v0.1/ao_telefire.c @@ -15,8 +15,9 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include "ao.h" -#include "ao_pins.h" +#include +#include +#include void main(void) @@ -30,11 +31,11 @@ main(void) ao_beep_init(); ao_cmd_init(); ao_spi_init(); + ao_74hc497_init(); ao_storage_init(); ao_usb_init(); ao_radio_init(); - ao_aes_init(); - ao_radio_cmac_init(); +// ao_aes_init(); ao_pad_init(); ao_config_init(); ao_start_scheduler(); -- cgit v1.2.3 From 89f1a685a02c7808cf03853aa9a5ee50c6baf49e Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sun, 26 Aug 2012 09:43:34 -0700 Subject: altos: Allow sharing of radio DMA with aes engine otherwise, telefire doesn't have enough DMA channels. Signed-off-by: Keith Packard --- src/cc1111/ao_aes.c | 4 ++++ src/telefire-v0.1/ao_pins.h | 1 + src/telefire-v0.1/ao_telefire.c | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src/telefire-v0.1') diff --git a/src/cc1111/ao_aes.c b/src/cc1111/ao_aes.c index d50fecfb..0e32abf6 100644 --- a/src/cc1111/ao_aes.c +++ b/src/cc1111/ao_aes.c @@ -136,7 +136,11 @@ void ao_aes_init(void) { ao_aes_dma_in = ao_dma_alloc(&ao_aes_dma_in_done); +#if DMA_SHARE_AES_RADIO + ao_aes_dma_out = ao_radio_dma; +#else ao_aes_dma_out = ao_dma_alloc(&ao_aes_dma_out_done); +#endif S0CON = 0; ENCIE = 1; } diff --git a/src/telefire-v0.1/ao_pins.h b/src/telefire-v0.1/ao_pins.h index d3a9e9e3..eecf783e 100644 --- a/src/telefire-v0.1/ao_pins.h +++ b/src/telefire-v0.1/ao_pins.h @@ -53,6 +53,7 @@ #define HAS_ACCEL_REF 0 #define SPI_CS_ON_P1 1 #define HAS_AES 1 +#define DMA_SHARE_AES_RADIO 1 #define SPI_CS_PORT P1 #define SPI_CS_SEL P1SEL diff --git a/src/telefire-v0.1/ao_telefire.c b/src/telefire-v0.1/ao_telefire.c index c1335d66..210be08b 100644 --- a/src/telefire-v0.1/ao_telefire.c +++ b/src/telefire-v0.1/ao_telefire.c @@ -35,7 +35,7 @@ main(void) ao_storage_init(); ao_usb_init(); ao_radio_init(); -// ao_aes_init(); + ao_aes_init(); ao_pad_init(); ao_config_init(); ao_start_scheduler(); -- cgit v1.2.3 From 61d094f281431e9f11f806454981da8e1245fb5c Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 27 Aug 2012 13:51:53 -0700 Subject: altos: sdcdb rc file for telefire Signed-off-by: Keith Packard --- src/telefire-v0.1/.sdcdbrc | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 src/telefire-v0.1/.sdcdbrc (limited to 'src/telefire-v0.1') diff --git a/src/telefire-v0.1/.sdcdbrc b/src/telefire-v0.1/.sdcdbrc new file mode 100644 index 00000000..b9f6129c --- /dev/null +++ b/src/telefire-v0.1/.sdcdbrc @@ -0,0 +1,2 @@ +--directory=../cc1111:../product:../core:../drivers:. + -- cgit v1.2.3 From 27a879b4069ccedf8bbe39d7dbecf45000f29d8c Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 28 Aug 2012 18:12:27 -0700 Subject: altos: Include the radio_cmac debug commands in telefire Just temporary debugging Signed-off-by: Keith Packard --- src/telefire-v0.1/Makefile | 3 ++- src/telefire-v0.1/ao_telefire.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'src/telefire-v0.1') diff --git a/src/telefire-v0.1/Makefile b/src/telefire-v0.1/Makefile index cfa4b3ed..712b2e8b 100644 --- a/src/telefire-v0.1/Makefile +++ b/src/telefire-v0.1/Makefile @@ -52,7 +52,8 @@ CC1111_SRC = \ DRIVER_SRC = \ ao_pca9922.c \ ao_74hc497.c \ - ao_pad.c + ao_pad.c \ + ao_radio_cmac_cmd.c PRODUCT_SRC = \ ao_telefire.c diff --git a/src/telefire-v0.1/ao_telefire.c b/src/telefire-v0.1/ao_telefire.c index 210be08b..cc0f668f 100644 --- a/src/telefire-v0.1/ao_telefire.c +++ b/src/telefire-v0.1/ao_telefire.c @@ -18,6 +18,7 @@ #include #include #include +#include void main(void) @@ -37,6 +38,7 @@ main(void) ao_radio_init(); ao_aes_init(); ao_pad_init(); +// ao_radio_cmac_cmd_init(); ao_config_init(); ao_start_scheduler(); } -- cgit v1.2.3 From 354c1fed7f06c2c45c661e7265c2ac4bc47e2750 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 30 Aug 2012 16:22:51 -0500 Subject: altos: Add a bunch of .gitignore entries Clean up the git status output Signed-off-by: Keith Packard --- ao-tools/ao-stmload/.gitignore | 1 + src/spiradio-v0.1/.gitignore | 2 ++ src/stm-bringup/bringup.ld | 69 ++++++++++++++++++++++++++++++++++++++++++ src/telefire-v0.1/.gitignore | 2 ++ src/test/.gitignore | 3 ++ 5 files changed, 77 insertions(+) create mode 100644 ao-tools/ao-stmload/.gitignore create mode 100644 src/spiradio-v0.1/.gitignore create mode 100644 src/stm-bringup/bringup.ld create mode 100644 src/telefire-v0.1/.gitignore (limited to 'src/telefire-v0.1') diff --git a/ao-tools/ao-stmload/.gitignore b/ao-tools/ao-stmload/.gitignore new file mode 100644 index 00000000..dedb0094 --- /dev/null +++ b/ao-tools/ao-stmload/.gitignore @@ -0,0 +1 @@ +ao-stmload diff --git a/src/spiradio-v0.1/.gitignore b/src/spiradio-v0.1/.gitignore new file mode 100644 index 00000000..8e39138e --- /dev/null +++ b/src/spiradio-v0.1/.gitignore @@ -0,0 +1,2 @@ +spiradio-* +ao_product.h diff --git a/src/stm-bringup/bringup.ld b/src/stm-bringup/bringup.ld new file mode 100644 index 00000000..10d50cd6 --- /dev/null +++ b/src/stm-bringup/bringup.ld @@ -0,0 +1,69 @@ +/* + * Copyright © 2012 Keith Packard + * + * 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. + */ + +MEMORY { + rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K + ram (!w) : ORIGIN = 0x20000000, LENGTH = 16K +} + +INCLUDE registers.ld + +EXTERN (stm_interrupt_vector) + +SECTIONS { + /* + * Rom contents + */ + + .text ORIGIN(rom) : { + __text_start__ = .; + *(.interrupt) /* Interrupt vectors */ + + *(.text*) /* Executable code */ + *(.rodata*) /* Constants */ + } > rom + + .ARM.exidx : { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + __text_end__ = .; + } > rom + + . = ORIGIN(ram); + __data_start__ = .; + + /* Data -- relocated to RAM, but written to ROM + */ + .data : AT (ADDR(.ARM.exidx) + SIZEOF (.ARM.exidx)) { + *(.data) /* initialized data */ + __data_end__ = .; + __bss_start__ = .; + } >ram + + .bss : { + *(.bss) + *(COMMON) + __bss_end__ = .; + } >ram + + PROVIDE(__stack__ = ORIGIN(ram) + LENGTH(ram)); + PROVIDE(end = .); + +} + +ENTRY(start); + + diff --git a/src/telefire-v0.1/.gitignore b/src/telefire-v0.1/.gitignore new file mode 100644 index 00000000..4d4f4200 --- /dev/null +++ b/src/telefire-v0.1/.gitignore @@ -0,0 +1,2 @@ +telefire-* +ao_product.h diff --git a/src/test/.gitignore b/src/test/.gitignore index 33c7ef35..5d528ab9 100644 --- a/src/test/.gitignore +++ b/src/test/.gitignore @@ -4,3 +4,6 @@ ao_flight_test_accel ao_gps_test ao_gps_test_skytraq ao_convert_test +ao_convert_pa_test +ao_fec_test +ao_flight_test_noisy_accel -- cgit v1.2.3