初版适配和修改
This commit is contained in:
125
Makefile
Normal file
125
Makefile
Normal file
@@ -0,0 +1,125 @@
|
||||
PROJECT := OriginCar
|
||||
BUILD ?= debug
|
||||
FRAMEWORK_DIR ?= ../../stm32/stm32f407-gcc-framework
|
||||
FRAMEWORK_DIR := $(abspath $(FRAMEWORK_DIR))
|
||||
|
||||
CC := arm-none-eabi-gcc
|
||||
OBJCOPY := arm-none-eabi-objcopy
|
||||
SIZE := arm-none-eabi-size
|
||||
NM := arm-none-eabi-nm
|
||||
OPENOCD := openocd
|
||||
|
||||
MCU := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard
|
||||
DEFS := -DSTM32F40_41xxx -DUSE_STDPERIPH_DRIVER -DARM_MATH_CM4 \
|
||||
-D__FPU_PRESENT=1 -D__FPU_USED=1 -DHSE_VALUE=8000000U
|
||||
INCLUDES := \
|
||||
-IGCC_COMPAT/include \
|
||||
-IUSER -ICORE -IFWLIB/inc \
|
||||
-ISYSTEM/delay -ISYSTEM/sys -ISYSTEM/usart \
|
||||
-IHARDWARE -IHARDWARE/MPU6050 -IBALANCE \
|
||||
-IFreeRTOS/include -IFreeRTOS/portable/GCC/ARM_CM4F
|
||||
|
||||
APP_SRC := \
|
||||
USER/main.c USER/stm32f4xx_it.c USER/system_stm32f4xx.c \
|
||||
HARDWARE/adc.c HARDWARE/can.c HARDWARE/encoder.c HARDWARE/key.c \
|
||||
HARDWARE/motor.c HARDWARE/oled.c HARDWARE/pstwo.c HARDWARE/timer.c \
|
||||
HARDWARE/usartx.c HARDWARE/MPU6050/MPU6050.c HARDWARE/MPU6050/I2C.c \
|
||||
SYSTEM/delay/delay.c SYSTEM/usart/usart.c \
|
||||
BALANCE/system.c BALANCE/balance.c BALANCE/robot_select_init.c BALANCE/show.c
|
||||
|
||||
FWLIB_SRC := \
|
||||
FWLIB/src/misc.c FWLIB/src/stm32f4xx_gpio.c FWLIB/src/stm32f4xx_rcc.c \
|
||||
FWLIB/src/stm32f4xx_syscfg.c FWLIB/src/stm32f4xx_usart.c \
|
||||
FWLIB/src/stm32f4xx_adc.c FWLIB/src/stm32f4xx_can.c \
|
||||
FWLIB/src/stm32f4xx_tim.c FWLIB/src/stm32f4xx_pwr.c
|
||||
|
||||
FREERTOS_SRC := \
|
||||
FreeRTOS/croutine.c FreeRTOS/event_groups.c FreeRTOS/list.c \
|
||||
FreeRTOS/queue.c FreeRTOS/tasks.c FreeRTOS/timers.c \
|
||||
FreeRTOS/portable/GCC/ARM_CM4F/port.c \
|
||||
FreeRTOS/portable/MemMang/heap_4.c
|
||||
|
||||
C_SRC := $(APP_SRC) $(FWLIB_SRC) $(FREERTOS_SRC) \
|
||||
GCC_COMPAT/runtime.c GCC_COMPAT/sys_gcc.c
|
||||
UPPER_C_SRC := HARDWARE/LED.C
|
||||
BUILD_DIR := build/$(BUILD)
|
||||
C_OBJS := $(addprefix $(BUILD_DIR)/,$(C_SRC:.c=.o))
|
||||
UPPER_C_OBJS := $(addprefix $(BUILD_DIR)/,$(UPPER_C_SRC:.C=.o))
|
||||
STARTUP_OBJ := $(BUILD_DIR)/startup_stm32f407xx_gcc.o
|
||||
OBJS := $(C_OBJS) $(UPPER_C_OBJS) $(STARTUP_OBJ)
|
||||
DEPS := $(OBJS:.o=.d)
|
||||
|
||||
ifeq ($(BUILD),release)
|
||||
OPT_FLAGS := -Os -g0 -DNDEBUG
|
||||
else
|
||||
OPT_FLAGS := -O0 -g3 -DDEBUG -fno-omit-frame-pointer
|
||||
endif
|
||||
|
||||
CFLAGS := $(MCU) $(DEFS) $(INCLUDES) $(OPT_FLAGS) \
|
||||
-std=gnu11 -ffreestanding -ffunction-sections -fdata-sections -fno-common \
|
||||
-Wall -Wextra -Wshadow -Wno-unused-parameter -Wno-sign-compare \
|
||||
-MMD -MP
|
||||
ASFLAGS := $(MCU) $(DEFS) $(OPT_FLAGS) -x assembler-with-cpp -Wa,--gdwarf-2
|
||||
LDSCRIPT := $(FRAMEWORK_DIR)/STM32F407VGTX_FLASH.ld
|
||||
LDFLAGS := $(MCU) -nostdlib -T$(LDSCRIPT) \
|
||||
-Wl,-Map=$(BUILD_DIR)/$(PROJECT).map,--cref,--gc-sections \
|
||||
-Wl,--start-group -lgcc -Wl,--end-group
|
||||
|
||||
ELF := $(BUILD_DIR)/$(PROJECT).elf
|
||||
HEX := $(BUILD_DIR)/$(PROJECT).hex
|
||||
BIN := $(BUILD_DIR)/$(PROJECT).bin
|
||||
|
||||
.PHONY: all debug release clean flash debug-server linkscope-info check-tools
|
||||
|
||||
all: check-tools $(ELF) $(HEX) $(BIN)
|
||||
$(SIZE) $(ELF)
|
||||
|
||||
debug:
|
||||
$(MAKE) BUILD=debug all
|
||||
|
||||
release:
|
||||
$(MAKE) BUILD=release all
|
||||
|
||||
check-tools:
|
||||
@command -v $(CC) >/dev/null || { echo "Missing $(CC)"; exit 1; }
|
||||
@command -v $(OPENOCD) >/dev/null || { echo "Missing $(OPENOCD)"; exit 1; }
|
||||
@test -f $(LDSCRIPT) || { echo "Framework not found: $(FRAMEWORK_DIR)"; exit 1; }
|
||||
|
||||
$(ELF): $(OBJS)
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(OBJS) $(LDFLAGS) -o $@
|
||||
|
||||
$(HEX): $(ELF)
|
||||
$(OBJCOPY) -O ihex $< $@
|
||||
|
||||
$(BIN): $(ELF)
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
|
||||
$(BUILD_DIR)/%.o: %.c
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
$(BUILD_DIR)/%.o: %.C
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) -x c -c $< -o $@
|
||||
|
||||
$(STARTUP_OBJ): $(FRAMEWORK_DIR)/CORE/startup_stm32f407xx_gcc.s
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(ASFLAGS) -c $< -o $@
|
||||
|
||||
flash: all
|
||||
$(OPENOCD) -f openocd.cfg -c "program $(ELF) verify reset exit"
|
||||
|
||||
debug-server:
|
||||
$(OPENOCD) -f openocd.cfg
|
||||
|
||||
linkscope-info: $(ELF)
|
||||
@echo "ELF: $(abspath $(ELF))"
|
||||
@echo "GDB server: localhost:3333 (run 'make debug-server')"
|
||||
@echo "Example observable globals:"
|
||||
@$(NM) -S --size-sort $(ELF) | grep -E ' (Car_Mode|RC_Velocity|Velocity_KP|Velocity_KI|Move_X|Move_Y|Move_Z)$$' || true
|
||||
|
||||
clean:
|
||||
rm -rf build
|
||||
|
||||
-include $(DEPS)
|
||||
Reference in New Issue
Block a user