170 lines
5.5 KiB
Makefile
170 lines
5.5 KiB
Makefile
#/*
|
|
# * Copyright {c} 2020-2021, SERI Development Team
|
|
# *
|
|
# * SPDX-License-Identifier: Apache-2.0
|
|
# *
|
|
# * Change Logs:
|
|
# * Date Author Notes
|
|
# * 2022-03-27 Lyons first version
|
|
# */
|
|
|
|
TARGET = riscv
|
|
|
|
Q = @
|
|
|
|
PROJPATH = ../..
|
|
WORKPATH = .
|
|
|
|
DEMO ?= rtos
|
|
|
|
include ../config.mk
|
|
|
|
## bootloader
|
|
|
|
INCLUDES_BOOT = ${INCLUDES}
|
|
INCFILES_BOOT = ${INCFILES}
|
|
CFLAGS_BOOT = ${CFLAGS}
|
|
LDFLAGS_BOOT = ${LDFLAGS}
|
|
LDLIBS_BOOT = ${LDLIBS}
|
|
ASMFILES_BOOT = ${ASMFILES}
|
|
CFILES_BOOT = ${CFILES}
|
|
|
|
INCLUDES_BOOT +=
|
|
|
|
INCFILES_BOOT +=
|
|
|
|
CFLAGS_BOOT += -O0 -ffunction-sections -fdata-sections
|
|
# CFLAGS_BOOT += -g
|
|
CFLAGS_BOOT += -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast
|
|
# CFLAGS_BOOT += -DPRINT_STDIO_SIM
|
|
|
|
LDFLAGS_BOOT += -T${WORKPATH}/link_boot.lds
|
|
|
|
LDLIBS_BOOT +=
|
|
|
|
ASMFILES_BOOT +=
|
|
|
|
CFILES_BOOT += ${WORKPATH}/main_boot.c
|
|
|
|
## application
|
|
|
|
INCLUDES_APP = ${INCLUDES}
|
|
INCFILES_APP = ${INCFILES}
|
|
CFLAGS_APP = ${CFLAGS}
|
|
LDFLAGS_APP = ${LDFLAGS}
|
|
LDLIBS_APP = ${LDLIBS}
|
|
ASMFILES_APP = ${ASMFILES}
|
|
CFILES_APP = ${CFILES}
|
|
|
|
INCLUDES_APP += -I.
|
|
|
|
INCFILES_APP += -I${WORKPATH}/rtthread-nano/bsp \
|
|
-I${WORKPATH}/rtthread-nano/components/finsh \
|
|
-I${WORKPATH}/rtthread-nano/include \
|
|
-I${WORKPATH}/rtthread-nano/include/libc \
|
|
-I${WORKPATH}/libs/_kernel/libcpu/risc-v/common
|
|
|
|
INCFILES_APP += -I${WORKPATH}/driver
|
|
|
|
CFLAGS_APP += -O0 -ffunction-sections -fdata-sections
|
|
# CFLAGS_APP += -g
|
|
CFLAGS_APP += -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast
|
|
ifeq ($(DEMO), rtos)
|
|
CFLAGS_APP += -DTEST_RTOS
|
|
CFLAGS_APP += -DOS_ENABLE_RT_THREAD
|
|
# CFLAGS_APP += -DPRINT_STDIO_SIM
|
|
CFLAGS_APP += -DSIMULATION_PRINT_VERSION
|
|
endif
|
|
ifeq ($(DEMO), uart)
|
|
CFLAGS_APP += -DTEST_UART
|
|
endif
|
|
ifeq ($(DEMO), lcd)
|
|
CFLAGS_APP += -DTEST_LCD
|
|
endif
|
|
# CFLAGS_APP += -DSIMULATION_PRINT_THREAD_SWITCH
|
|
|
|
LDFLAGS_APP += -T${WORKPATH}/link_app.lds
|
|
|
|
LDLIBS_APP +=
|
|
|
|
ASMFILES_APP += ${WORKPATH}/rtthread-nano/libcpu/risc-v/common/context_gcc.S
|
|
|
|
ifeq ($(DEMO), rtos)
|
|
CFILES_APP += ${WORKPATH}/rtthread-nano/bsp/board.c \
|
|
${WORKPATH}/rtthread-nano/components/device/device.c \
|
|
${WORKPATH}/rtthread-nano/components/finsh/cmd.c \
|
|
${WORKPATH}/rtthread-nano/components/finsh/finsh_port.c \
|
|
${WORKPATH}/rtthread-nano/components/finsh/msh.c \
|
|
${WORKPATH}/rtthread-nano/components/finsh/shell.c \
|
|
${WORKPATH}/rtthread-nano/libcpu/risc-v/common/cpuport.c \
|
|
${WORKPATH}/rtthread-nano/src/clock.c \
|
|
${WORKPATH}/rtthread-nano/src/components.c \
|
|
${WORKPATH}/rtthread-nano/src/cpu.c \
|
|
${WORKPATH}/rtthread-nano/src/idle.c \
|
|
${WORKPATH}/rtthread-nano/src/ipc.c \
|
|
${WORKPATH}/rtthread-nano/src/irq.c \
|
|
${WORKPATH}/rtthread-nano/src/kservice.c \
|
|
${WORKPATH}/rtthread-nano/src/mem.c \
|
|
${WORKPATH}/rtthread-nano/src/memheap.c \
|
|
${WORKPATH}/rtthread-nano/src/mempool.c \
|
|
${WORKPATH}/rtthread-nano/src/object.c \
|
|
${WORKPATH}/rtthread-nano/src/scheduler.c \
|
|
${WORKPATH}/rtthread-nano/src/slab.c \
|
|
${WORKPATH}/rtthread-nano/src/thread.c \
|
|
${WORKPATH}/rtthread-nano/src/timer.c
|
|
endif
|
|
|
|
ifeq ($(DEMO), lcd)
|
|
CFILES_APP += ${WORKPATH}/driver/Driver_tftspi.c \
|
|
${WORKPATH}/driver/Task_tft.c
|
|
endif
|
|
|
|
CFILES_APP += ${WORKPATH}/init.c \
|
|
${WORKPATH}/interrupt.c \
|
|
${WORKPATH}/main_app.c
|
|
|
|
COLORS = "\033[32m"
|
|
COLORE = "\033[0m"
|
|
|
|
.PHONY: help
|
|
help:
|
|
@echo "help - help menu "
|
|
@echo "build - compile c/asm file "
|
|
|
|
.PHONY: build_boot
|
|
build_boot:
|
|
ifneq ($(shell uname), Linux)
|
|
@echo -e ${COLORS}[INFO] compile bootloader c/asm file ...${COLORE}
|
|
${Q}${CC} ${INCLUDES_BOOT} ${INCFILES_BOOT} ${CFLAGS_BOOT} ${LDFLAGS_BOOT} ${LDLIBS_BOOT} ${ASMFILES_BOOT} ${CFILES_BOOT} -o ${TARGET}_boot.elf
|
|
@echo -e ${COLORS}[INFO] create bootloader dump file ...${COLORE}
|
|
${Q}${OBJDUMP} -D -S ${TARGET}_boot.elf > ${TARGET}_boot.dump
|
|
@echo -e ${COLORS}[INFO] create bootloader image file ...${COLORE}
|
|
${Q}${OBJCOPY} -S -O binary ${TARGET}_boot.elf ${TARGET}_boot.bin
|
|
${Q}${PROJPATH}/scripts/bin2mi.exe ${TARGET}_boot.bin
|
|
${Q}${CP} rom.mi ${PROJPATH}/riscv-bootloader.mi
|
|
endif
|
|
@echo -e ${COLORS}[INFO] execute done${COLORE}
|
|
|
|
.PHONY: build_app
|
|
build_app:
|
|
ifneq ($(shell uname), Linux)
|
|
@echo -e ${COLORS}[INFO] compile application c/asm file ...${COLORE}
|
|
${Q}${CC} ${INCLUDES_APP} ${INCFILES_APP} ${CFLAGS_APP} ${LDFLAGS_APP} ${LDLIBS_APP} ${ASMFILES_APP} ${CFILES_APP} -o ${TARGET}_app.elf
|
|
@echo -e ${COLORS}[INFO] create application dump file ...${COLORE}
|
|
${Q}${OBJDUMP} -D -S ${TARGET}_app.elf > ${TARGET}_app.dump
|
|
@echo -e ${COLORS}[INFO] create application image file ...${COLORE}
|
|
${Q}${OBJCOPY} -S -O binary ${TARGET}_app.elf ${TARGET}_app.bin
|
|
${Q}${CP} ${TARGET}_app.bin ${PROJPATH}/riscv-application.bin
|
|
endif
|
|
@echo -e ${COLORS}[INFO] execute done${COLORE}
|
|
|
|
.PHONY: build
|
|
build: build_boot build_app
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
@echo -e ${COLORS}[INFO] clean project ...${COLORE}
|
|
@make -C ${WORKPATH}/../xemu clean
|
|
@ls | grep -vE "Makefile|driver|rtthread-nano|*\.lds$$|*\.c$$|*\.h$$" | xargs -i rm -rf {}
|
|
@echo -e ${COLORS}[INFO] execute done${COLORE}
|