Files
2026-07-13 17:10:02 +09:00

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)