os-workshop

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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:
MMakefile | 6++++--
Mmake/app.mk | 18++++++++++--------
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 :=