ubuntu(TX2)编译stm32F407工程Maflie文件

ubuntu(TX2)编译stm32F407工程Maflie文件

######################################
# target
######################################
#ARCH=arm
TARGET = u_main_v1.1
# debug build?
DEBUG = 1
# optimization
#OPT = -O1
OPT = -Og
# Build path
BUILD_DIR = Output

######################################
# source
######################################
# C sources
# wildcard 获取当前目录下全部文件
# 设置全部需要编译的文件
C_SOURCES = 
C_SOURCES += $(wildcard *.c ./Src/*.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_iwdg.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_sdmmc.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sd.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c) 
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c)
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c)
C_SOURCES += $(wildcard *.c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c) 
C_SOURCES += $(wildcard *.c ./Middlewares/Third_Party/FatFs/src/*.c) 
C_SOURCES += $(wildcard *.c ./Middlewares/Third_Party/FatFs/src/option/syscall.c) 
C_SOURCES += $(wildcard *.c ./Middlewares/Third_Party/FatFs/src/option/cc936.c)
C_SOURCES += $(wildcard *.c ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c) 
C_SOURCES += $(wildcard *.c ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/*.c)
C_SOURCES += $(wildcard *.c ./Middlewares/Third_Party/FreeRTOS/Source/*.c)
C_SOURCES += $(wildcard *.c ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/*.c)
C_SOURCES += $(wildcard *.c ./protocol/*.c)
C_SOURCES += $(wildcard *.c ./modules/alarm/*.c)
C_SOURCES += $(wildcard *.c ./modules/chassisFsm/*.c)
C_SOURCES += $(wildcard *.c ./modules/chassisFsm/states/*.c)
C_SOURCES += $(wildcard *.c ./modules/clock/*.c)
C_SOURCES += $(wildcard *.c ./modules/cmdline/*.c)
C_SOURCES += $(wildcard *.c ./modules/common/communication/*.c)
C_SOURCES += $(wildcard *.c ./modules/common/fsm/*.c)
C_SOURCES += $(wildcard *.c ./modules/common/log/*.c)
C_SOURCES += $(wildcard *.c ./modules/common/utils/*.c)
C_SOURCES += $(wildcard *.c ./modules/config/*.c)
C_SOURCES += $(wildcard *.c ./modules/drivers/imu_spi/*.c)
C_SOURCES += $(wildcard *.c ./modules/drivers/sd_card/*.c)
C_SOURCES += $(wildcard *.c ./modules/drivers/stmfalsh/*.c)
C_SOURCES += $(wildcard *.c ./modules/drivers/upper_power/*.c)
C_SOURCES += $(wildcard *.c ./modules/drivers/W5500/*.c)
C_SOURCES += $(wildcard *.c ./modules/ftp/*.c)
C_SOURCES += $(wildcard *.c ./modules/internet/*.c)
C_SOURCES += $(wildcard *.c ./modules/joystick/*.c)
C_SOURCES += $(wildcard *.c ./modules/motorCtrl/*.c)
C_SOURCES += $(wildcard *.c ./modules/motorCtrl/drives/*.c)
C_SOURCES += $(wildcard *.c ./modules/motorCtrl/drives/keya/*.c)
C_SOURCES += $(wildcard *.c ./modules/motorCtrl/drives/bld/*.c)
C_SOURCES += $(wildcard *.c ./modules/motorCtrl/drives/aqmdbl/*.c)
C_SOURCES += $(wildcard *.c ./modules/motorCtrl/drives/aqm/*.c)
C_SOURCES += $(wildcard *.c ./modules/motorCtrl/fillter/*.c)
C_SOURCES += $(wildcard *.c ./modules/motorCtrl/init_config/*.c)
C_SOURCES += $(wildcard *.c ./modules/motorCtrl/pid/*.c)
C_SOURCES += $(wildcard *.c ./modules/motorCtrl/pid/fuzzy/*.c)
C_SOURCES += $(wildcard *.c ./modules/motorCtrl/test_monitor/*.c)
C_SOURCES += $(wildcard *.c ./modules/onlineUpdate/*.c)
C_SOURCES += $(wildcard *.c ./modules/sensor/*.c)
C_SOURCES += $(wildcard *.c ./modules/sensor/bms/*.c)
C_SOURCES += $(wildcard *.c ./modules/sensor/imu/*.c)
C_SOURCES += $(wildcard *.c ./modules/sensor/joy/*.c)
C_SOURCES += $(wildcard *.c ./modules/sensor/led/*.c)
C_SOURCES += $(wildcard *.c ./modules/sensor/odom/*.c)
C_SOURCES += $(wildcard *.c ./modules/sensor/temperature/*.c)
C_SOURCES += $(wildcard *.c ./modules/sensor/ultrasonic/*.c)
C_SOURCES += $(wildcard *.c ./modules/sysMonitor/*.c)
C_SOURCES += $(wildcard *.c ./interface/testMethod/Unity-master/src/*.c)
C_SOURCES += $(wildcard *.c ./modules/testMethod/chassis_ut/*.c)
C_SOURCES += $(wildcard *.c ./modules/testMethod/chassis_ut/test_cases/*.c)
C_SOURCES += $(wildcard *.c ./modules/testMethod/faultInjector/*.c)
C_SOURCES += $(wildcard *.c ./modules/testMethod/hardFault/*.c)
C_SOURCES += $(wildcard *.c ./modules/testMethod/performance/*.c)
C_SOURCES += $(wildcard *.c ./modules/upperCommFsm/*.c)
C_SOURCES += $(wildcard *.c ./modules/upperCommFsm/states/*.c)

# ASM sources
ASM_SOURCES = startup_stm32f407xx.s
#ASM_SOURCES += $(wildcard *.s ./*.s) 

#######################################
# Tools
#######################################
PREFIX = arm-none-eabi-

CC = $(PREFIX)gcc
AS = $(PREFIX)gcc -x assembler-with-cpp
CP = $(PREFIX)objcopy
SZ = $(PREFIX)size

HEX = $(CP) -O ihex
BIN = $(CP) -O binary -S

#######################################
# CFLAGS
#######################################
# cpu
CPU = -mcpu=cortex-m4 -mthumb -Wall 
# fpu
FPU = -mfpu=fpv4-sp-d16
# float-abi
FLOAT-ABI = -mfloat-abi=hard

# mcu
MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)
# macros for gcc
# AS defines
AS_DEFS = 
# C defines
C_DEFS =  \
-DUSE_HAL_DRIVER \
-DSTM32F407xx \
-D__WDG \
-DUSE_STDPERIPH_DRIVER	\
-DLINUX_CI	

#-DUSING_MAKE_COMPL	\


# AS includes
AS_INCLUDES = \
# C includes
PROJECTDRIVERPATH = Drivers/STM32F4xx_HAL_Driver/Inc
CMSISPATH = Drivers/CMSIS
MIDD_SOURCE_PATH = Middlewares/Third_Party/FreeRTOS/Source

# addprefix的功能增加前缀,例如$(addprefix -I,./Inc)执行后为 -I ./Inc
C_INCLUDES = 
C_INCLUDES += $(addprefix -I,./Inc)
C_INCLUDES += $(addprefix -I,$(PROJECTDRIVERPATH))
C_INCLUDES += $(addprefix -I,./Drivers/STM32F4xx_HAL_Driver/Inc)
C_INCLUDES += $(addprefix -I,$(PROJECTDRIVERPATH)/Legacy)
C_INCLUDES += $(addprefix -I,$(MIDD_SOURCE_PATH)/portable/GCC/ARM_CM4F)
C_INCLUDES += $(addprefix -I,./Middlewares/Third_Party/FatFs/src)
C_INCLUDES += $(addprefix -I,./Middlewares/ST/STM32_USB_Device_Library/Core/Inc)
C_INCLUDES += $(addprefix -I,./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc)
C_INCLUDES += $(addprefix -I,$(CMSISPATH)/Device/ST/STM32F4xx/Include)
C_INCLUDES += $(addprefix -I,./Middlewares/Third_Party/FatFs/src)
C_INCLUDES += $(addprefix -I,$(CMSISPATH)/Include)
C_INCLUDES += $(addprefix -I,$(MIDD_SOURCE_PATH)/include)
C_INCLUDES += $(addprefix -I,$(MIDD_SOURCE_PATH)/CMSIS_RTOS)
C_INCLUDES += $(addprefix -I,./protocol)
C_INCLUDES += $(addprefix -I,./modules)
C_INCLUDES += $(addprefix -I,./Src)
C_INCLUDES += $(addprefix -I,./modules/alarm)
C_INCLUDES += $(addprefix -I,./modules/chassisFsm)
C_INCLUDES += $(addprefix -I,./modules/chassisFsm/states)
C_INCLUDES += $(addprefix -I,./modules/clock)
C_INCLUDES += $(addprefix -I,./modules/cmdline)
C_INCLUDES += $(addprefix -I,./modules/common/communication)
C_INCLUDES += $(addprefix -I,./modules/common/fsm)
C_INCLUDES += $(addprefix -I,./modules/common/log)
C_INCLUDES += $(addprefix -I,./modules/common/utils)
C_INCLUDES += $(addprefix -I,./modules/config)
C_INCLUDES += $(addprefix -I,./modules/drivers/imu_spi)
C_INCLUDES += $(addprefix -I,./modules/drivers/sd_card)
C_INCLUDES += $(addprefix -I,./modules/drivers/stmfalsh)
C_INCLUDES += $(addprefix -I,./modules/drivers/upper_power)
C_INCLUDES += $(addprefix -I,./modules/ftp)
C_INCLUDES += $(addprefix -I,./modules/internet)
C_INCLUDES += $(addprefix -I,./modules/joystick)
C_INCLUDES += $(addprefix -I,./modules/motorCtrl)
C_INCLUDES += $(addprefix -I,./modules/motorCtrl/drives)
C_INCLUDES += $(addprefix -I,./modules/motorCtrl/fillter)
C_INCLUDES += $(addprefix -I,./modules/motorCtrl/init_config)
C_INCLUDES += $(addprefix -I,./modules/motorCtrl/pid)
C_INCLUDES += $(addprefix -I,./modules/motorCtrl/pid/fuzzy)
C_INCLUDES += $(addprefix -I,./modules/motorCtrl/test_monitor)
C_INCLUDES += $(addprefix -I,./modules/onlineUpdate)
C_INCLUDES += $(addprefix -I,./modules/sensor)
C_INCLUDES += $(addprefix -I,./modules/sensor/bms)
C_INCLUDES += $(addprefix -I,./modules/sensor/imu)
C_INCLUDES += $(addprefix -I,./modules/sensor/joy)
C_INCLUDES += $(addprefix -I,./modules/sensor/led)
C_INCLUDES += $(addprefix -I,./modules/sensor/odom)
C_INCLUDES += $(addprefix -I,./modules/sensor/temperature)
C_INCLUDES += $(addprefix -I,./modules/sensor/ultrasonic)
C_INCLUDES += $(addprefix -I,./modules/sysMonitor)
C_INCLUDES += $(addprefix -I,./interface/testMethod/Unity-master/src)
C_INCLUDES += $(addprefix -I,./modules/testMethod/chassis_ut)
C_INCLUDES += $(addprefix -I,./modules/testMethod/chassis_ut/test_cases)
C_INCLUDES += $(addprefix -I,./modules/testMethod/faultInjector)
C_INCLUDES += $(addprefix -I,./modules/testMethod/hardFault)
C_INCLUDES += $(addprefix -I,./modules/testMethod/performance)
C_INCLUDES += $(addprefix -I,./modules/upperCommFsm)
C_INCLUDES += $(addprefix -I,./modules/upperCommFsm/states)
C_INCLUDES += $(addprefix -I,./interface)
C_INCLUDES += $(addprefix -I,./interface/alarm)
C_INCLUDES += $(addprefix -I,./interface/chassisFsm)
C_INCLUDES += $(addprefix -I,./interface/chassisFsm/states)
C_INCLUDES += $(addprefix -I,./interface/clock)
C_INCLUDES += $(addprefix -I,./interface/cmdline)
C_INCLUDES += $(addprefix -I,./interface/common/communication)
C_INCLUDES += $(addprefix -I,./interface/common/fsm)
C_INCLUDES += $(addprefix -I,./interface/common/log)
C_INCLUDES += $(addprefix -I,./interface/common/utils)
C_INCLUDES += $(addprefix -I,./interface/config)
C_INCLUDES += $(addprefix -I,./interface/drivers/imu_spi)
C_INCLUDES += $(addprefix -I,./interface/drivers/sd_card)
C_INCLUDES += $(addprefix -I,./interface/drivers/stmfalsh)
C_INCLUDES += $(addprefix -I,./interface/drivers/upper_power)
C_INCLUDES += $(addprefix -I,./interface/drivers/W5500)
C_INCLUDES += $(addprefix -I,./interface/drivers/W5500)
C_INCLUDES += $(addprefix -I,./interface/ftp)
C_INCLUDES += $(addprefix -I,./interface/internet)
C_INCLUDES += $(addprefix -I,./interface/joystick)
C_INCLUDES += $(addprefix -I,./interface/motorCtrl)
C_INCLUDES += $(addprefix -I,./interface/motorCtrl/drives)
C_INCLUDES += $(addprefix -I,./interface/motorCtrl/drives/aqm)
C_INCLUDES += $(addprefix -I,./interface/motorCtrl/drives/aqmdbl)
C_INCLUDES += $(addprefix -I,./interface/motorCtrl/drives/bld)
C_INCLUDES += $(addprefix -I,./interface/motorCtrl/drives/keya)
C_INCLUDES += $(addprefix -I,./interface/motorCtrl/fillter)
C_INCLUDES += $(addprefix -I,./interface/motorCtrl/init_config)
C_INCLUDES += $(addprefix -I,./interface/motorCtrl/pid/fuzzy)
C_INCLUDES += $(addprefix -I,./interface/motorCtrl/pid)
C_INCLUDES += $(addprefix -I,./interface/motorCtrl/test_monitor)
C_INCLUDES += $(addprefix -I,./interface/onlineUpdate)
C_INCLUDES += $(addprefix -I,./interface/sensor)
C_INCLUDES += $(addprefix -I,./interface/sensor/bms)
C_INCLUDES += $(addprefix -I,./interface/sensor/imu)
C_INCLUDES += $(addprefix -I,./interface/sensor/joy)
C_INCLUDES += $(addprefix -I,./interface/sensor/led)
C_INCLUDES += $(addprefix -I,./interface/sensor/odom)
C_INCLUDES += $(addprefix -I,./interface/sensor/temperature)
C_INCLUDES += $(addprefix -I,./interface/sensor/ultrasonic)
C_INCLUDES += $(addprefix -I,./interface/sysMonitor)
C_INCLUDES += $(addprefix -I,./interface/testMethod/Unity-master/examples)
C_INCLUDES += $(addprefix -I,./interface/testMethod/Unity-master/src)
C_INCLUDES += $(addprefix -I,./interface/testMethod/chassis_ut)
C_INCLUDES += $(addprefix -I,./interface/testMethod/chassis_ut/test_cases)
C_INCLUDES += $(addprefix -I,./interface/testMethod/faultInjector)
C_INCLUDES += $(addprefix -I,./interface/testMethod/hardFault)
C_INCLUDES += $(addprefix -I,./interface/testMethod/performance)
C_INCLUDES += $(addprefix -I,./interface/upperCommFsm)


# compile gcc flags
ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections

CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -s -fdata-sections -ffunction-sections

ifeq ($(DEBUG), 1)
CFLAGS += -g -gdwarf-2
endif

# Generate dependency information
CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)"




# link script
LDSCRIPT = STM32F407ZGTx_FLASH.ld

# libraries
LIBS = -lc -lm -lnosys 
LIBDIR = 
LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections
LDFLAGS += -mcpu=cortex-m4 -mthumb
LDFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
LDFLAGS += -Wl,--gc-sections 
LDFLAGS	+= -std=gnu99
LDFLAGS	+= -u_printf_float
#######################################
# default action: build all
#######################################
all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin

# list of objects
# notdir去掉文件名中的路径部分
# :.c = .o的意思是C文件对应相应的.o文件
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
vpath %.c $(sort $(dir $(C_SOURCES)))
# list of ASM program objects
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
vpath %.s $(sort $(dir $(ASM_SOURCES)))

OBJ_DIR = obj

$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) 
	@$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@
	@echo $(notdir $(<:.c=.o))
$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
	@$(AS) -c $(CFLAGS) $< -o $@
	@echo $(notdir $(<:.s=.o))
$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
	@$(CC) $(OBJECTS) $(LDFLAGS) -o $@
	@echo linking...
	$(SZ) $@
	rm -fR $(BUILD_DIR)/$(OBJ_DIR)
	mkdir $(BUILD_DIR)/$(OBJ_DIR)
$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
	$(HEX) $< $@
	
$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
	$(BIN) $< $@	
	mv -f $(BUILD_DIR)/*.o $(BUILD_DIR)/$(OBJ_DIR)/
	mv -f $(BUILD_DIR)/*.d $(BUILD_DIR)/$(OBJ_DIR)/
	mv -f $(BUILD_DIR)/*.lst $(BUILD_DIR)/$(OBJ_DIR)/
$(BUILD_DIR):
	mkdir $@		
	
#######################################
# clean up
#######################################
clean:
	@-rm -rf $(BUILD_DIR)/*
flash:
	export LD_LIBRARY_PATH=/usr/local/lib
	st-flash --reset write $(BUILD_DIR)/$(TARGET).bin 0x8000000

flash_app:
	st-flash --reset write $(BUILD_DIR)/$(TARGET).bin 0x800C400

flash_jlink:
	openocd -f interface/jlink.cfg -f target/stm32f4x.cfg 2>/dev/null & \
	telnet localhost 4444

erase:
	st-flash erase
  
#######################################
# dependencies
#######################################
-include $(wildcard $(BUILD_DIR)/*.d)

# *** EOF ***

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值