191 lines
6.1 KiB
Makefile
191 lines
6.1 KiB
Makefile
# Makefile for BMU-18S-Firmware (STM32F103)
|
|
# Explicitly synced with BMU-18S_APP.uvprojx
|
|
|
|
TARGET = BMU_18S_APP_V6337
|
|
MCU = cortex-m3
|
|
OPT = -Os
|
|
BUILD_DIR = build
|
|
|
|
# --- Toolchain ---
|
|
CC = arm-none-eabi-gcc
|
|
AS = arm-none-eabi-gcc -x assembler-with-cpp
|
|
CP = arm-none-eabi-objcopy
|
|
SZ = arm-none-eabi-size
|
|
|
|
# --- Paths ---
|
|
SDK_PATH = .
|
|
USER_DIR = $(SDK_PATH)/USER
|
|
CORE_DIR = $(SDK_PATH)/CORE
|
|
APP_DIR = $(SDK_PATH)/APP
|
|
HARDWARE_DIR = $(SDK_PATH)/HARDWARE
|
|
SYSTEM_DIR = $(SDK_PATH)/SYSTEM
|
|
FWLIB_DIR = $(SDK_PATH)/FWLIB
|
|
UCOS_DIR = $(SDK_PATH)/UCOSIII
|
|
|
|
# --- Sources (Explicitly from Keil Project) ---
|
|
C_SOURCES = \
|
|
$(USER_DIR)/main.c \
|
|
$(FWLIB_DIR)/stm32f10x_it.c \
|
|
$(FWLIB_DIR)/system_stm32f10x.c \
|
|
$(APP_DIR)/console.c \
|
|
$(APP_DIR)/screen.c \
|
|
$(APP_DIR)/asutil.c \
|
|
$(APP_DIR)/app_ver.c \
|
|
$(APP_DIR)/brtc.c \
|
|
$(APP_DIR)/io.c \
|
|
$(APP_DIR)/temp.c \
|
|
$(APP_DIR)/display_status.c \
|
|
$(APP_DIR)/device_param.c \
|
|
$(APP_DIR)/dflash_sf1.c \
|
|
$(APP_DIR)/dflash_sbs.c \
|
|
$(APP_DIR)/flash_if.c \
|
|
$(APP_DIR)/can_comm.c \
|
|
$(APP_DIR)/can_data_process.c \
|
|
$(APP_DIR)/can_inv_data_process.c \
|
|
$(APP_DIR)/can_update_process.c \
|
|
$(APP_DIR)/ltc6813_comm.c \
|
|
$(APP_DIR)/alarm.c \
|
|
$(APP_DIR)/task_manager.c \
|
|
$(HARDWARE_DIR)/can.c \
|
|
$(HARDWARE_DIR)/iwdg.c \
|
|
$(HARDWARE_DIR)/led.c \
|
|
$(HARDWARE_DIR)/spi.c \
|
|
$(HARDWARE_DIR)/ltc681x.c \
|
|
$(HARDWARE_DIR)/ltc6813.c \
|
|
$(CORE_DIR)/core_cm3.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/misc.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \
|
|
$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c \
|
|
$(SYSTEM_DIR)/delay.c \
|
|
$(SYSTEM_DIR)/sys.c \
|
|
$(SYSTEM_DIR)/usart.c \
|
|
$(UCOS_DIR)/UCOS_BSP/bsp.c \
|
|
$(UCOS_DIR)/uC-CPU/ARM-Cortex-M3/GNU/cpu_c.c \
|
|
$(UCOS_DIR)/uC-CPU/cpu_core.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_cfg_app.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_core.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_dbg.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_flag.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_int.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_mem.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_msg.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_mutex.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_pend_multi.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_prio.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_q.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_sem.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_stat.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_task.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_tick.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_time.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_tmr.c \
|
|
$(UCOS_DIR)/uCOS-III/Source/os_var.c \
|
|
$(UCOS_DIR)/uCOS-III/Ports/ARM-Cortex-M3/Generic/GNU/os_cpu_c.c \
|
|
$(UCOS_DIR)/uCOS_CONFIG/os_app_hooks.c \
|
|
$(UCOS_DIR)/uC-LIB/lib_ascii.c \
|
|
$(UCOS_DIR)/uC-LIB/lib_math.c \
|
|
$(UCOS_DIR)/uC-LIB/lib_mem.c \
|
|
$(UCOS_DIR)/uC-LIB/lib_str.c
|
|
|
|
# --- ASM Sources ---
|
|
ASM_S_SOURCES = \
|
|
$(UCOS_DIR)/uC-CPU/ARM-Cortex-M3/GNU/cpu_a.s \
|
|
$(UCOS_DIR)/uC-LIB/Ports/ARM-Cortex-M3/GNU/lib_mem_a.s \
|
|
$(UCOS_DIR)/uCOS-III/Ports/ARM-Cortex-M3/Generic/GNU/os_cpu_a.s
|
|
|
|
ASM_UPPER_S_SOURCES = \
|
|
$(CORE_DIR)/startup_stm32f10x_md_gcc.S
|
|
|
|
# --- Includes ---
|
|
C_INCLUDES = \
|
|
-I$(CORE_DIR) \
|
|
-I$(SYSTEM_DIR) \
|
|
-I$(USER_DIR) \
|
|
-I$(HARDWARE_DIR) \
|
|
-I$(FWLIB_DIR) \
|
|
-I$(FWLIB_DIR)/CMSIS/Include \
|
|
-I$(FWLIB_DIR)/STM32F10x_StdPeriph_Driver/inc \
|
|
-I$(UCOS_DIR)/uC-CPU \
|
|
-I$(UCOS_DIR)/uC-LIB \
|
|
-I$(UCOS_DIR)/uCOS-III \
|
|
-I$(UCOS_DIR)/UCOS_BSP \
|
|
-I$(UCOS_DIR)/uCOS_CONFIG \
|
|
-I$(UCOS_DIR)/uCOS-III/Source \
|
|
-I$(UCOS_DIR)/uC-CPU/ARM-Cortex-M3/GNU \
|
|
-I$(UCOS_DIR)/uC-LIB/Ports/ARM-Cortex-M3/GNU \
|
|
-I$(UCOS_DIR)/uCOS-III/Ports/ARM-Cortex-M3/Generic/GNU \
|
|
-I$(APP_DIR)
|
|
|
|
# --- Compiler Flags ---
|
|
C_DEFS = \
|
|
-DUSE_STDPERIPH_DRIVER \
|
|
-DSTM32F10X_MD \
|
|
-DARM_MATH_CM3 \
|
|
-D__FPU_PRESENT=1 \
|
|
-D__FPU_USED=1
|
|
|
|
CFLAGS = -mcpu=$(MCU) -mthumb $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections -std=c99
|
|
ASFLAGS = -mcpu=$(MCU) -mthumb $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections
|
|
|
|
# --- Linker Flags ---
|
|
LDSCRIPT = stm32f103.ld
|
|
LDFLAGS = -mcpu=$(MCU) -mthumb -specs=nano.specs -specs=nosys.specs -T$(LDSCRIPT) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--gc-sections
|
|
|
|
# --- Build Rules ---
|
|
all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin
|
|
|
|
# Object list
|
|
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
|
|
vpath %.c $(sort $(dir $(C_SOURCES)))
|
|
|
|
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_S_SOURCES:.s=.o)))
|
|
vpath %.s $(sort $(dir $(ASM_S_SOURCES)))
|
|
|
|
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_UPPER_S_SOURCES:.S=.o)))
|
|
vpath %.S $(sort $(dir $(ASM_UPPER_S_SOURCES)))
|
|
|
|
$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR)
|
|
$(CC) -c $(CFLAGS) $< -o $@
|
|
|
|
$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
|
|
$(AS) -c $(ASFLAGS) $< -o $@
|
|
|
|
$(BUILD_DIR)/%.o: %.S Makefile | $(BUILD_DIR)
|
|
$(AS) -c $(ASFLAGS) $< -o $@
|
|
|
|
$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
|
|
$(CC) $(OBJECTS) $(LDFLAGS) -o $@
|
|
$(SZ) $@
|
|
|
|
$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf
|
|
$(CP) -O ihex $< $@
|
|
|
|
$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf
|
|
$(CP) -O binary -S $< $@
|
|
|
|
$(BUILD_DIR):
|
|
mkdir $@
|
|
|
|
clean:
|
|
rm -fR $(BUILD_DIR)
|