1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/QQxiaoming-gd32vf103_freertos

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Makefile 6.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
xiaoming Отправлено 13.09.2021 05:17 0a82ee6
##########################################################################################################################
# gd32vf103 GCC compiler Makefile
##########################################################################################################################
# ------------------------------------------------
# Generic Makefile (based on gcc)
# ------------------------------------------------
######################################
# target
######################################
TARGET = gd32vf103
######################################
# building variables
######################################
# debug build?
DEBUG = 1
# optimization
OPT = -Og
PROJECTBASE = $(PWD)
override PROJECTBASE := $(abspath $(PROJECTBASE))
TOP_DIR = $(PROJECTBASE)
#######################################
# binaries
#######################################
PREFIX = /opt/gcc-riscv64-unknown-elf/bin/riscv64-unknown-elf-
CC = $(PREFIX)gcc
AS = $(PREFIX)gcc -x assembler-with-cpp
OBJCOPY = $(PREFIX)objcopy
OBJDUMP = $(PREFIX)objdump
AR = $(PREFIX)ar
SZ = $(PREFIX)size
LD = $(PREFIX)ld
HEX = $(OBJCOPY) -O ihex
BIN = $(OBJCOPY) -O binary -S
#GDB = $(PREFIX)gdb
GDB = /opt/riscv-none-eabi-insight/bin/riscv-none-eabi-insight #使用insight代替gdb来调试
#######################################
# paths
#######################################
# firmware library path
PERIFLIB_PATH =
# Build path
BUILD_DIR = build
OBJ_DIR = $(BUILD_DIR)/obj
######################################
# source
######################################
# C sources
C_SOURCES = \
${wildcard $(TOP_DIR)/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/*.c} \
${wildcard $(TOP_DIR)/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/*.c} \
${wildcard $(TOP_DIR)/GD32VF103_Firmware_Library/RISCV/drivers/*.c} \
${wildcard $(TOP_DIR)/GD32VF103_Firmware_Library/RISCV/env_Eclipse/*.c} \
${wildcard $(TOP_DIR)/GD32VF103_Firmware_Library/RISCV/stubs/*.c} \
${wildcard $(TOP_DIR)/freertos/*.c} \
${wildcard $(TOP_DIR)/freertos/portable/GCC/N200/*.c} \
${wildcard $(TOP_DIR)/freertos/portable/MemMang/heap_4.c} \
${wildcard $(TOP_DIR)/SEGGER/*.c} \
${wildcard $(TOP_DIR)/SEGGER/FreeRTOSV10/*.c} \
${wildcard $(TOP_DIR)/SEGGER/FreeRTOSV10/Config/*.c} \
${wildcard $(TOP_DIR)/SEGGER/port/*.c} \
${wildcard $(TOP_DIR)/Application/*.c} \
# ASM sources
ASM_SOURCES = \
${wildcard $(TOP_DIR)/GD32VF103_Firmware_Library/RISCV/env_Eclipse/*.S} \
${wildcard $(TOP_DIR)/freertos/portable/GCC/N200/*.S}
######################################
# firmware library
######################################
PERIFLIB_SOURCES =
#######################################
# CFLAGS
#######################################
# cpu
# 可选 rv32i[m][a][f[d]][c]
# rv32g[c]
# rv64i[m][a][f[d]][c]
# rv64g[c]
# i为通用指令,m为整数乘法法指令,a为原子操作指令,f为单精度浮点指令,d为双精度浮点指令,c为16位压缩指令
# imafd合称g,即通用组合指令
# GD32的cpu指令集为rv32imac
CPU = -march=rv32imac
# abi
# 可选 ilp32
# ilp32f
# ilp32d
# lp64
# lp64f
# lp64d
# ilp32代表int、long为32位
# lp64代表int为32位,long为64位
# f为单精度浮点abi,d为双精度浮点abi
# GD32应使用ilp32
ABI = -mabi=ilp32
# mcu
MCU = $(CPU) $(ABI) -mcmodel=medlow -msmall-data-limit=8 -fmessage-length=0 -fsigned-char
# macros for gcc
# AS defines
AS_DEFS = \
-DGD32VF103C_START \
-DUSE_STDPERIPH_DRIVER
# C defines
C_DEFS = \
-DGD32VF103C_START \
-DUSE_STDPERIPH_DRIVER
# AS includes
AS_INCLUDES = \
-I $(TOP_DIR)/GD32VF103_Firmware_Library/RISCV/drivers
# C includes
C_INCLUDES = \
-I $(TOP_DIR)/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral \
-I $(TOP_DIR)/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include \
-I $(TOP_DIR)/GD32VF103_Firmware_Library/RISCV/drivers \
-I $(TOP_DIR)/freertos/include \
-I $(TOP_DIR)/freertos/portable/GCC/N200 \
-I $(TOP_DIR)/SEGGER \
-I $(TOP_DIR)/SEGGER/Config \
-I $(TOP_DIR)/SEGGER/FreeRTOSV10 \
-I $(TOP_DIR)/SEGGER/port \
-I $(TOP_DIR)/Application
# compile gcc flags
ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections
CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections
ifeq ($(DEBUG), 1)
CFLAGS += -g -gdwarf-2
endif
# Generate dependency information
CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)"
#######################################
# LDFLAGS
#######################################
# link script
LD_FILE = GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103xB.lds
LDSCRIPT = $(PROJECTBASE)/$(LD_FILE)
# libraries
LIBS = -lm
LIBDIR =
LDFLAGS = $(MCU) -nostartfiles -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map -Wl,--gc-sections
# default action: build all
all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin $(BUILD_DIR)/$(TARGET).lst
#######################################
# build the application
#######################################
# list of objects
OBJECTS = $(addprefix $(OBJ_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
vpath %.c $(sort $(dir $(C_SOURCES)))
# list of ASM program objects
OBJECTS += $(addprefix $(OBJ_DIR)/,$(notdir $(ASM_SOURCES:.S=.o)))
vpath %.S $(sort $(dir $(ASM_SOURCES)))
$(OBJ_DIR)/%.o: %.c Makefile | $(OBJ_DIR)
@echo CC $(notdir $@)
@$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(OBJ_DIR)/$(notdir $(<:.c=.lst)) $< -o $@
$(OBJ_DIR)/%.o: %.S Makefile | $(OBJ_DIR)
@echo AS $(notdir $@)
@$(AS) -c $(ASFLAGS) $< -o $@
$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
@echo LD $(notdir $@)
@$(CC) $(OBJECTS) $(LDFLAGS) -o $@
$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
@echo OBJCOPY $(notdir $@)
@$(HEX) $< $@
$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
@echo OBJCOPY $(notdir $@)
@$(BIN) $< $@
$(BUILD_DIR)/%.lst: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
@echo OBJDUMP $(notdir $@)
@$(OBJDUMP) --source --demangle --disassemble --reloc --wide $< > $@
@$(SZ) --format=berkeley $<
$(BUILD_DIR):
mkdir $@
ifeq ($(OBJ_DIR), $(wildcard $(OBJ_DIR)))
else
$(OBJ_DIR):$(BUILD_DIR)
mkdir $@
endif
#######################################
# clean up
#######################################
clean:
-rm -fR $(BUILD_DIR)
#######################################
# use gdb debug
#######################################
debug:
$(GDB) -x $(BUILD_DIR)/../gdb.sh
#######################################
# dependencies
#######################################
#-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
# *** EOF ***

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/QQxiaoming-gd32vf103_freertos.git
git@api.gitlife.ru:oschina-mirror/QQxiaoming-gd32vf103_freertos.git
oschina-mirror
QQxiaoming-gd32vf103_freertos
QQxiaoming-gd32vf103_freertos
master