commit 4712990eceb0851a6975e797c69ad1e4d86758e5
parent 069c8e72faf2338ad8487d2b67889397805ee05e
Author: Brian Swetland <swetland@frotz.net>
Date: Sat, 7 May 2022 10:14:49 -0700
build: improve qemu handling
- in tty mode allow ctrl-c to exit
- if MOD_QEMU_FB is set run in graphic mode with console on tty
Diffstat:
2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/Makefile b/Makefile
@@ -12,8 +12,10 @@ XTOOLCHAIN ?= /usr/bin/riscv64-unknown-elf-
QEMU ?= /usr/bin/qemu-system-riscv32
QEMUBIOS := out/bios.elf
-QFLAGS := -machine micro -bios $(QEMUBIOS) -nographic
+QFLAGS := -machine micro -bios $(QEMUBIOS)
QFLAGS.GDB := $(QFLAGS) -gdb tcp::7777 -S
+QFLAGS.FB := -serial stdio
+QFLAGS.TTY := -nographic -monitor none -serial stdio
ifeq ($(wildcard $(XTOOLCHAIN)gcc),)
$(warning Cannot find toolchain $(XTOOLCHAIN))
@@ -40,7 +42,7 @@ LDSCRIPT := hw/simple.ld
BUILD := out
CFLAGS := -g -Wall -Ilibc/inc -Ihw/inc
-CFLAGS += -O1
+CFLAGS += -O2
ALL :=
diff --git a/make/app.mk b/make/app.mk
@@ -6,6 +6,7 @@ MOD_ELF := $(BUILD)/$(MOD_NAME).elf
MOD_LST := $(BUILD)/$(MOD_NAME).lst
MOD_BIN := $(BUILD)/$(MOD_NAME).bin
MOD_LDSCRIPT := $(if $(MOD_LDSCRIPT),$(MOD_LDSCRIPT),$(LDSCRIPT))
+MOD_QFLAGS := $(if $(MOD_QEMU_FB),$(QFLAGS.FB),$(QFLAGS.TTY))
ALL += $(MOD_ELF) $(MOD_LST) $(MOD_BIN)
@@ -26,18 +27,19 @@ $(MOD_LST): $(MOD_ELF)
$(MOD_BIN): $(MOD_ELF)
$(V)$(XOBJCOPY) -O binary $< $@
-run.$(MOD_NAME):: $(QEMUBIOS)
-run.$(MOD_NAME):: _BIN := $(MOD_ELF)
-run.$(MOD_NAME):: $(MOD_ELF) $(MOD_LST)
- $(QEMU) $(QFLAGS) -kernel $(_BIN)
+run.$(MOD_NAME):: _ELF := $(MOD_ELF)
+run.$(MOD_NAME):: _QFLAGS := $(MOD_QFLAGS)
+run.$(MOD_NAME):: $(MOD_ELF) $(MOD_LST) $(MOD_BIN) $(QEMUBIOS)
+ $(QEMU) $(QFLAGS) $(_QFLAGS) -kernel $(_ELF)
-debug.$(MOD_NAME):: $(QEMUBIOS)
-debug.$(MOD_NAME):: _BIN := $(MOD_ELF)
-debug.$(MOD_NAME):: $(MOD_ELF) $(MOD_LST)
- $(QEMU) $(QFLAGS.GDB) -kernel $(_BIN)
+debug.$(MOD_NAME):: _ELF := $(MOD_ELF)
+run.$(MOD_NAME):: _QFLAGS := $(MOD_QFLAGS)
+debug.$(MOD_NAME):: $(MOD_ELF) $(MOD_LST) $(MOD_BIN) $(QEMUBIOS)
+ $(QEMU) $(QFLAGS.GDB) $(_QFLAGS) -kernel $(_ELF)
MOD_NAME :=
MOD_INC :=
MOD_SRC :=
MOD_LIB :=
MOD_LDSCRIPT :=
+MOD_QEMU_FB :=