fix(build): update

This commit is contained in:
2025-12-24 20:24:17 +03:00
parent 2cde55d401
commit ffd2f1dade
5 changed files with 565 additions and 26 deletions

View File

@@ -4,7 +4,9 @@ BUILD_DIR = Build
# --- Исходники ---
# 1. Приложение
C_SOURCES = \
App/Src/main.c
App/Src/main.c \
App/Src/usb_descriptors.c \
App/Src/system_stm32f1xx.c \
# 2. FreeRTOS
C_SOURCES += \
@@ -18,15 +20,12 @@ Middlewares/FreeRTOS/portable/GCC/ARM_CM3/port.c \
Middlewares/FreeRTOS/portable/MemMang/heap_4.c
# 3. TinyUSB
# Базовые файлы
C_SOURCES += \
Middlewares/TinyUSB/src/tusb.c \
Middlewares/TinyUSB/src/common/tusb_fifo.c \
Middlewares/TinyUSB/src/device/usbd.c \
Middlewares/TinyUSB/src/device/usbd_control.c \
Middlewares/TinyUSB/src/class/cdc/cdc_device.c
# Драйвер для STM32 (Portable)
C_SOURCES += \
Middlewares/TinyUSB/src/class/cdc/cdc_device.c \
Middlewares/TinyUSB/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
# 4. Startup
@@ -39,7 +38,7 @@ AS = $(PREFIX)gcc -x assembler-with-cpp
CP = $(PREFIX)objcopy
SZ = $(PREFIX)size
MCU = -mcpu=cortex-m3 -mthumb -DSTM32F103xB
MCU = -mcpu=cortex-m3 -mthumb
# Includes
C_INCLUDES = \
@@ -50,7 +49,7 @@ C_INCLUDES = \
-IMiddlewares/FreeRTOS/portable/GCC/ARM_CM3 \
-IMiddlewares/TinyUSB/src
# TinyUSB config specific defines
# Defines
C_DEFS = \
-DSTM32F103xB \
-DCFG_TUSB_MCU=OPT_MCU_STM32F1
@@ -62,17 +61,22 @@ LDSCRIPT = stm32f103c8.ld
LIBS = -lc -lm -lnosys
LDFLAGS = $(MCU) -T$(LDSCRIPT) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections
# --- Генерация списка объектов ---
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
vpath %.c $(sort $(dir $(C_SOURCES)))
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
vpath %.s $(sort $(dir $(ASM_SOURCES)))
# --- Правила сборки ---
all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin
# Компиляция C
# Компиляция C файлов
$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR)
@mkdir -p $(dir $@)
$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@
$(CC) -c $(CFLAGS) $< -o $@
# Компиляция ASM
# Компиляция ASM файлов
$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
@mkdir -p $(dir $@)
$(AS) -c $(CFLAGS) $< -o $@
# Линковка
@@ -80,20 +84,17 @@ $(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
$(CC) $(OBJECTS) $(LDFLAGS) -o $@
$(SZ) $@
$(BUILD_DIR)/%.hex: $(BUILD_DIR)/$(TARGET).elf | $(BUILD_DIR)
# Генерация HEX
$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
$(CP) -O ihex $< $@
$(BUILD_DIR)/%.bin: $(BUILD_DIR)/$(TARGET).elf | $(BUILD_DIR)
# Генерация BIN
$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
$(CP) -O binary -S $< $@
# Создание директории Build
$(BUILD_DIR):
mkdir $@
# Генерация списка объектов (автоматически из C_SOURCES)
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
vpath %.c $(sort $(dir $(C_SOURCES)))
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
vpath %.s $(sort $(dir $(ASM_SOURCES)))
mkdir -p $@
clean:
rm -rf $(BUILD_DIR)
@@ -101,3 +102,5 @@ clean:
flash:
st-flash write $(BUILD_DIR)/$(TARGET).bin 0x8000000
.PHONY: all clean flash