You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							151 lines
						
					
					
						
							3.9 KiB
						
					
					
				
			
		
		
	
	
							151 lines
						
					
					
						
							3.9 KiB
						
					
					
				DEFS		= -DSTM32L1
 | 
						|
 | 
						|
FP_FLAGS	?= -msoft-float -mfloat-abi=soft
 | 
						|
ARCH_FLAGS	= -mthumb -mcpu=cortex-m3 $(FP_FLAGS) -mfix-cortex-m3-ldrd
 | 
						|
 | 
						|
LDSCRIPT    = stm32l100rc.ld
 | 
						|
 | 
						|
################################################################
 | 
						|
 | 
						|
# Main file
 | 
						|
BINARY      = main
 | 
						|
 | 
						|
INCL_DIRS   = . lib utils
 | 
						|
 | 
						|
STARTUP_SCRIPT = startup_stm32l100xc.s
 | 
						|
 | 
						|
OBJS += $(BINARY).o
 | 
						|
OBJS += $(STARTUP_SCRIPT:.s=.o)
 | 
						|
OBJS += utils/gpio.o
 | 
						|
OBJS += utils/usart.o
 | 
						|
OBJS += utils/timebase.o
 | 
						|
OBJS += utils/debounce.o
 | 
						|
OBJS += utils/nvic.o
 | 
						|
OBJS += utils/str_utils.o
 | 
						|
OBJS += init.o
 | 
						|
OBJS += blink.o
 | 
						|
OBJS += capture.o
 | 
						|
OBJS += lib/common.o
 | 
						|
 | 
						|
################################################################
 | 
						|
 | 
						|
JUNK            = *.o *.d *.elf *.bin *.hex *.srec *.list *.map *.dis *.disasm
 | 
						|
 | 
						|
###############################################################################
 | 
						|
###############################################################################
 | 
						|
###############################################################################
 | 
						|
 | 
						|
# Be silent per default, but 'make V=1' will show all compiler calls.
 | 
						|
ifneq ($(V),1)
 | 
						|
  Q     := @
 | 
						|
  NULL  := 2>/dev/null
 | 
						|
endif
 | 
						|
 | 
						|
###############################################################################
 | 
						|
# Executables
 | 
						|
 | 
						|
PREFIX  ?= arm-none-eabi
 | 
						|
 | 
						|
CC      := $(PREFIX)-gcc
 | 
						|
CXX     := $(PREFIX)-g++
 | 
						|
LD      := $(PREFIX)-gcc
 | 
						|
AR      := $(PREFIX)-ar
 | 
						|
AS      := $(PREFIX)-as
 | 
						|
OBJCOPY := $(PREFIX)-objcopy
 | 
						|
OBJDUMP := $(PREFIX)-objdump
 | 
						|
GDB     := $(PREFIX)-gdb
 | 
						|
STFLASH := $(shell which st-flash)
 | 
						|
 | 
						|
###############################################################################
 | 
						|
 | 
						|
# For CMSIS compatibility
 | 
						|
DEFS          += -D__weak="__attribute__((weak))" -D__packed="__attribute__((__packed__))"
 | 
						|
 | 
						|
###############################################################################
 | 
						|
# C flags
 | 
						|
 | 
						|
CFLAGS      += -Os -ggdb -std=gnu99 -Wfatal-errors
 | 
						|
CFLAGS      += -Wall -Wextra -Wshadow
 | 
						|
CFLAGS      += -Wwrite-strings -Wold-style-definition -Winline -Wmissing-noreturn -Wstrict-prototypes
 | 
						|
CFLAGS      += -Wredundant-decls -Wfloat-equal -Wsign-compare
 | 
						|
CFLAGS      += -fno-common -ffunction-sections -fdata-sections -Wunused-function
 | 
						|
CFLAGS      += -MD
 | 
						|
CFLAGS      += $(INCL_DIRS:%=-I%) $(DEFS)
 | 
						|
 | 
						|
###############################################################################
 | 
						|
# Linker flags
 | 
						|
 | 
						|
LDFLAGS     += --static -specs=nano.specs -lm -lc
 | 
						|
#LDFLAGS     += -L$(OCM3_LIB_DIR)
 | 
						|
LDFLAGS     += -T$(LDSCRIPT)
 | 
						|
LDFLAGS     += -Wl,-Map=$(*).map
 | 
						|
LDFLAGS     += -Wl,--gc-sections
 | 
						|
 | 
						|
###############################################################################
 | 
						|
# Used libraries
 | 
						|
 | 
						|
LDLIBS		+= -lm
 | 
						|
LDLIBS		+= -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
 | 
						|
 | 
						|
###############################################################################
 | 
						|
###############################################################################
 | 
						|
###############################################################################
 | 
						|
 | 
						|
.SUFFIXES: .elf .bin .hex .srec .list .map .images
 | 
						|
.SECONDEXPANSION:
 | 
						|
.SECONDARY:
 | 
						|
 | 
						|
all: elf
 | 
						|
 | 
						|
ttyusb:
 | 
						|
	gtkterm -s 115200 -p /dev/ttyUSB0
 | 
						|
 | 
						|
ttyacm:
 | 
						|
	gtkterm -p /dev/ttyACM0
 | 
						|
 | 
						|
elf: $(BINARY).elf
 | 
						|
bin: $(BINARY).bin
 | 
						|
hex: $(BINARY).hex
 | 
						|
srec: $(BINARY).srec
 | 
						|
list: $(BINARY).list
 | 
						|
 | 
						|
images: $(BINARY).images
 | 
						|
flash: $(BINARY).flash
 | 
						|
 | 
						|
dis: $(BINARY).elf
 | 
						|
	$(Q)$(OBJDUMP) -dS $(BINARY).elf -j .text -j .isr_vector > $(BINARY).dis
 | 
						|
 | 
						|
%.images: %.bin %.hex %.srec %.list %.map
 | 
						|
 | 
						|
%.bin: %.elf
 | 
						|
	$(Q)$(OBJCOPY) -Obinary $(*).elf $(*).bin
 | 
						|
 | 
						|
%.hex: %.elf
 | 
						|
	$(Q)$(OBJCOPY) -Oihex $(*).elf $(*).hex
 | 
						|
 | 
						|
%.srec: %.elf
 | 
						|
	$(Q)$(OBJCOPY) -Osrec $(*).elf $(*).srec
 | 
						|
 | 
						|
%.list: %.elf
 | 
						|
	$(Q)$(OBJDUMP) -S $(*).elf > $(*).list
 | 
						|
 | 
						|
%.elf %.map: $(OBJS)
 | 
						|
	$(Q)$(LD) $(LDFLAGS) $(ARCH_FLAGS) $(OBJS) $(LDLIBS) -o $(*).elf
 | 
						|
 | 
						|
%.o: %.c
 | 
						|
	$(Q)$(CC) $(CFLAGS) $(ARCH_FLAGS) -o $(*).o -c $(*).c
 | 
						|
 | 
						|
%.o: %.s
 | 
						|
	$(Q)$(CC) $(CFLAGS) $(ARCH_FLAGS) -o $(*).o -c $(*).s
 | 
						|
 | 
						|
clean:
 | 
						|
	$(Q)$(RM) $(JUNK)
 | 
						|
	$(Q)cd lib && $(RM) $(JUNK)
 | 
						|
 | 
						|
%.flash: %.bin
 | 
						|
	@printf "  FLASH  $<\n"
 | 
						|
	$(Q)$(STFLASH) write $(*).bin 0x8000000
 | 
						|
 | 
						|
.PHONY: images clean elf bin hex srec list dis ttyusb ttyacm
 | 
						|
 | 
						|
-include $(OBJS:.o=.d)
 | 
						|
 |