diff options
author | Thomas Albers Raviola <thomas@thomaslabs.org> | 2025-02-13 01:48:01 +0100 |
---|---|---|
committer | Thomas Albers Raviola <thomas@thomaslabs.org> | 2025-02-13 01:48:01 +0100 |
commit | 70af8cae86d75b4b02e9f7bd7d3614262bc5eb16 (patch) | |
tree | 831401e72b02956863e31e6663aa9ab3b9b66eac /boot | |
parent | 13c0217bf19a2ddfb24b673455f6d362a46ebf7b (diff) |
Diffstat (limited to 'boot')
-rw-r--r-- | boot/Makefile | 45 | ||||
-rw-r--r-- | boot/cmd/Makefile | 20 | ||||
-rw-r--r-- | boot/devmode/Makefile | 22 | ||||
-rw-r--r-- | boot/devmode/bootloader.c | 2 |
4 files changed, 49 insertions, 40 deletions
diff --git a/boot/Makefile b/boot/Makefile index 88d3c6e..9c3f7c7 100644 --- a/boot/Makefile +++ b/boot/Makefile @@ -1,32 +1,31 @@ -BUILD=$(PROJECT_ROOT)/build/boot +BOOT_BUILD = $(BUILD)/boot -TARGET=$(BUILD)/bootloader.hex -IHX=$(BUILD)/boot.ihx +BOOT_SRC =\ + boot.asm\ + main.c -ASM=$(filter-out crt0.asm, $(wildcard *.asm)) -SRC=$(wildcard *.c) -PAYLOADS=cmd devmode +PAYLOADS = cmd devmode +PAYLOADS_HEX = $(foreach p,$(PAYLOADS),$(BOOT_BUILD)/$(p)/$(p).hex) -PAYLOADS_HEX=$(foreach payload,$(PAYLOADS),$(BUILD)/$(payload)/$(payload).hex) +HEX = $(BOOT_BUILD)/boot.hex $(PAYLOADS_HEX) -HEX=$(BUILD)/boot.hex $(PAYLOADS_HEX) +BOOT_CRT0 = $(BOOT_BUILD)/crt0.rel +DEPS += $(patsubst %.rel,%.d,$(BOOT_CRT0)) -CODE_LOC=0x0120 -DATA_LOC=0xC000 -STACK_LOC=0x0000 -GSINIT_LOC=0x0090 +BOOT_OBJ = $(patsubst %,$(BOOT_BUILD)/%.rel,$(basename $(BOOT_SRC))) +DEPS += $(patsubst %.rel,%.d,$(BOOT_OBJ)) -all : $(TARGET) +$(BOOT_BUILD)/boot.ihx : EXTRA_LDFLAGS=$(BOOT_LDFLAGS) +$(BOOT_BUILD)/boot.ihx : $(BOOT_OBJ) -$(TARGET) : $(HEX) - cp $(BUILD)/boot.hex /tmp/bootloader.hex - dd if=$(BUILD)/cmd/cmd.hex of=/tmp/bootloader.hex obs=4096 seek=1 conv=notrunc 2>/dev/null - dd if=$(BUILD)/cmd/cmd.hex of=/tmp/bootloader.hex obs=4096 seek=2 conv=notrunc 2>/dev/null - mv /tmp/bootloader.hex $@ +$(BOOT_OBJ) : | $(BOOT_BUILD) +$(BOOT_BUILD) : + @mkdir -p $@ -.PHONY : $(PAYLOADS_HEX) -$(PAYLOADS_HEX) : $(BUILD)/crt0.rel - make -C $(notdir $(basename $@)) CRT0=$< +$(BOOT_BUILD)/bootloader.hex : $(HEX) + @cp $(BOOT_BUILD)/boot.hex /tmp/bootloader.hex + @dd if=$(BOOT_BUILD)/cmd/cmd.hex of=/tmp/bootloader.hex obs=4096 seek=1 conv=notrunc 2>/dev/null + @dd if=$(BOOT_BUILD)/devmode/devmode.hex of=/tmp/bootloader.hex obs=4096 seek=2 conv=notrunc 2>/dev/null + @mv /tmp/bootloader.hex $@ -include $(PROJECT_ROOT)/include.mk --include $(BUILD)/crt0.d +include $(patsubst %,boot/%/Makefile,$(PAYLOADS)) diff --git a/boot/cmd/Makefile b/boot/cmd/Makefile index 5c359e4..6e2c692 100644 --- a/boot/cmd/Makefile +++ b/boot/cmd/Makefile @@ -1,12 +1,16 @@ -BUILD=$(PROJECT_ROOT)/build/boot/cmd +BOOT_CMD_BUILD = $(BOOT_BUILD)/cmd -TARGET=$(BUILD)/cmd.hex -IHX=$(BUILD)/cmd.ihx +BOOT_CMD_SRC =\ + main.c -ASM=$(wildcard *.asm) -SRC=$(wildcard *.c) +BOOT_CMD_OBJ =\ + $(patsubst %,$(BOOT_CMD_BUILD)/%.rel,$(basename $(BOOT_CMD_SRC))) +DEPS +=\ + $(patsubst %.rel,%.d,$(BOOT_CMD_OBJ)) -all : $(TARGET) $(PROJECT_ROOT)/payload.mk +$(BOOT_CMD_BUILD)/cmd.ihx : EXTRA_LDFLAGS=$(PAYLOAD_LDFLAGS) +$(BOOT_CMD_BUILD)/cmd.ihx : $(BOOT_CRT0) $(BOOT_CMD_OBJ) -include $(PROJECT_ROOT)/payload.mk -include $(PROJECT_ROOT)/include.mk +$(BOOT_CMD_OBJ) : | $(BOOT_CMD_BUILD) +$(BOOT_CMD_BUILD) : + @mkdir -p $@ diff --git a/boot/devmode/Makefile b/boot/devmode/Makefile index 24c841a..ea9380d 100644 --- a/boot/devmode/Makefile +++ b/boot/devmode/Makefile @@ -1,12 +1,18 @@ -BUILD=$(PROJECT_ROOT)/build/boot/devmode +BOOT_DEVMODE_BUILD = $(BOOT_BUILD)/devmode -TARGET=$(BUILD)/devmode.hex -IHX=$(BUILD)/devmode.ihx +BOOT_DEVMODE_SRC =\ + bootloader.c\ + crc16.c -ASM=$(wildcard *.asm) -SRC=$(wildcard *.c) +BOOT_DEVMODE_OBJ =\ + $(patsubst %,$(BOOT_DEVMODE_BUILD)/%.rel,\ + $(basename $(BOOT_DEVMODE_SRC))) +DEPS +=\ + $(patsubst %.rel,%.d,$(BOOT_DEVMODE_OBJ)) -all : $(TARGET) +$(BOOT_DEVMODE_BUILD)/devmode.ihx : EXTRA_LDFLAGS=$(PAYLOAD_LDFLAGS) +$(BOOT_DEVMODE_BUILD)/devmode.ihx : $(BOOT_CRT0) $(BOOT_DEVMODE_OBJ) -include $(PROJECT_ROOT)/payload.mk -include $(PROJECT_ROOT)/include.mk +$(BOOT_DEVMODE_OBJ) : | $(BOOT_DEVMODE_BUILD) +$(BOOT_DEVMODE_BUILD) : + @mkdir -p $@ diff --git a/boot/devmode/bootloader.c b/boot/devmode/bootloader.c index dd28c34..8380e88 100644 --- a/boot/devmode/bootloader.c +++ b/boot/devmode/bootloader.c @@ -308,7 +308,7 @@ init_sio(void) // wr1: interrupt on every Rx, no wait function 1, SIO_RX_INT_MD0 | SIO_RX_INT_MD1, // wr3: enable Rx - 8 bit char - 3, 0b11000001 + 3, 0b11000001, // wr5: enable Tx - 8 bit char 5, 0b01101000 }; |