1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- NAME = play_rv32_with_qemu_template
- # ==== Toolchain Configure ====
- PREFIX = W:/WCH/MounRiverStudio/toolchain/RISC-V Embedded GCC/bin
- CC = "$(PREFIX)/riscv-none-embed-gcc.exe"
- AS = "$(PREFIX)/riscv-none-embed-as.exe"
- LD = "$(PREFIX)/riscv-none-embed-ld.exe"
- OBJCOPY = "$(PREFIX)/riscv-none-embed-objcopy.exe"
- SIZE = "$(PREFIX)/riscv-none-embed-size.exe"
- QEMU_RV32 = "W:/QEMU/qemu-20210825/qemu-system-riscv32.exe"
- RM_CMD = ./tools/rm4win.exe -rf
- # ==== Path Configure ====
- SRC_DIR = ./src
- ASM_DIR = ./asm
- INC_DIR = ./inc
- OUT_DIR = ./out
- LINKER_SCRIPT = ./linker-script.ld
- STARTUP_SRC = ./startup.s
- # ==== Other Arguments ====
- CC_ARGS = -O0
- AS_ARGS =
- LD_ARGS =
- OBJCOPY_ARGS =
- SIZE_ARGS = --format=berkeley
- QEMU_ARGS = -nographic -bios none
- QEMU_MACHINE = virt
- # ===========================
- STARTUP_OBJ = $(patsubst %.s,$(OUT_DIR)/%.o,$(STARTUP_SRC))
- C_SRC = $(wildcard $(SRC_DIR)/*.c)
- C_OBJ = $(patsubst $(SRC_DIR)/%.c,$(OUT_DIR)/%.o,$(C_SRC))
- AS_SRC = $(wildcard $(ASM_DIR)/*.s)
- AS_OBJ = $(patsubst $(ASM_DIR)/%.s,$(OUT_DIR)/%.o,$(AS_SRC))
- .PHONY : all
- .PHONY : bin
- .PHONY : hex
- .PHONY : clean
- .PHONY : qemu
- .PHONY : size
- .IGNORE : qemu
- all : bin hex size
- bin : $(NAME).bin
- hex : $(NAME).hex
- $(NAME).hex : $(NAME).elf
- $(OBJCOPY) $(OBJCOPY_ARGS) -O ihex $< $@
- $(NAME).bin : $(NAME).elf
- $(OBJCOPY) $(OBJCOPY_ARGS) -O binary $< $@
- size : $(NAME).elf
- $(SIZE) $(SIZE_ARGS) $<
- $(NAME).elf : $(LINKER_SCRIPT) $(STARTUP_OBJ) $(C_OBJ) $(AS_OBJ)
- $(LD) -T $(LINKER_SCRIPT) $(LD_ARGS) -o $@ $(STARTUP_OBJ) $(C_OBJ) $(AS_OBJ)
- $(STARTUP_OBJ) : $(STARTUP_SRC)
- $(AS) $(AS_ARGS) -o $@ $<
- $(OUT_DIR)/%.o : $(ASM_DIR)/%.s
- $(AS) $(AS_ARGS) -o $@ $^
- $(OUT_DIR)/%.o : $(SRC_DIR)/%.c
- $(CC) $(CC_ARGS) -I $(INC_DIR) -o $@ $<
- clean :
- -$(RM_CMD) ./$(NAME).bin
- -$(RM_CMD) ./$(NAME).hex
- -$(RM_CMD) ./$(NAME).elf
- -$(RM_CMD) ./$(OUT_DIR)/*
- qemu : $(NAME).bin
- $(QEMU_RV32) -machine $(QEMU_MACHINE) $(QEMU_ARGS) -kernel $<
|