12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- # SPDX-License-Identifier: GPL-2.0-or-later
- # Copyright (c) 2020 StarFiveTech, Inc
- # compiler tool chain
- CROSSCOMPILE?=riscv64-unknown-elf-
- CC=${CROSSCOMPILE}gcc
- LD=${CROSSCOMPILE}ld
- OBJCOPY=${CROSSCOMPILE}objcopy
- OBJDUMP=${CROSSCOMPILE}objdump
- # BOARD IS BEAGLEV OR EVBV1
- BOARD=BEAGLEV
- SUFFIX=$(shell date +%y%m%d)
- GIT_VERSION=$(shell git show -s --pretty=format:%h)
- BLD_VERSION=$(SUFFIX)-$(GIT_VERSION)
- TARGET = bootloader-$(BOARD)-$(SUFFIX)
- LINKER_SCRIPT := bootloader.lds
- MAP_FILE := bootloader.map
- INCLUDE_DIR=-I. -I../boot\
- -I../common\
- -I../gpio\
- -I../spi\
- -I../system\
- -I../uart \
- -I../timer
- # compiler options
- RISCV_ARCH := rv64imafdc
- RISCV_ABI := lp64d
- CFLAGS += -O2 -g -c -Wall -DVERSION=\"$(BLD_VERSION)\" -D$(BOARD)
- CFLAGS += -march=$(RISCV_ARCH)
- CFLAGS += -mabi=$(RISCV_ABI)
- CFLAGS += -mcmodel=medany
- CFLAGS += $(INCLUDE_DIR)
- CCASFLAGS= -mcmodel=medany -mexplicit-relocs
-
- LDFLAGS = -march=$(RISCV_ARCH) -mabi=$(RISCV_ABI)-T $(LINKER_SCRIPT) -nostartfiles --specs=nano.specs -Wl,-Map,$(MAP_FILE)
- # object list
- OBJECTLIST=../boot/start.o\
- ../boot/bootmain.o\
- ../boot/trap.o\
- ../uart/uart.o\
- ../common/util.o \
- ../spi/spi.o\
- ../spi/spi_probe.o\
- ../spi/cadence_qspi.o\
- ../spi/spi_flash.o\
- ../spi/cadence_qspi_apb.o\
- ../timer/timer.o
- all:$(TARGET).elf $(TARGET).bin $(TARGET).asm
- $(TARGET).elf:$(OBJECTLIST)
- @echo ================================================================================
- $(CC) -o $(TARGET).elf $(LDFLAGS) $(OBJECTLIST)
- @echo $(TARGET).elf LINK SUCCEED!
- %.bin: %.elf
- $(OBJCOPY) -O binary $^ $@
- @if [ -f fsz.sh ]; then ./fsz.sh $(TARGET).bin; fi
- %.asm: %.elf
- $(OBJDUMP) -S $^ > $@
- %.dtb: %.dts
- dtc $^ -o $@ -O dtb
- %.o: %.S
- $(CC) $(CFLAGS) $(CCASFLAGS) -c $< -o $@
- %.o: %.c
- $(CC) $(CFLAGS) -o $@ -c $<
-
- .PHONY: clean
- clean:
- rm -f $(OBJECTLIST) *.bin *.bin.out *.elf *.asm *.map
|