1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
CROSS_COMPILE = riscv64-unknown-elf- CFLAGS = -nostdlib -fno-builtin -march=rv32g -mabi=ilp32 -g -Wall
QEMU = qemu-system-riscv32
QFLAGS = -nographic -smp 1 -machine virt -bios none
GDB = gdb-multiarch CC = ${CROSS_COMPILE}gcc OBJCOPY = ${CROSS_COMPILE}objcopy OBJDUMP = ${CROSS_COMPILE}objdump
.DEFAULT_GOAL := all all: @${CC} ${CFLAGS} ${SRC} -Ttext=0x80000000 -o ${EXEC}.elf @${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 @${OBJDUMP} -S ${EXEC}.elf | less
.PHONY : hex hex: all @hexdump -C ${EXEC}.bin
.PHONY : clean clean: rm -rf *.o *.bin *.elf
|