mirror of
https://github.com/rene-dev/stmbl.git
synced 2026-08-18 09:29:10 +08:00
stm32 crc unit works different. No idea why it worked while testing this.
Python crc code needs work to make this work.
This reverts commit 8feed27593.
191 lines
4.7 KiB
Makefile
191 lines
4.7 KiB
Makefile
# Optimization level, can be [0, 1, 2, 3, s].
|
|
# 0 = turn off optimization. s = optimize for size.
|
|
#
|
|
OPT = -O1 -flto
|
|
# OPT = -O1 # for debugging
|
|
|
|
# Object files directory
|
|
# Warning: this will be removed by make clean!
|
|
#
|
|
OBJDIR = obj_boot
|
|
|
|
# Target file name (without extension)
|
|
TARGET = $(OBJDIR)/blboot
|
|
|
|
# Define all C source files (dependencies are generated automatically)
|
|
INCDIRS += inc
|
|
INCDIRS += bootloader/src
|
|
INCDIRS += shared
|
|
|
|
SOURCES += bootloader/src/main.c
|
|
SOURCES += bootloader/src/version.c
|
|
SOURCES += bootloader/src/stm32f4xx_it.c
|
|
SOURCES += bootloader/src/system_stm32f4xx.c
|
|
|
|
SOURCES += shared/crc32.c
|
|
|
|
# Standard peripheral library
|
|
CPPFLAGS += -DUSE_STDPERIPH_DRIVER
|
|
#CPPFLAGS += -DUSE_FULL_ASSERT
|
|
|
|
INCDIRS += lib/STM32F4xx_StdPeriph_Driver-V1.6.0/inc
|
|
INCDIRS += lib/CMSIS/Include
|
|
INCDIRS += lib/CMSIS/Device/ST/STM32F4xx/Include
|
|
|
|
SOURCES += lib/STM32F4xx_StdPeriph_Driver-V1.6.0/src/stm32f4xx_flash.c
|
|
SOURCES += lib/STM32F4xx_StdPeriph_Driver-V1.6.0/src/stm32f4xx_gpio.c
|
|
SOURCES += lib/STM32F4xx_StdPeriph_Driver-V1.6.0/src/stm32f4xx_pwr.c
|
|
SOURCES += lib/STM32F4xx_StdPeriph_Driver-V1.6.0/src/stm32f4xx_rcc.c
|
|
SOURCES += lib/STM32F4xx_StdPeriph_Driver-V1.6.0/src/stm32f4xx_usart.c
|
|
SOURCES += lib/STM32F4xx_StdPeriph_Driver-V1.6.0/src/misc.c
|
|
|
|
SOURCES += lib/CMSIS/Device/ST/STM32F4xx/Source/startup_stm32f40_41xxx.s
|
|
|
|
CPPFLAGS += -DSTM32F40_41xxx
|
|
CPPFLAGS += -DHSE_VALUE=8000000
|
|
LDSCRIPT = bootloader/stm32_flash.ld
|
|
|
|
#============================================================================
|
|
OBJECTS += $(addprefix $(OBJDIR)/,$(addsuffix .o,$(basename $(SOURCES))))
|
|
CPPFLAGS += $(addprefix -I,$(INCDIRS))
|
|
|
|
#---------------- Preprocessor Options ----------------
|
|
# -fsingle... make better use of the single-precision FPU
|
|
# -g generate debugging information
|
|
# -save-temps preserve .s and .i-files
|
|
#
|
|
CPPFLAGS += -fsingle-precision-constant
|
|
CPPFLAGS += -g
|
|
# CPPFLAGS += -save-temps=obj
|
|
|
|
#---------------- C Compiler Options ----------------
|
|
# -O* optimization level
|
|
# -f... tuning, see GCC documentation
|
|
# -Wall... warning level
|
|
#
|
|
CFLAGS += $(OPT)
|
|
CFLAGS += -std=gnu11
|
|
CFLAGS += -ffunction-sections
|
|
CFLAGS += -fdata-sections
|
|
CFLAGS += -Wall
|
|
CFLAGS += -fno-builtin ## from old
|
|
CFLAGS += -nostartfiles
|
|
#CFLAGS += -Wstrict-prototypes
|
|
#CFLAGS += -Wextra
|
|
#CFLAGS += -Wpointer-arith
|
|
#CFLAGS += -Winline
|
|
#CFLAGS += -Wunreachable-code
|
|
#CFLAGS += -Wundef
|
|
|
|
# Use a friendly C dialect
|
|
CPPFLAGS += -fno-strict-aliasing
|
|
CPPFLAGS += -fwrapv
|
|
|
|
#---------------- C++ Compiler Options ----------------
|
|
#
|
|
CXXFLAGS += $(OPT)
|
|
CXXFLAGS += -ffunction-sections
|
|
CXXFLAGS += -fdata-sections
|
|
CXXFLAGS += -Wall
|
|
|
|
#---------------- Assembler Options ----------------
|
|
# -Wa,... tell GCC to pass this to the assembler
|
|
#
|
|
|
|
#---------------- Linker Options ----------------
|
|
# -Wl,... tell GCC to pass this to linker
|
|
# -Map create map file
|
|
# --cref add cross reference to map file
|
|
#
|
|
LDFLAGS += $(OPT)
|
|
LDFLAGS += -lm
|
|
LDFLAGS += -Wl,-Map=$(TARGET).map,--cref
|
|
LDFLAGS += -Wl,--gc-sections
|
|
|
|
# LDFLAGS += -specs=nano.specs -u _printf_float -u _scanf_float
|
|
LDFLAGS += -T$(LDSCRIPT)
|
|
|
|
#============================================================================
|
|
|
|
# Define programs and commands
|
|
#
|
|
TOOLCHAIN = arm-none-eabi-
|
|
CC = $(TOOLCHAIN)gcc
|
|
OBJCOPY = $(TOOLCHAIN)objcopy
|
|
OBJDUMP = $(TOOLCHAIN)objdump
|
|
SIZE = $(TOOLCHAIN)size
|
|
NM = $(TOOLCHAIN)nm
|
|
MKDIR = mkdir
|
|
POSTLD = tools/add_version_info.py # -q
|
|
|
|
# Compiler flags to generate dependency files
|
|
#
|
|
GENDEPFLAGS = -MMD -MP
|
|
|
|
# Combine all necessary flags and optional flags
|
|
# Add target processor to flags.
|
|
#
|
|
CPU = -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16
|
|
|
|
CFLAGS += $(CPU)
|
|
CXXFLAGS += $(CPU)
|
|
ASFLAGS += $(CPU)
|
|
LDFLAGS += $(CPU)
|
|
|
|
# Default target
|
|
#
|
|
all: gccversion build showsize
|
|
|
|
build: elf hex bin lss sym
|
|
|
|
elf: $(TARGET).elf
|
|
hex: $(TARGET).hex
|
|
bin: $(TARGET).bin
|
|
lss: $(TARGET).lss
|
|
sym: $(TARGET).sym
|
|
|
|
# Display compiler version information
|
|
#
|
|
gccversion:
|
|
@$(CC) --version
|
|
|
|
# Show the final program size
|
|
#
|
|
showsize: build
|
|
@echo
|
|
@$(SIZE) $(TARGET).elf 2>/dev/null
|
|
|
|
# Flash the device
|
|
#
|
|
|
|
btflash: build showsize
|
|
#change this to your device
|
|
printf "bootloader\r" > `ls /dev/cu.usbmodem*` || true
|
|
printf "bootloader\r" > `ls /dev/ttyACM*` || true
|
|
sleep 1
|
|
dfu-util -a 0 -d 0483:df11 -s 0x08000000:leave -D $(TARGET).bin
|
|
|
|
flash: build showsize
|
|
st-flash --reset write $(TARGET).bin 0x08000000
|
|
|
|
# Target: clean project
|
|
#
|
|
clean:
|
|
@echo Cleaning project:
|
|
rm -rf $(OBJDIR)
|
|
|
|
# Include the base rules
|
|
#
|
|
include base.mak
|
|
|
|
# Include the dependency files
|
|
#
|
|
-include $(OBJECTS:.o=.d)
|
|
|
|
# Listing of phony targets
|
|
#
|
|
.PHONY: all build flash btfash clean \
|
|
boot boot_clean boot_flash \
|
|
elf lss sym \
|
|
showsize gccversion
|