2020-11-23 21:48:35 -05:00
|
|
|
# Makefile -- stm32bringup
|
2021-02-12 21:47:22 -05:00
|
|
|
# Copyright (c) 2020-2021 Renaud Fivet
|
2020-11-23 21:48:35 -05:00
|
|
|
|
|
|
|
### Build environment selection
|
|
|
|
|
|
|
|
ifeq (linux, $(findstring linux, $(MAKE_HOST)))
|
2021-02-12 21:47:22 -05:00
|
|
|
INSTALLDIR = $(HOME)/Packages
|
2021-02-24 21:15:55 -05:00
|
|
|
#REVDIR = gcc-arm-none-eabi-9-2019-q4-major
|
|
|
|
#REVDIR = gcc-arm-none-eabi-9-2020-q2-update
|
|
|
|
REVDIR = gcc-arm-none-eabi-10-2020-q4-major
|
2020-11-23 21:48:35 -05:00
|
|
|
else
|
2021-02-24 21:15:55 -05:00
|
|
|
DRIVE = d
|
2021-02-12 21:47:22 -05:00
|
|
|
ifeq (cygwin, $(findstring cygwin, $(MAKE_HOST)))
|
2021-02-24 21:15:55 -05:00
|
|
|
OSDRIVE = /cygdrive/$(DRIVE)
|
2021-02-12 21:47:22 -05:00
|
|
|
else ifeq (msys, $(findstring msys, $(MAKE_HOST)))
|
2021-02-24 21:15:55 -05:00
|
|
|
OSDRIVE = /$(DRIVE)
|
2021-02-12 21:47:22 -05:00
|
|
|
else
|
2021-02-24 21:15:55 -05:00
|
|
|
OSDRIVE = $(DRIVE):
|
2021-02-12 21:47:22 -05:00
|
|
|
endif
|
2021-02-24 21:15:55 -05:00
|
|
|
INSTALLDIR = $(OSDRIVE)/Program Files (x86)
|
|
|
|
#REVDIR = GNU Tools ARM Embedded/5.4 2016q2
|
|
|
|
#REVDIR = GNU Tools ARM Embedded/6 2017-q2-update
|
|
|
|
#REVDIR = GNU Tools ARM Embedded/7 2017-q4-major
|
|
|
|
#REVDIR = GNU Tools ARM Embedded/7 2018-q2-update
|
|
|
|
#REVDIR = GNU Tools ARM Embedded/9 2019-q4-major
|
|
|
|
#REVDIR = GNU Arm Embedded Toolchain/9 2020-q2-update
|
|
|
|
REVDIR = GNU Arm Embedded Toolchain/10 2020-q4-major
|
2020-11-23 21:48:35 -05:00
|
|
|
endif
|
|
|
|
|
2021-02-24 21:15:55 -05:00
|
|
|
GCCDIR = $(INSTALLDIR)/$(REVDIR)
|
2021-02-12 21:47:22 -05:00
|
|
|
export PATH := $(GCCDIR)/bin:$(PATH)
|
|
|
|
|
|
|
|
BINPFX = @arm-none-eabi-
|
2020-12-05 05:08:25 -05:00
|
|
|
AR = $(BINPFX)ar
|
2020-11-23 21:48:35 -05:00
|
|
|
CC = $(BINPFX)gcc
|
|
|
|
OBJCOPY = $(BINPFX)objcopy
|
|
|
|
OBJDUMP = $(BINPFX)objdump
|
|
|
|
SIZE = $(BINPFX)size
|
|
|
|
|
|
|
|
### STM32F030F4P6 based board
|
|
|
|
|
2021-06-08 04:45:53 -04:00
|
|
|
PROJECT = f030f4
|
2021-03-03 02:02:02 -05:00
|
|
|
|
2021-03-06 21:21:10 -05:00
|
|
|
# In RAM Execution
|
|
|
|
# Bootloader uses first 2K of RAM, execution from bootloader
|
2021-03-03 02:02:02 -05:00
|
|
|
#FLASHSTART = 0x20000800
|
|
|
|
#FLASHSIZE = 2K
|
|
|
|
#RAMSTART = 0x20000000
|
|
|
|
#RAMSIZE = 2K
|
|
|
|
|
2021-03-06 21:21:10 -05:00
|
|
|
# In Flash Execution
|
|
|
|
# if FLASHSTART is not at beginning of FLASH: execution from bootloader
|
2021-03-03 02:02:02 -05:00
|
|
|
FLASHSTART = 0x08000000
|
|
|
|
FLASHSIZE = 16K
|
|
|
|
RAMSTART = 0x20000000
|
|
|
|
RAMSIZE = 4K
|
2021-03-06 21:21:10 -05:00
|
|
|
|
|
|
|
# ISR vector copied and mapped to RAM if FLASHSTART != 0x08000000
|
|
|
|
ifneq ($(FLASHSTART),0x08000000)
|
|
|
|
RAMISRV := 1
|
|
|
|
endif
|
2021-03-03 02:02:02 -05:00
|
|
|
|
2020-11-23 21:48:35 -05:00
|
|
|
#SRCS = boot.c
|
|
|
|
#SRCS = ledon.c
|
|
|
|
#SRCS = blink.c
|
|
|
|
#SRCS = ledtick.c
|
|
|
|
#SRCS = cstartup.c
|
2020-11-27 23:54:11 -05:00
|
|
|
#SRCS = startup.c init.c success.c
|
2020-11-27 23:58:58 -05:00
|
|
|
#SRCS = startup.c board.c success.c
|
2020-12-02 22:15:47 -05:00
|
|
|
#SRCS = startup.c usart1tx.c hello.c
|
2020-12-04 19:13:29 -05:00
|
|
|
#SRCS = startup.c uplow.1.c uptime.1.c
|
2020-12-05 05:08:25 -05:00
|
|
|
#SRCS = startup.c uplow.2.c uptime.c printf.c putchar.c
|
|
|
|
#SRCS = startup.c uplow.2.c uptime.c
|
2020-12-07 04:36:11 -05:00
|
|
|
#SRCS = startup.c uplow.2.c hello.c
|
2020-12-08 03:45:48 -05:00
|
|
|
#SRCS = startup.c clocks.c uptime.c
|
2020-12-14 20:41:12 -05:00
|
|
|
#SRCS = startup.txeie.c txeie.c uptime.c
|
2020-12-18 19:39:18 -05:00
|
|
|
#SRCS = startup.txeie.c gpioa.c dht11main.c dht11.c
|
2020-12-29 01:26:39 -05:00
|
|
|
#SRCS = startup.txeie.c gpioa.c ds18b20main.c ds18b20.c
|
2021-02-09 02:36:03 -05:00
|
|
|
#SRCS = startup.txeie.c adc.c adcmain.c
|
2021-03-03 02:02:02 -05:00
|
|
|
#SRCS = startup.txeie.c adc.c adccalib.c ds18b20.c
|
|
|
|
SRCS = startup.ram.c txeie.c uptime.1.c
|
2020-11-23 21:48:35 -05:00
|
|
|
OBJS = $(SRCS:.c=.o)
|
2021-03-03 02:02:02 -05:00
|
|
|
LIBOBJS = printf.o putchar.o puts.o memset.o memcpy.o
|
|
|
|
|
2020-11-23 21:48:35 -05:00
|
|
|
CPU = -mthumb -mcpu=cortex-m0
|
2021-03-03 02:02:02 -05:00
|
|
|
ifdef RAMISRV
|
|
|
|
CDEFINES = -DRAMISRV=$(RAMISRV)
|
|
|
|
endif
|
|
|
|
WARNINGS=-pedantic -Wall -Wextra -Wstrict-prototypes -Wno-unused-parameter
|
|
|
|
CFLAGS = $(CPU) -g $(WARNINGS) -Os $(CDEFINES)
|
|
|
|
|
|
|
|
LD_SCRIPT = generic.ld
|
2021-06-08 04:45:53 -04:00
|
|
|
LDOPTS =--defsym FLASHSTART=$(FLASHSTART) --defsym FLASHSIZE=$(FLASHSIZE)
|
|
|
|
LDOPTS +=--defsym RAMSTART=$(RAMSTART) --defsym RAMSIZE=$(RAMSIZE)
|
|
|
|
LDOPTS +=-Map=$(subst .elf,.map,$@) -cref --print-memory-usage
|
|
|
|
comma :=,
|
|
|
|
space :=$() # one space before the comment
|
|
|
|
LDFLAGS =-Wl,$(subst $(space),$(comma),$(LDOPTS))
|
2020-11-23 21:48:35 -05:00
|
|
|
|
|
|
|
### Build rules
|
|
|
|
|
2021-02-24 21:15:55 -05:00
|
|
|
.PHONY: clean all version
|
2020-11-23 21:48:35 -05:00
|
|
|
|
2021-06-08 04:45:53 -04:00
|
|
|
all: $(PROJECT).hex $(PROJECT).$(FLASHSTART).bin
|
2020-11-23 21:48:35 -05:00
|
|
|
|
2021-02-24 21:15:55 -05:00
|
|
|
version:
|
|
|
|
@echo make $(MAKE_VERSION) $(MAKE_HOST)
|
|
|
|
@echo PATH="$(PATH)"
|
2021-03-03 02:02:02 -05:00
|
|
|
$(CC) --version
|
2021-02-24 21:15:55 -05:00
|
|
|
|
2020-11-23 21:48:35 -05:00
|
|
|
clean:
|
|
|
|
@echo CLEAN
|
2020-12-05 05:08:25 -05:00
|
|
|
@rm -f *.o *.elf *.map *.lst *.bin *.hex *.a
|
2020-11-23 21:48:35 -05:00
|
|
|
|
2021-06-08 04:45:53 -04:00
|
|
|
$(PROJECT).elf: $(OBJS) libstm32.a
|
|
|
|
boot.elf: boot.o
|
|
|
|
ledon.elf: ledon.o
|
|
|
|
blink.elf: blink.o
|
|
|
|
ledtick.elf: ledtick.o
|
|
|
|
cstartup.elf: cstartup.o
|
2020-11-23 21:48:35 -05:00
|
|
|
|
2021-06-08 04:45:53 -04:00
|
|
|
%.elf:
|
2020-11-23 21:48:35 -05:00
|
|
|
@echo $@
|
2021-06-08 04:45:53 -04:00
|
|
|
$(CC) $(CPU) -T$(LD_SCRIPT) $(LDFLAGS) -nostartfiles -o $@ $+
|
|
|
|
$(SIZE) -G $@
|
|
|
|
$(OBJDUMP) -hS $@ > $(subst .elf,.lst,$@)
|
2020-11-23 21:48:35 -05:00
|
|
|
|
|
|
|
%.bin: %.elf
|
|
|
|
@echo $@
|
|
|
|
$(OBJCOPY) -O binary $< $@
|
|
|
|
|
2021-06-08 04:45:53 -04:00
|
|
|
%.$(FLASHSTART).bin: %.elf
|
|
|
|
@echo $@
|
|
|
|
$(OBJCOPY) -O binary $< $@
|
|
|
|
|
2020-11-23 21:48:35 -05:00
|
|
|
%.hex: %.elf
|
|
|
|
@echo $@
|
|
|
|
$(OBJCOPY) -O ihex $< $@
|
2020-12-05 05:08:25 -05:00
|
|
|
|
2021-06-08 04:45:53 -04:00
|
|
|
libstm32.a: $(LIBOBJS)
|
2020-12-05 05:08:25 -05:00
|
|
|
$(AR) rc $@ $?
|