From 721d0e5ecf522ef96aa92f6269e46c999ae781e6 Mon Sep 17 00:00:00 2001 From: Yifan Wu Date: Wed, 11 Nov 2020 16:59:44 +0800 Subject: [PATCH] Debug using gdb on qemu. --- os/Makefile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/os/Makefile b/os/Makefile index 2982e530..6f0f525c 100644 --- a/os/Makefile +++ b/os/Makefile @@ -3,6 +3,7 @@ TARGET := riscv64gc-unknown-none-elf MODE := release KERNEL_ELF := target/$(TARGET)/$(MODE)/os KERNEL_BIN := $(KERNEL_ELF).bin +KERNEL_ENTRY_PA := 0x80020000 DISASM_TMP := target/$(TARGET)/$(MODE)/asm # BOARD @@ -48,7 +49,7 @@ ifeq ($(BOARD),qemu) -machine virt \ -nographic \ -bios $(BOOTLOADER) \ - -device loader,file=$(KERNEL_BIN),addr=0x80020000 + -device loader,file=$(KERNEL_BIN),addr=$(KERNEL_ENTRY_PA) else @cp $(BOOTLOADER) $(BOOTLOADER).copy @dd if=$(KERNEL_BIN) of=$(BOOTLOADER).copy bs=128K seek=1 @@ -58,4 +59,10 @@ else miniterm --eol LF --dtr 0 --rts 0 --filter direct $(K210-SERIALPORT) 115200 endif +debug: build + @tmux new-session -d \ + "qemu-system-riscv64 -machine virt -nographic -bios $(BOOTLOADER) -device loader,file=$(KERNEL_BIN),addr=$(KERNEL_ENTRY_PA) -s -S" && \ + tmux split-window -h "riscv64-unknown-elf-gdb -ex 'file $(KERNEL_ELF)' -ex 'set arch riscv:rv64' -ex 'target remote localhost:1234'" && \ + tmux -2 attach-session -d + .PHONY: build kernel clean disasm disasm-vim run-inner