Failed to fetch fork details. Try again later.
-
量子思维队 authored0b9ea689
Forked from
量子思维队 / OSKernel2024-Quantum_Mind_OS
Source project has a limited visibility.
include common.mk
KERN = kernel
USER = user
MKFS = mkfs
KERNEL_ELF = kernel-qemu
FS_IMG = fs.img
CPUNUM = 2
.PHONY: clean $(KERN) $(USER) $(MKFS)
$(KERN):
$(MAKE) build --directory=$@
$(USER):
$(MAKE) init --directory=$@
$(MKFS):
$(MAKE) build --directory=$@
$(MKFS)/mkfs $(FS_IMG)
# QEMU相关配置
QEMU = qemu-system-riscv64
QEMUOPTS = -machine virt -bios none -kernel $(KERNEL_ELF)
QEMUOPTS += -m 128M -smp $(CPUNUM) -nographic
QEMUOPTS += -drive file=$(FS_IMG),if=none,format=raw,id=x0
QEMUOPTS += -device virtio-blk-device,drive=x0,bus=virtio-mmio-bus.0
# 调试
GDBPORT = $(shell expr `id -u` % 5000 + 25000)
QEMUGDB = $(shell if $(QEMU) -help | grep -q '^-gdb'; \
then echo "-gdb tcp::$(GDBPORT)"; \
else echo "-s -p $(GDBPORT)"; fi)
build: $(USER) $(KERN) $(MKFS)
# qemu运行
qemu: $(USER) $(KERN) $(MKFS)
$(QEMU) $(QEMUOPTS)
.gdbinit: .gdbinit.tmpl-riscv
sed "s/:1234/:$(GDBPORT)/" < $^ > $@
qemu-gdb: $(USER) $(KERN) $(MKFS) .gdbinit
$(QEMU) $(QEMUOPTS) -S $(QEMUGDB)
clean:
$(MAKE) --directory=$(KERN) clean
$(MAKE) --directory=$(MKFS) clean
rm -f $(KERNEL_ELF) $(FS_IMG) .gdbinit