diff options
| -rw-r--r-- | ao-tools/ao-load/ao-load.c | 2 | ||||
| -rw-r--r-- | src/avr/ao_arch.h | 6 | ||||
| -rw-r--r-- | src/avr/ao_romconfig.c | 2 | ||||
| -rw-r--r-- | src/cc1111/ao_arch.h | 10 | ||||
| -rw-r--r-- | src/core/ao_product.c | 2 | ||||
| -rw-r--r-- | src/drivers/ao_cc1120.c | 2 | ||||
| -rw-r--r-- | src/drivers/ao_companion.c | 4 | ||||
| -rw-r--r-- | src/megametrum-v0.1/Makefile | 2 | ||||
| -rw-r--r-- | src/megametrum-v0.1/ao_pins.h | 4 | ||||
| -rw-r--r-- | src/stm-bringup/Makefile | 4 | ||||
| -rw-r--r-- | src/stm/altos.ld | 21 | ||||
| -rw-r--r-- | src/stm/ao_arch.h | 12 | ||||
| -rw-r--r-- | src/stm/ao_romconfig.c | 7 | 
13 files changed, 54 insertions, 24 deletions
| diff --git a/ao-tools/ao-load/ao-load.c b/ao-tools/ao-load/ao-load.c index 1b729d39..e3cef4a5 100644 --- a/ao-tools/ao-load/ao-load.c +++ b/ao-tools/ao-load/ao-load.c @@ -197,7 +197,7 @@ main (int argc, char **argv)  	serial = strtoul(serial_string, NULL, 0);  	if (!serial) -(argv[0]); +		usage(argv[0]);  	serial_int[0] = serial & 0xff;  	serial_int[1] = (serial >> 8) & 0xff; diff --git a/src/avr/ao_arch.h b/src/avr/ao_arch.h index c775dab6..a14d0ade 100644 --- a/src/avr/ao_arch.h +++ b/src/avr/ao_arch.h @@ -67,7 +67,11 @@ extern void putchar(char c);  extern char getchar(void);  extern void ao_avr_stdio_init(void); -extern const uint16_t ao_serial_number; +#define AO_ROMCONFIG_VERSION	2 + +#define AO_ROMCONFIG_SYMBOL(a) const + +extern AO_ROMCONFIG_SYMBOL(0) uint16_t ao_serial_number;  #define AVR_PUSH8(stack, val)	(*((stack)--) = (val)) diff --git a/src/avr/ao_romconfig.c b/src/avr/ao_romconfig.c index bbb677e2..ecc19c76 100644 --- a/src/avr/ao_romconfig.c +++ b/src/avr/ao_romconfig.c @@ -17,4 +17,4 @@  #include "ao.h" -const uint16_t ao_serial_number = 0; +AO_ROMCONFIG_SYMBOL (0) uint16_t ao_serial_number = 0; diff --git a/src/cc1111/ao_arch.h b/src/cc1111/ao_arch.h index 8d9e4952..06b04b93 100644 --- a/src/cc1111/ao_arch.h +++ b/src/cc1111/ao_arch.h @@ -59,10 +59,12 @@  #define AO_ROMCONFIG_VERSION	2 -extern __code __at (0x00a0) uint16_t ao_romconfig_version; -extern __code __at (0x00a2) uint16_t ao_romconfig_check; -extern __code __at (0x00a4) uint16_t ao_serial_number; -extern __code __at (0x00a6) uint32_t ao_radio_cal; +#define AO_ROMCONFIG_SYMBOL(a) __code __at(a) + +extern AO_ROMCONFIG_SYMBOL(0x00a0) uint16_t ao_romconfig_version; +extern AO_ROMCONFIG_SYMBOL(0x00a2) uint16_t ao_romconfig_check; +extern AO_ROMCONFIG_SYMBOL(0x00a4) uint16_t ao_serial_number; +extern AO_ROMCONFIG_SYMBOL(0x00a6) uint32_t ao_radio_cal;  #ifndef HAS_USB  #error Please define HAS_USB diff --git a/src/core/ao_product.c b/src/core/ao_product.c index 67ec6793..ec91b978 100644 --- a/src/core/ao_product.c +++ b/src/core/ao_product.c @@ -29,7 +29,7 @@ const char ao_product[] = AO_iProduct_STRING;  #if HAS_USB  #include "ao_usb.h"  /* USB descriptors in one giant block of bytes */ -__code __at(0x00aa) uint8_t ao_usb_descriptors [] = +AO_ROMCONFIG_SYMBOL(0x00aa) uint8_t ao_usb_descriptors [] =  {  	/* Device descriptor */  	0x12, diff --git a/src/drivers/ao_cc1120.c b/src/drivers/ao_cc1120.c index 569df3b7..97a434d8 100644 --- a/src/drivers/ao_cc1120.c +++ b/src/drivers/ao_cc1120.c @@ -29,7 +29,7 @@ uint8_t ao_radio_in_recv;  #define CC1120_DEBUG	AO_FEC_DEBUG  #define CC1120_TRACE	0 -const uint32_t	ao_radio_cal = 0x6ca333; +extern const uint32_t	ao_radio_cal;  #define FOSC	32000000 diff --git a/src/drivers/ao_companion.c b/src/drivers/ao_companion.c index 6e0bd2ec..c749adea 100644 --- a/src/drivers/ao_companion.c +++ b/src/drivers/ao_companion.c @@ -68,7 +68,7 @@ ao_companion_get_setup(void)  	ao_spi_recv(&ao_companion_setup, sizeof (ao_companion_setup), AO_COMPANION_SPI_BUS);  	COMPANION_DESELECT();  	return (ao_companion_setup.board_id == -		~ao_companion_setup.board_id_inverse); +		(uint16_t) ~ao_companion_setup.board_id_inverse);  }  static void @@ -116,6 +116,8 @@ ao_companion_status(void) __reentrant  {  	uint8_t	i;  	printf("Companion running: %d\n", ao_companion_running); +	if (!ao_companion_running) +		return;  	printf("device: %d\n", ao_companion_setup.board_id);  	printf("update period: %d\n", ao_companion_setup.update_period);  	printf("channels: %d\n", ao_companion_setup.channels); diff --git a/src/megametrum-v0.1/Makefile b/src/megametrum-v0.1/Makefile index a519609e..4a4c983a 100644 --- a/src/megametrum-v0.1/Makefile +++ b/src/megametrum-v0.1/Makefile @@ -92,7 +92,7 @@ OBJ=$(SRC:.c=.o)  all: $(PROG) -$(PROG): Makefile $(OBJ) +$(PROG): Makefile $(OBJ) altos.ld  	$(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(OBJ) $(SAT_CLIB) -lgcc  ../altitude.h: make-altitude diff --git a/src/megametrum-v0.1/ao_pins.h b/src/megametrum-v0.1/ao_pins.h index 2c438f6c..6b0f9832 100644 --- a/src/megametrum-v0.1/ao_pins.h +++ b/src/megametrum-v0.1/ao_pins.h @@ -268,6 +268,10 @@ struct ao_adc {   * Radio (cc1120)   */ +/* gets pretty close to 434.550 */ + +#define AO_RADIO_CAL_DEFAULT 	0x6ca333 +  #define AO_FEC_DEBUG		0  #define AO_CC1120_SPI_CS_PORT	(&stm_gpioc)  #define AO_CC1120_SPI_CS_PIN	5 diff --git a/src/stm-bringup/Makefile b/src/stm-bringup/Makefile index 01c80614..d45e836d 100644 --- a/src/stm-bringup/Makefile +++ b/src/stm-bringup/Makefile @@ -16,7 +16,7 @@ DEF_CFLAGS=-g -std=gnu99 -Os -mlittle-endian -mthumb -ffreestanding -nostdlib -I  # to run from SRAM  LD_FLAGS_RAM=-L../stm -Wl,-Taltos-ram.ld -LD_FLAGS=-L../stm -Wl,-Taltos.ld +LD_FLAGS=-L../stm -Wl,-Tbringup.ld  CFLAGS=$(DEF_CFLAGS) -mcpu=cortex-m3 -DCONFIG_STM32L_DISCOVERY @@ -28,7 +28,7 @@ all: bringup-ram.elf bringup.elf  %.bin: %.elf  	$(OBJCOPY) -O binary $^ $@ -bringup.elf: $(OBJ) $(C_LIB) altos.ld +bringup.elf: $(OBJ) $(C_LIB) bringup.ld  	$(CC) $(CFLAGS) $(LD_FLAGS) -o $@ $(OBJ) $(C_LIB) -lgcc  bringup-ram.elf: $(OBJ) $(C_LIB) altos-ram.ld diff --git a/src/stm/altos.ld b/src/stm/altos.ld index f5a84f4c..f78a45d6 100644 --- a/src/stm/altos.ld +++ b/src/stm/altos.ld @@ -25,18 +25,22 @@ INCLUDE registers.ld  EXTERN (stm_interrupt_vector)  SECTIONS { -	. = ORIGIN(rom); -  	/*  	 * Rom contents  	 */ -	__text_start__ = .; - -	.text : { +	.text ORIGIN(rom) : { +		__text_start__ = .;  		*(.interrupt)	/* Interrupt vectors */ + +		. = ORIGIN(rom) + 0x100; + +		ao_romconfig.o(.romconfig*) +		ao_product.o(.romconfig*) +  		*(.text*)	/* Executable code */  		*(.rodata*)	/* Constants */ +  	} > rom  	.ARM.exidx : { @@ -44,12 +48,10 @@ SECTIONS {  		__text_end__ = .;  	} > rom -	. = ORIGIN(ram); -	__data_start__ = .; -  	/* Data -- relocated to RAM, but written to ROM  	 */ -	.data : AT (ADDR(.ARM.exidx) + SIZEOF (.ARM.exidx)) { +	.data ORIGIN(ram) : AT (ADDR(.ARM.exidx) + SIZEOF (.ARM.exidx)) { +		__data_start__ = .;  		*(.data)	/* initialized data */  		__data_end__ = .;  		__bss_start__ = .; @@ -63,7 +65,6 @@ SECTIONS {  	PROVIDE(__stack__ = ORIGIN(ram) + LENGTH(ram));  	PROVIDE(end = .); -  }  ENTRY(start); diff --git a/src/stm/ao_arch.h b/src/stm/ao_arch.h index d8fa3e89..484ce89e 100644 --- a/src/stm/ao_arch.h +++ b/src/stm/ao_arch.h @@ -59,7 +59,19 @@ extern void putchar(char c);  extern char getchar(void);  extern void ao_avr_stdio_init(void); + +/* + * ao_romconfig.c + */ + +#define AO_ROMCONFIG_VERSION	2 + +#define AO_ROMCONFIG_SYMBOL(a) __attribute__((section(".romconfig"))) const + +extern const uint16_t ao_romconfig_version; +extern const uint16_t ao_romconfig_check;  extern const uint16_t ao_serial_number; +extern const uint32_t ao_radio_cal;  #define ARM_PUSH32(stack, val)	(*(--(stack)) = (val)) diff --git a/src/stm/ao_romconfig.c b/src/stm/ao_romconfig.c index 84317458..cbb922ec 100644 --- a/src/stm/ao_romconfig.c +++ b/src/stm/ao_romconfig.c @@ -17,4 +17,9 @@  #include "ao.h" -const uint16_t ao_serial_number = 58; +AO_ROMCONFIG_SYMBOL (0) uint16_t ao_romconfig_version = AO_ROMCONFIG_VERSION; +AO_ROMCONFIG_SYMBOL (0) uint16_t ao_romconfig_check = ~AO_ROMCONFIG_VERSION; +AO_ROMCONFIG_SYMBOL (0) uint16_t ao_serial_number = 0; +#ifdef AO_RADIO_CAL_DEFAULT +AO_ROMCONFIG_SYMBOL (0) uint32_t ao_radio_cal = AO_RADIO_CAL_DEFAULT; +#endif | 
