mirror of
https://github.com/plctlab/riscv-operating-system-mooc.git
synced 2025-11-16 12:34:47 +00:00
39 lines
1014 B
Makefile
39 lines
1014 B
Makefile
CROSS_COMPILE = riscv64-unknown-elf-
|
|
CFLAGS = -nostdlib -fno-builtin -mcmodel=medany -march=rv32ima -mabi=ilp32 -g -Wall
|
|
|
|
QEMU = qemu-system-riscv32
|
|
QFLAGS = -nographic -smp 1 -machine virt -bios none
|
|
|
|
GDB = ${CROSS_COMPILE}gdb
|
|
|
|
.DEFAULT_GOAL := all
|
|
all:
|
|
@$(CROSS_COMPILE)gcc $(CFLAGS) ${SRC} -Ttext=0x80000000 -o $(EXEC).elf
|
|
@$(CROSS_COMPILE)objcopy -O binary $(EXEC).elf $(EXEC).bin
|
|
|
|
.PHONY : run
|
|
run: all
|
|
@echo "Press Ctrl-A and then X to exit QEMU"
|
|
@echo "------------------------------------"
|
|
@echo "No output, please run 'make debug' to see details"
|
|
@$(QEMU) $(QFLAGS) -kernel ./$(EXEC).elf
|
|
|
|
.PHONY : debug
|
|
debug: all
|
|
@echo "Press Ctrl-C and then input 'quit' to exit GDB and QEMU"
|
|
@echo "-------------------------------------------------------"
|
|
@$(QEMU) $(QFLAGS) -kernel $(EXEC).elf -s -S &
|
|
@$(GDB) $(EXEC).elf -q -x ${GDBINIT}
|
|
|
|
.PHONY : code
|
|
code: all
|
|
@$(CROSS_COMPILE)objdump -S $(EXEC).elf | less
|
|
|
|
.PHONY : hex
|
|
hex: all
|
|
@hexdump -C $(EXEC).bin
|
|
|
|
.PHONY : clean
|
|
clean:
|
|
rm -rf *.o *.bin *.elf
|