initial commit
This commit is contained in:
82
sdk/software/bsp/common.mk
Normal file
82
sdk/software/bsp/common.mk
Normal file
@@ -0,0 +1,82 @@
|
||||
|
||||
LA32R_GCC := loongarch32r-linux-gnusf-gcc
|
||||
LA32R_AS := loongarch32r-linux-gnusf-as
|
||||
LA32R_GXX := loongarch32r-linux-gnusf-g++
|
||||
LA32R_OBJDUMP := loongarch32r-linux-gnusf-objdump
|
||||
LA32R_GDB := loongarch32r-linux-gnusf-gdb
|
||||
LA32R_AR := loongarch32r-linux-gnusf-ar
|
||||
LA32R_OBJCOPY := loongarch32r-linux-gnusf-objcopy
|
||||
LA32R_READELF := loongarch32r-linux-gnusf-readelf
|
||||
|
||||
.PHONY: all
|
||||
all: $(TARGET)
|
||||
|
||||
#TODO: 根据Cache实际情况调整has_cache宏,以在start.S中生成正确的Cache初始化代码
|
||||
CFLAGS += -Dhas_cache=1
|
||||
CFLAGS += -Dcache_index_depth=0x100 -Dcache_offset_width=0x4 -Dcache_way=2
|
||||
CFLAGS += -ffunction-sections -fdata-sections
|
||||
CFLAGS += -nostartfiles -nostdlib -nostdinc -static -fno-builtin
|
||||
CFLAGS += -DCLOCKS_PER_SEC=CORE_CLOCKS_PER_SEC -D_CLOCKS_PER_SEC_=CORE_CLOCKS_PER_SEC
|
||||
CFLAGS += -DUSE_CPU_CLOCK_COUNT
|
||||
|
||||
#若使用 newlib , 将下面的 -lsemihost 替换为 -lgloss
|
||||
LDFLAGS += -T $(LINKER_SCRIPT) \
|
||||
-Wl,--gc-sections -Wl,--check-sections \
|
||||
-lc -lm -lg -lsemihost -lgcc -L$(PICOLIBC_DIR)/lib
|
||||
|
||||
LINKER_SCRIPT := $(COMMON_DIR)/env/script.lds
|
||||
|
||||
ASM_SRCS += $(COMMON_DIR)/env/start.S
|
||||
|
||||
ifeq ($(TARGET), RTThread_Nano)
|
||||
|
||||
else
|
||||
ASM_SRCS += $(COMMON_DIR)/env/trap_handler.S
|
||||
endif
|
||||
|
||||
C_SRCS += $(COMMON_DIR)/drivers/confreg_time.c
|
||||
C_SRCS += $(COMMON_DIR)/drivers/core_time.c
|
||||
C_SRCS += $(COMMON_DIR)/drivers/common_func.c
|
||||
C_SRCS += $(COMMON_DIR)/drivers/dvi.c \
|
||||
$(COMMON_DIR)/drivers/led.c \
|
||||
$(COMMON_DIR)/drivers/seg7.c
|
||||
|
||||
INCLUDES += -I./ \
|
||||
-I$(COMMON_DIR)/include \
|
||||
-I$(PICOLIBC_DIR)/include \
|
||||
-I$(GCC_DIR)/lib/gcc/loongarch32r-linux-gnusf/8.3.0/include \
|
||||
-I$(GCC_DIR)/lib/gcc/loongarch32r-linux-gnusf/8.3.0/include-fixed
|
||||
|
||||
ASM_OBJS := $(ASM_SRCS:.S=.o)
|
||||
C_OBJS := $(C_SRCS:.c=.o)
|
||||
|
||||
LINK_OBJS += $(ASM_OBJS) $(C_OBJS)
|
||||
LINK_DEPS += $(LINKER_SCRIPT)
|
||||
|
||||
CLEAN_OBJS += $(OBJDIR)/$(TARGET).elf $(LINK_OBJS) $(OBJDIR)/$(TARGET).s $(OBJDIR)/$(TARGET).bin $(OBJDIR)/convert $(OBJDIR)/axi_ram.coe $(OBJDIR)/axi_ram.mif $(OBJDIR)/rom.vlog
|
||||
|
||||
$(TARGET): $(LINK_OBJS) $(LINK_DEPS) convert Makefile
|
||||
$(LA32R_GCC) $(CFLAGS) $(INCLUDES) $(LINK_OBJS) -o $(OBJDIR)/$@.elf $(LDFLAGS)
|
||||
$(LA32R_OBJCOPY) -O binary $(OBJDIR)/$@.elf $(OBJDIR)/$@.bin
|
||||
$(LA32R_OBJDUMP) --disassemble-all -S $(OBJDIR)/$@.elf > $(OBJDIR)/$@.s
|
||||
$(OBJDIR)/convert $@.bin $(OBJDIR)/
|
||||
cp ./$(OBJDIR)/axi_ram.mif $(COMMON_DIR)/../../
|
||||
cp ./$(OBJDIR)/axi_ram.mif $(LA32RSOC_WINDOWS_HOME)/sdk
|
||||
cp ./$(OBJDIR)/$@.bin $(COMMON_DIR)/../../
|
||||
cp ./$(OBJDIR)/$@.bin $(LA32RSOC_WINDOWS_HOME)/sdk
|
||||
rm -f $(LINK_OBJS)
|
||||
rm -f $(OBJDIR)/convert
|
||||
|
||||
$(ASM_OBJS): %.o: %.S
|
||||
$(LA32R_GCC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
|
||||
|
||||
$(C_OBJS): %.o: %.c
|
||||
$(LA32R_GCC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
|
||||
|
||||
convert: $(COMMON_DIR)/env/convert.c
|
||||
mkdir -p $(OBJDIR)/
|
||||
gcc -o $(OBJDIR)/convert $(COMMON_DIR)/env/convert.c
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -f $(CLEAN_OBJS)
|
||||
Reference in New Issue
Block a user