Skip to content

Instantly share code, notes, and snippets.

@mgronhol
Created January 30, 2017 14:19
Show Gist options
  • Save mgronhol/0859aeb2c92b59e8e4fe18933b0d8d5e to your computer and use it in GitHub Desktop.
Save mgronhol/0859aeb2c92b59e8e4fe18933b0d8d5e to your computer and use it in GitHub Desktop.
Makefile for building firmware for STM32F746ZG using STM32Cube & gcc
GCC_BIN = C:\\Users\\marku\\Desktop\\arm-embedded-env\\gcc\\bin\\
STM32CUBE = C:\\Users\\marku\\Desktop\\arm-embedded-env\\STM32Cube_FW_F7\\
LINKER_SCRIPT = ./STM32F746ZGTx_FLASH.ld
INCLUDE_PATHS = -I$(STM32CUBE)Drivers/CMSIS/Device/ST/STM32F7xx/Include -I$(STM32CUBE)Drivers/STM32F7xx_HAL_Driver/Inc -I$(STM32CUBE)Drivers/BSP/STM32F7xx_Nucleo_144 -I. -IInc/ -I$(STM32CUBE)Drivers/CMSIS/Include
FLOAT_ABI = hard
###############################################################################
AS = $(GCC_BIN)arm-none-eabi-as
CC = $(GCC_BIN)arm-none-eabi-gcc
CPP = $(GCC_BIN)arm-none-eabi-g++
LD = $(GCC_BIN)arm-none-eabi-gcc
OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy
OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump
SIZE = $(GCC_BIN)arm-none-eabi-size
CPU = -mcpu=cortex-m7 -mthumb -mfpu=fpv5-sp-d16 -mfloat-abi=$(FLOAT_ABI)
CC_FLAGS = -c -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -fmessage-length=0 -fno-exceptions -fno-builtin -ffunction-sections -fdata-sections -funsigned-char -MMD -fno-delete-null-pointer-checks -fomit-frame-pointer -mcpu=cortex-m7 -mthumb -mfpu=fpv5-sp-d16 -mfloat-abi=softfp -Os -std=gnu99 -MMD -MP
CPPC_FLAGS = -c -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -fmessage-length=0 -fno-exceptions -fno-builtin -ffunction-sections -fdata-sections -funsigned-char -MMD -fno-delete-null-pointer-checks -fomit-frame-pointer -mcpu=cortex-m7 -mthumb -mfpu=fpv5-sp-d16 -mfloat-abi=softfp -Os -std=gnu++98 -fno-rtti -Wvla -MMD -MP
ASM_FLAGS = -x assembler-with-cpp -c -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -fmessage-length=0 -fno-exceptions -fno-builtin -ffunction-sections -fdata-sections -funsigned-char -MMD -fno-delete-null-pointer-checks -fomit-frame-pointer -mcpu=cortex-m7 -mthumb -mfpu=fpv5-sp-d16 -mfloat-abi=softfp -Os
CC_SYMBOLS = -DUSE_HAL_DRIVER -DSTM32F746xx -DUSE_STM32F7XX_NUCLEO_144
#LD_FLAGS =-Wl,--gc-sections -Wl,--wrap,main -Wl,--wrap,_malloc_r -Wl,--wrap,_free_r -Wl,--wrap,_realloc_r -Wl,--wrap,_calloc_r -mcpu=cortex-m7 -mthumb -mfpu=fpv5-sp-d16 -mfloat-abi=softfp
LD_FLAGS =-Wl,--gc-sections -Wl,--wrap,_malloc_r -Wl,--wrap,_free_r -Wl,--wrap,_realloc_r -Wl,--wrap,_calloc_r -mcpu=cortex-m7 -mthumb -mfpu=fpv5-sp-d16 -mfloat-abi=softfp
LD_SYS_LIBS = -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys
all: libs main elf bin size
libs:
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/stm32f7xx_hal_rcc_ex.o $(STM32CUBE)Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/stm32f7xx_hal_rcc.o $(STM32CUBE)Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/stm32f7xx_hal_dma.o $(STM32CUBE)Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/stm32f7xx_it.o Src/stm32f7xx_it.c
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/stm32f7xx_hal_i2c_ex.o $(STM32CUBE)Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/stm32f7xx_hal.o $(STM32CUBE)Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/stm32f7xx_hal_gpio.o $(STM32CUBE)Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/stm32f7xx_hal_uart.o $(STM32CUBE)Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/stm32f7xx_hal_cortex.o $(STM32CUBE)Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/system_stm32f7xx.o Src/system_stm32f7xx.c
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/stm32f7xx_hal_i2c.o $(STM32CUBE)Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/stm32f7xx_hal_pwr_ex.o $(STM32CUBE)Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/stm32f7xx_nucleo_144.o $(STM32CUBE)Drivers/BSP/STM32F7xx_Nucleo_144/stm32f7xx_nucleo_144.c
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) $(ASM_FLAGS) -o objs/startup_stm32f746xx.o ./startup_stm32f746xx.s
main:
$(CC) $(CPU) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o objs/main.o Src/main.c
elf: libs main
$(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) -o main.elf -Wl,--start-group objs/stm32f7xx_hal_rcc_ex.o objs/stm32f7xx_hal_rcc.o objs/stm32f7xx_hal_dma.o objs/stm32f7xx_it.o objs/stm32f7xx_hal_i2c_ex.o objs/stm32f7xx_hal.o objs/stm32f7xx_hal_gpio.o objs/stm32f7xx_hal_uart.o objs/stm32f7xx_hal_cortex.o objs/system_stm32f7xx.o objs/stm32f7xx_hal_i2c.o objs/stm32f7xx_hal_pwr_ex.o objs/stm32f7xx_nucleo_144.o objs/startup_stm32f746xx.o objs/main.o -Wl,--end-group
bin: elf
$(OBJCOPY) -O binary main.elf main.bin
size: bin
$(SIZE) --format=sysv main.elf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment