From 77668fa4726290fa058243f6e486a49e889df09b Mon Sep 17 00:00:00 2001 From: Michael Wiebusch Date: Tue, 10 Jun 2014 11:46:11 +0200 Subject: [PATCH] added compile time feature --- firmware/Makefile | 2 +- firmware/src/CB_functions.c | 35 +++++++++++++++++++++++------------ firmware/src/Makefile | 9 +++++++-- firmware/src/main.c | 4 +++- firmware/src/version.c | 27 +++++++++++++++++++++++++++ firmware/src/version.h | 17 +++++++++++++++++ firmware/src/version.sh | 26 ++++++++++++++++++++++++++ 7 files changed, 104 insertions(+), 16 deletions(-) create mode 100644 firmware/src/version.c create mode 100644 firmware/src/version.h create mode 100755 firmware/src/version.sh diff --git a/firmware/Makefile b/firmware/Makefile index 7a483d6..0e71bd3 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -45,7 +45,7 @@ remote_swd: all scp main.hex root@jspc55:/local.1/mwiebusch/stm32/ && ssh root@jspc57 "vsprog -cstm32_hd -ms -oe -owf -I /d/jspc55.1/mwiebusch/stm32/main.hex" remote_program: all - scp main.bin root@jspc55:/local.1/mwiebusch/stm32/ && ssh root@jspc57 "st-flash write /d/jspc55.1/mwiebusch/stm32/main.bin 0x8000000" + scp main.bin maps@jspc57:/local/trbsoft/mvd_firmware/ && ssh maps@jspc57 "st-flash write /local/trbsoft/mvd_firmware/main.bin 0x8000000" program_jan: all ssh hadaq@jspc57 "st-flash write /d/jspc22/trb/git/mvd_firmware/firmware/main.bin 0x8000000" diff --git a/firmware/src/CB_functions.c b/firmware/src/CB_functions.c index 5811033..b3b7c1d 100644 --- a/firmware/src/CB_functions.c +++ b/firmware/src/CB_functions.c @@ -280,10 +280,13 @@ void decode_register(uint8_t addr) { break; case 0x2: //DAC CurLimA 0 usart3_word_to_dac(((*thisRegister&0xFFFF)>>4) | (0<<12)); + break; case 0x3: //DAC CurLimD 0 usart3_word_to_dac(((*thisRegister&0xFFFF)>>4) | (1<<12)); + break; case 0x4: //DAC VClp 0 usart3_word_to_dac(((*thisRegister&0xFFFF)>>4) | (2<<12)); + break; case 0x6: // Switches1 CB_GPIO_Out(ENAA1,*thisRegister & 1<<5); @@ -295,24 +298,32 @@ void decode_register(uint8_t addr) { break; case 0x7: //DAC CurLimA 1 usart3_word_to_dac(((*thisRegister&0xFFFF)>>4) | (4<<12)); + break; case 0x8: //DAC CurLimD 1 usart3_word_to_dac(((*thisRegister&0xFFFF)>>4) | (5<<12)); + break; case 0x9: //DAC VClp 1 usart3_word_to_dac(((*thisRegister&0xFFFF)>>4) | (6<<12)); - - case 0xF: //SPI Debug - -// // ADC0 Test block -// adc_conv0_pulse(); -// delay_us(4); // wait conversion time -// spi1_writeWord(*thisRegister); -// delay_ms(2); -// uC_regs[0x10]=spi1DataBuffer[0]; -// report_register(0x10); - - adc0_read(); + break; + case 0xF: //CompileDate register (ro) break; + case 0x10: //CompileTime register (ro) + break; + +// case 0xF: //SPI Debug +// +// // // ADC0 Test block +// // adc_conv0_pulse(); +// // delay_us(4); // wait conversion time +// // spi1_writeWord(*thisRegister); +// // delay_ms(2); +// // uC_regs[0x10]=spi1DataBuffer[0]; +// // report_register(0x10); +// +// adc0_read(); +// +// break; case 0x11: // LEDs if(*thisRegister & 1<<7) { diff --git a/firmware/src/Makefile b/firmware/src/Makefile index b2f3c20..00c6d12 100644 --- a/firmware/src/Makefile +++ b/firmware/src/Makefile @@ -11,17 +11,22 @@ OBJS+=spi2.o OBJS+=spi3.o OBJS+=dac.o OBJS+=misc_utils.o +OBJS+=version.o # OBJS+=keypins.o -all: src +all: src src: app.a -app.a: $(OBJS) +app.a: version $(OBJS) $(AR) cr app.a $(OBJS) .PHONY: src clean clean: rm -f app.a $(OBJS) + +.PHONY: +version: + ./version.sh diff --git a/firmware/src/main.c b/firmware/src/main.c index aee65c3..310b138 100644 --- a/firmware/src/main.c +++ b/firmware/src/main.c @@ -21,7 +21,7 @@ #include "dac.h" #include "periph_conf.h" #include "misc_utils.h" - +#include "version.h" @@ -73,6 +73,8 @@ int main(int argc, char *argv[]) { CB_GPIO_Out_Hi(LED4); uC_regs[0x0b] |= 1; // enable cyclic ADC readout by default + write_timestamp(); // write compile time and date to dedicated registers + report_all_registers(); while(1) { diff --git a/firmware/src/version.c b/firmware/src/version.c new file mode 100644 index 0000000..41e687e --- /dev/null +++ b/firmware/src/version.c @@ -0,0 +1,27 @@ +/** + ******************************************************** + * + * version control timestamp file + * + ******************************************************** + */ + +#include "stm32f10x.h" +#include "stm32f10x_conf.h" // contains all std periph includes +#include "core_cm3.h" + +#include "version.h" + +extern uint16_t uC_regs[]; + + +void write_timestamp(void){ + + // timestamp constants are loaded from version.h + // write compilation date to dedicated register + uC_regs[0x0F] = (COMPILE_YEAR<<9) | (COMPILE_MONTH<<5) | (COMPILE_DAY); + // write compilation time to dedicated register + uC_regs[0x10] = (COMPILE_HOUR<<6) | (COMPILE_MINUTE); + +} + diff --git a/firmware/src/version.h b/firmware/src/version.h new file mode 100644 index 0000000..f3ef0b9 --- /dev/null +++ b/firmware/src/version.h @@ -0,0 +1,17 @@ +/** + ******************************************************** + * + * version control timestamp file + * (do not edit by hand, this file is created during make) + * + ******************************************************** + */ + +#define COMPILE_YEAR 14 +#define COMPILE_MONTH 06 +#define COMPILE_DAY 10 +#define COMPILE_HOUR 11 +#define COMPILE_MINUTE 42 + +void write_timestamp(void); + diff --git a/firmware/src/version.sh b/firmware/src/version.sh new file mode 100755 index 0000000..ecde1c7 --- /dev/null +++ b/firmware/src/version.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# generate some constants that define the compile time of the firmware +# so we get some version control + + +cat < version.h +/** + ******************************************************** + * + * version control timestamp file + * (do not edit by hand, this file is created during make) + * + ******************************************************** + */ + +#define COMPILE_YEAR $(date '+%y') +#define COMPILE_MONTH $(date '+%m') +#define COMPILE_DAY $(date '+%d') +#define COMPILE_HOUR $(date '+%H') +#define COMPILE_MINUTE $(date '+%M') + +void write_timestamp(void); + +EOF +touch version.c \ No newline at end of file -- 2.43.0