# Application number and version info are included in the ELF file # symbol table through two global, asbolute symbols. Use nm(1) on an # ELF file to figure things out. Example: # nm cc20rng.elf | awk '/VERSION/{print $1}' # Application number: # - cc20rng: 01 # - entropy: 02 APPLICATION = 0x00000001 # Version info is four octects, from most significant to least: # - Major version, two bytes: 00..FFFF # - Minor version, one byte: 00..FF # - Patch level, one byte: 00..FF VERSION = 0x00010000 # put your *.o targets here, make should handle the rest! SRCS = main.c stm_init.c system_stm32f4xx.c stm32f4xx_it.c stm32f4xx_hal_msp.c cc20_prng.c # all the files will be generated with this name PROJ_NAME=cc20rng TOPLEVEL=../.. include $(TOPLEVEL)/common.mk OBJS = $(SRCS:.c=.o) ################################################### .PHONY: lib proj all: lib proj lib: $(MAKE) -C $(STD_PERIPH_LIB) STDPERIPH_SETTINGS="$(STDPERIPH_SETTINGS)" proj: $(PROJ_NAME).elf $(PROJ_NAME).elf: $(SRCS) $(CC) $(CFLAGS) $^ -o $@ -L$(STD_PERIPH_LIB) -lstmf4 -L$(LDSCRIPT_INC) -T$(MCU_LINKSCRIPT) -g -Wl,--defsym=APPLICATION=$(APPLICATION) -Wl,--defsym=VERSION=$(VERSION) $(OBJCOPY) -O ihex $(PROJ_NAME).elf $(PROJ_NAME).hex $(OBJCOPY) -O binary $(PROJ_NAME).elf $(PROJ_NAME).bin $(OBJDUMP) -St $(PROJ_NAME).elf >$(PROJ_NAME).lst $(SIZE) $(PROJ_NAME).elf c-format: clang-format-4.0 -i cc20_prng.[ch] clang-format-4.0 -style="{IndentWidth: 2}" -i main.c clean: rm -f *.o rm -f $(PROJ_NAME).elf rm -f $(PROJ_NAME).hex rm -f $(PROJ_NAME).bin rm -f $(PROJ_NAME).map rm -f $(PROJ_NAME).lst really-clean: clean $(MAKE) -C $(STD_PERIPH_LIB) clean debug: $(GDB) -ex "target remote localhost:3333" \ -ex "set remote hardware-breakpoint-limit 6" \ -ex "set remote hardware-watchpoint-limit 4" $(PROJ_NAME).elf flash-target: $(OPENOCD) -f $(OPENOCD_BOARD_DIR)/$(OPENOCD_PROC_FILE) \ -c "program $(PROJ_NAME).elf verify" -c "reset" # test program not using cross compiling test: clean test.c cc20_prng.c cc -DCHACHA20_PRNG_DEBUG -O2 -g -o test test.c cc20_prng.c ./test