135 lines
3.9 KiB
Makefile
135 lines
3.9 KiB
Makefile
TARGET = stm32-usb-freertos
|
|
BUILD_DIR = Build
|
|
|
|
# Приложение
|
|
C_SOURCES = \
|
|
App/Src/main.c \
|
|
App/Src/audio_adc.c \
|
|
App/Src/audio_processor.c \
|
|
App/Src/protocol.c \
|
|
App/Src/health.c \
|
|
App/Src/usb_descriptors.c \
|
|
App/Src/system_stm32f1xx.c \
|
|
|
|
# FreeRTOS
|
|
C_SOURCES += \
|
|
Middlewares/FreeRTOS/croutine.c \
|
|
Middlewares/FreeRTOS/event_groups.c \
|
|
Middlewares/FreeRTOS/list.c \
|
|
Middlewares/FreeRTOS/queue.c \
|
|
Middlewares/FreeRTOS/tasks.c \
|
|
Middlewares/FreeRTOS/timers.c \
|
|
Middlewares/FreeRTOS/portable/GCC/ARM_CM3/port.c \
|
|
Middlewares/FreeRTOS/portable/MemMang/heap_4.c
|
|
|
|
# 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 \
|
|
Middlewares/TinyUSB/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
|
|
|
|
# CMSIS-DSP sources
|
|
C_SOURCES += \
|
|
$(CMSIS_DSP)/Source/TransformFunctions/arm_cfft_radix8_f32.c \
|
|
$(CMSIS_DSP)/Source/TransformFunctions/arm_bitreversal2.c \
|
|
$(CMSIS_DSP)/Source/TransformFunctions/arm_rfft_fast_f32.c \
|
|
$(CMSIS_DSP)/Source/TransformFunctions/arm_rfft_fast_init_f32.c \
|
|
$(CMSIS_DSP)/Source/TransformFunctions/arm_cfft_f32.c \
|
|
$(CMSIS_DSP)/Source/TransformFunctions/arm_cfft_init_f32.c \
|
|
$(CMSIS_DSP)/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c \
|
|
$(CMSIS_DSP)/Source/CommonTables/arm_const_structs.c \
|
|
$(CMSIS_DSP)/Source/CommonTables/arm_common_tables.c \
|
|
$(CMSIS_DSP)/Source/FastMathFunctions/arm_cos_f32.c
|
|
|
|
# CMSIS-DSP
|
|
CMSIS_DSP = Middlewares/CMSIS-DSP
|
|
|
|
# Startup
|
|
ASM_SOURCES = App/Src/startup_stm32f103xb.s
|
|
|
|
# --- Настройки компилятора ---
|
|
PREFIX = arm-none-eabi-
|
|
CC = $(PREFIX)gcc
|
|
AS = $(PREFIX)gcc -x assembler-with-cpp
|
|
CP = $(PREFIX)objcopy
|
|
SZ = $(PREFIX)size
|
|
|
|
MCU = -mcpu=cortex-m3 -mthumb
|
|
|
|
# Includes
|
|
C_INCLUDES = \
|
|
-IApp/Inc \
|
|
-IDrivers/CMSIS/Core/Include \
|
|
-IDrivers/CMSIS/Device/ST/STM32F1xx/Include \
|
|
-IMiddlewares/FreeRTOS/include \
|
|
-IMiddlewares/FreeRTOS/portable/GCC/ARM_CM3 \
|
|
-IMiddlewares/TinyUSB/src \
|
|
-I$(CMSIS_DSP)/Include \
|
|
-I$(CMSIS_DSP)/PrivateInclude
|
|
|
|
# Defines
|
|
C_DEFS = \
|
|
-DSTM32F103xB \
|
|
-DCFG_TUSB_MCU=OPT_MCU_STM32F1 \
|
|
-DARM_MATH_CM3
|
|
|
|
CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) -Os -Wall -fdata-sections -ffunction-sections -g -gdwarf-2
|
|
|
|
# Linker
|
|
LDSCRIPT = stm32f103c8.ld
|
|
# LIBS = -lc -lm -lnosys
|
|
# LDFLAGS = $(MCU) -T$(LDSCRIPT) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections -Wl,--no-warn-rwx-segments
|
|
# LDFLAGS = $(MCU) -T$(LDSCRIPT) --specs=nano.specs --specs=nosys.specs \
|
|
# -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections
|
|
LIBS = -Wl,--start-group -lc_nano -lm -lgcc -lnosys -Wl,--end-group
|
|
LDFLAGS = $(MCU) -T$(LDSCRIPT) $(LIBS) \
|
|
-Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref \
|
|
-Wl,--gc-sections \
|
|
-Wl,--no-warn-rwx-segments
|
|
|
|
# --- Генерация списка объектов ---
|
|
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 файлов
|
|
$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR)
|
|
$(CC) -c $(CFLAGS) $< -o $@
|
|
|
|
# Компиляция ASM файлов
|
|
$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
|
|
$(AS) -c $(CFLAGS) $< -o $@
|
|
|
|
# Линковка
|
|
$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
|
|
$(CC) $(OBJECTS) $(LDFLAGS) -o $@
|
|
$(SZ) $@
|
|
|
|
# Генерация HEX
|
|
$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
|
|
$(CP) -O ihex $< $@
|
|
|
|
# Генерация BIN
|
|
$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
|
|
$(CP) -O binary -S $< $@
|
|
|
|
# Создание директории Build
|
|
$(BUILD_DIR):
|
|
mkdir -p $@
|
|
|
|
clean:
|
|
rm -rf $(BUILD_DIR)
|
|
|
|
flash:
|
|
st-flash write $(BUILD_DIR)/$(TARGET).bin 0x8000000
|
|
|
|
.PHONY: all clean flash
|