aboutsummaryrefslogtreecommitdiff
path: root/common.mk
blob: 9006febd17554325022cdd3f076c2bee41219ff2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#
# Thanks to Tom Van den Bon for cleaning up the STM templates into
# something easily built with GCC at
#
#   https://github.com/tomvdb/stm32f401-nucleo-basic-template
#

TOPLEVEL ?= .

# Location of the Libraries folder from the STM32F0xx Standard Peripheral Library
STD_PERIPH_LIB ?= $(TOPLEVEL)/Drivers

# Location of the linker scripts
LDSCRIPT_INC ?= $(TOPLEVEL)/Device/ldscripts

# location of OpenOCD Board .cfg files (only used with 'make flash-target')
#
# This path is from Ubuntu 14.04.
#
OPENOCD_BOARD_DIR ?= /usr/share/openocd/scripts/board

# Configuration (cfg) file containing programming directives for OpenOCD
#
# If you are using an STLINK v2.0 from an STM32 F4 DISCOVERY board,
# set this variable to "stm32f4discovery.cfg".
#
# If you are using a NUCLEO board, set it to "stm32f4-openocd.cfg" (tomvdb) or
# "board/st_nucleo_f401re.cfg" I guess.
#
# If you are using something else, look for a matching configuration file in
# the OPENOCD_BOARD_DIR directory.
#
OPENOCD_PROC_FILE ?= stm32f4discovery.cfg
#OPENOCD_PROC_FILE ?= st_nucleo_f4.cfg

# MCU selection parameters
#
# For the rev08 or rev09 board with an STM32F401RBT6, set -DSTM32F401xC
# For Nucleo board with an STM32F401RET6, set -DSTM32F401xE
#
STDPERIPH_SETTINGS ?= -DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F401xC
#
# For the rev08 or rev09 board (hardware compatible), use rev08.ld.
# For the Nucleo board, use nucleo.ld.
MCU_LINKSCRIPT ?= rev08.ld

# add startup file to build
#
# For the rev08 or rev09 board (STM32F401RBT6), use startup_stm32f401xc.s
# For the Nucleo board (STM32F401RET6), use startup_stm32f401xe.s
#
SRCS += $(TOPLEVEL)/Device/startup_stm32f401xc.s

# that's it, no need to change anything below this line!

###################################################

CC=arm-none-eabi-gcc
OBJCOPY=arm-none-eabi-objcopy
OBJDUMP=arm-none-eabi-objdump
SIZE=arm-none-eabi-size
GDB=arm-none-eabi-gdb
OPENOCD=openocd

CFLAGS  = -ggdb -O1 -Wall -Wextra -Warray-bounds
CFLAGS += -mcpu=cortex-m4 -mthumb -mlittle-endian -mthumb-interwork
CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
CFLAGS += $(STDPERIPH_SETTINGS)
CFLAGS += -ffunction-sections -fdata-sections
CFLAGS += -Wl,--gc-sections -Wl,-Map=$(PROJ_NAME).map

###################################################

vpath %.c src
vpath %.a $(STD_PERIPH_LIB)

ROOT=$(shell pwd)

CFLAGS += -I inc -I $(STD_PERIPH_LIB) -I $(STD_PERIPH_LIB)/CMSIS/Device/ST/STM32F4xx/Include
CFLAGS += -I $(STD_PERIPH_LIB)/CMSIS/Include -I $(STD_PERIPH_LIB)/STM32F4xx_HAL_Driver/Inc
CFLAGS += -include $(STD_PERIPH_LIB)/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_conf.h