diff options
| author | Keith Packard <keithp@keithp.com> | 2011-12-27 15:37:28 -0800 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2011-12-27 15:37:28 -0800 | 
| commit | 791c137728dd3398bd7275be13cc9e6be96d7af4 (patch) | |
| tree | 88d26deb2a28df29eec068308d39c8d0f9bedec6 /src | |
| parent | eff8611e3eb19853b06acfcd7e978c9046cd5f78 (diff) | |
altos: Add teleshield directory and bring-up code
This is cobbled together from various existing bits, but should at
least provide some ability to test a teleshield board.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/teleshield-v0.1/.gitignore | 2 | ||||
| -rw-r--r-- | src/teleshield-v0.1/Makefile | 112 | ||||
| -rw-r--r-- | src/teleshield-v0.1/ao_pins.h | 217 | ||||
| -rw-r--r-- | src/teleshield-v0.1/ao_teleshield.c | 48 | 
4 files changed, 379 insertions, 0 deletions
diff --git a/src/teleshield-v0.1/.gitignore b/src/teleshield-v0.1/.gitignore new file mode 100644 index 00000000..3ae78d33 --- /dev/null +++ b/src/teleshield-v0.1/.gitignore @@ -0,0 +1,2 @@ +teleshield-* +ao_product.h diff --git a/src/teleshield-v0.1/Makefile b/src/teleshield-v0.1/Makefile new file mode 100644 index 00000000..58c2b65a --- /dev/null +++ b/src/teleshield-v0.1/Makefile @@ -0,0 +1,112 @@ +# +# TeleShield build file +# +# The various telemetrum versions differ only +# in which flash and GPS drivers are included, +# so the per-board makefiles simply define +# TM_VER, TM_DEF, TM_INC and TM_SRC and include +# this file + +TELESHIELD_VER=0.1 +TELESHIELD_DEF=0_1 + +TELESHIELD_INC = + +TELESHIELD_SRC = \ +	ao_beep.c \ +	ao_btm.c \ +	ao_spi.c + +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 \ +	cc1111.h \ +	ao_product.h \ +	$(TELESHIELD_INC) + +CORE_SRC = \ +	ao_cmd.c \ +	ao_config.c \ +	ao_monitor.c \ +	ao_mutex.c \ +	ao_panic.c \ +	ao_state.c \ +	ao_storage.c \ +	ao_stdio.c \ +	ao_task.c + +CC1111_SRC = \ +	ao_dbg.c \ +	ao_dma.c \ +	ao_led.c \ +	ao_intflash.c \ +	ao_packet.c \ +	ao_packet_master.c \ +	ao_radio.c \ +	ao_romconfig.c \ +	ao_serial.c \ +	ao_string.c \ +	ao_timer.c \ +	ao_usb.c \ +	_bp.c + +DRIVER_SRC = \ +	$(TELESHIELD_SRC) + +PRODUCT_SRC = \ +	ao_teleshield.c + +SRC = \ +	$(CORE_SRC) \ +	$(CC1111_SRC) \ +	$(DRIVER_SRC) \ +	$(PRODUCT_SRC) + +PROG = teleshield-v$(TELESHIELD_VER)-$(VERSION).ihx +PRODUCT=TeleShield-v$(TELESHIELD_VER) +PRODUCT_DEF=-DTELESHIELD_V_$(TELESHIELD_DEF) +IDPRODUCT=0x0013 +CODESIZE=0x7800 + +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: +	rm -f $(ADB) $(ASM) $(LNK) $(LST) $(REL) $(RST) $(SYM) +	rm -f $(PROG) $(PCDB) $(PLNK) $(PMAP) $(PMEM) $(PAOM) +	rm -f ao_product.h +	rm -f ../$(PROG) ../$(PMAP) + +install: + +uninstall: + diff --git a/src/teleshield-v0.1/ao_pins.h b/src/teleshield-v0.1/ao_pins.h new file mode 100644 index 00000000..cbedb238 --- /dev/null +++ b/src/teleshield-v0.1/ao_pins.h @@ -0,0 +1,217 @@ +/* + * Copyright © 2010 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. + */ + +#ifndef _AO_PINS_H_ +#define _AO_PINS_H_ + +#if defined(TELESHIELD_V_0_1) +	#define HAS_FLIGHT		0 +	#define HAS_USB			1 +	#define HAS_BEEP		0 +	#define HAS_SERIAL_1		1 +	#define HAS_SERIAL_1_ALT_1	1 +	#define HAS_SERIAL_1_ALT_2	0 +	#define HAS_SERIAL_1_HW_FLOW	1 +	#define USE_SERIAL_STDIN	1 +	#define HAS_ADC			0 +	#define HAS_DBG			1 +	#define HAS_EEPROM		0 +	#define HAS_LOG			0 +	#define USE_INTERNAL_FLASH	1 +	#define HAS_BTM			1 +	#define DBG_ON_P1 		1 +	#define DBG_ON_P0 		0 +	#define IGNITE_ON_P2		0 +	#define IGNITE_ON_P0		0 +	#define PACKET_HAS_MASTER	1 +	#define PACKET_HAS_SLAVE	0 +	#define AO_LED_RED		1 +	#define AO_LED_GREEN		2 +	#define AO_MONITOR_LED		AO_LED_RED +	#define LEDS_AVAILABLE		(AO_LED_RED|AO_LED_GREEN) +	#define SPI_CS_ON_P1		1 +	#define SPI_CS_ON_P0		0 +	#define HAS_ACCEL		0 +	#define HAS_IGNITE		0 +	#define HAS_IGNITE_REPORT	0 +	#define BT_LINK_ON_P2		0 +	#define BT_LINK_ON_P1		1 +	#define BT_LINK_PIN_INDEX	7 +	#define BT_LINK_PIN		P1_7 +	#define HAS_MONITOR		1 +	#define LEGACY_MONITOR		0 +	#define HAS_RSSI		0 +	#define HAS_AES			0 +#endif + +#if DBG_ON_P1 + +	#define DBG_CLOCK	(1 << 4)	/* mi0 */ +	#define DBG_DATA	(1 << 5)	/* mo0 */ +	#define DBG_RESET_N	(1 << 3)	/* c0 */ + +	#define DBG_CLOCK_PIN	(P1_4) +	#define DBG_DATA_PIN	(P1_5) +	#define DBG_RESET_N_PIN	(P1_3) + +	#define DBG_PORT_NUM	1 +	#define DBG_PORT	P1 +	#define DBG_PORT_SEL	P1SEL +	#define DBG_PORT_INP	P1INP +	#define DBG_PORT_DIR	P1DIR + +#endif /* DBG_ON_P1 */ + +#if DBG_ON_P0 + +	#define DBG_CLOCK	(1 << 3) +	#define DBG_DATA	(1 << 4) +	#define DBG_RESET_N	(1 << 5) + +	#define DBG_CLOCK_PIN	(P0_3) +	#define DBG_DATA_PIN	(P0_4) +	#define DBG_RESET_N_PIN	(P0_5) + +	#define DBG_PORT_NUM	0 +	#define DBG_PORT	P0 +	#define DBG_PORT_SEL	P0SEL +	#define DBG_PORT_INP	P0INP +	#define DBG_PORT_DIR	P0DIR + +#endif /* DBG_ON_P0 */ + +#if COMPANION_CS_ON_P1 +	#define COMPANION_CS_PORT	P1 +	#define COMPANION_CS_SEL	P1SEL +	#define COMPANION_CS_DIR	P1DIR +#endif + +#if SPI_CS_ON_P1 +	#define SPI_CS_PORT	P1 +	#define SPI_CS_SEL	P1SEL +	#define SPI_CS_DIR	P1DIR +#endif + +#if SPI_CS_ON_P0 +	#define SPI_CS_PORT	P0 +	#define SPI_CS_SEL	P0SEL +	#define SPI_CS_DIR	P0DIR +#endif + +#ifndef IGNITE_ON_P2 +#error Please define IGNITE_ON_P2 +#endif + +#ifndef IGNITE_ON_P0 +#error Please define IGNITE_ON_P0 +#endif + +#ifndef HAS_SERIAL_1 +#error Please define HAS_SERIAL_1 +#endif + +#ifndef USE_SERIAL_STDIN +#error Please define USE_SERIAL_STDIN +#endif + +#ifndef HAS_ADC +#error Please define HAS_ADC +#endif + +#ifndef HAS_EEPROM +#error Please define HAS_EEPROM +#endif + +#ifndef HAS_LOG +#error Please define HAS_LOG +#endif + +#if HAS_EEPROM +#ifndef USE_INTERNAL_FLASH +#error Please define USE_INTERNAL_FLASH +#endif +#endif + +#ifndef HAS_DBG +#error Please define HAS_DBG +#endif + +#ifndef HAS_IGNITE +#error Please define HAS_IGNITE +#endif + +#if HAS_IGNITE +#define HAS_IGNITE_REPORT 1 +#endif + +#ifndef PACKET_HAS_MASTER +#error Please define PACKET_HAS_MASTER +#endif + +#ifndef PACKET_HAS_SLAVE +#error Please define PACKET_HAS_SLAVE +#endif + +#ifndef HAS_MONITOR +#error Please define HAS_MONITOR +#endif + +#if HAS_MONITOR +#ifndef HAS_RSSI +#error Please define HAS_RSSI +#endif +#endif + +#ifndef HAS_ADC +#error Please define HAS_ADC +#endif + +#if HAS_ADC + +#if HAS_ACCEL +#ifndef HAS_ACCEL_REF +#error Please define HAS_ACCEL_REF +#endif +#else +#define HAS_ACCEL_REF 0 +#endif + +#endif /* HAS_ADC */ + +#if IGNITE_ON_P2 +#define AO_IGNITER_DROGUE	P2_3 +#define AO_IGNITER_MAIN		P2_4 +#define AO_IGNITER_DIR		P2DIR +#define AO_IGNITER_DROGUE_BIT	(1 << 3) +#define AO_IGNITER_MAIN_BIT	(1 << 4) +#endif + +#if IGNITE_ON_P0 +#define AO_IGNITER_DROGUE	P0_5 +#define AO_IGNITER_MAIN		P0_4 +#define AO_IGNITER_DIR		P0DIR +#define AO_IGNITER_DROGUE_BIT	(1 << 5) +#define AO_IGNITER_MAIN_BIT	(1 << 4) +#endif + +/* test these values with real igniters */ +#define AO_IGNITER_OPEN		1000 +#define AO_IGNITER_CLOSED	7000 +#define AO_IGNITER_FIRE_TIME	AO_MS_TO_TICKS(50) +#define AO_IGNITER_CHARGE_TIME	AO_MS_TO_TICKS(2000) + +#endif /* _AO_PINS_H_ */ diff --git a/src/teleshield-v0.1/ao_teleshield.c b/src/teleshield-v0.1/ao_teleshield.c new file mode 100644 index 00000000..fc203537 --- /dev/null +++ b/src/teleshield-v0.1/ao_teleshield.c @@ -0,0 +1,48 @@ +/* + * 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" + +__code uint8_t ao_log_format = AO_LOG_FORMAT_NONE;	/* until we actually log stuff */ + +void +main(void) +{ +	ao_clock_init(); + +	/* Turn on the LED until the system is stable */ +	ao_led_init(LEDS_AVAILABLE); +	ao_led_on(AO_LED_RED); +	ao_timer_init(); +	ao_cmd_init(); +	ao_spi_init(); +	ao_storage_init(); +	ao_usb_init(); +	ao_monitor_init(); +	ao_radio_init(); +	ao_packet_master_init(); +	ao_btm_init(); +#if HAS_DBG +	ao_dbg_init(); +#endif +#if HAS_AES +	ao_aes_init(); +	ao_radio_cmac_init(); +#endif +	ao_config_init(); +	ao_start_scheduler(); +}  | 
