+# Copyright 2019 - Robin Krens
+# Cross compilers links
CC=arm-none-eabi-gcc
LD=arm-none-eabi-ld
AR=$(TOOLROOT)/arm-none-eabi-ar
AS=arm-none-eabi-as
MKIMG=arm-none-eabi-objcopy
+# Compiler flags
+# TODO:Cortex-m3 or Cortex-m0?
LDFLAGS+= -mthumb -mcpu=cortex-m3
-CFLAGS+= -mcpu=cortex-m3 -mthumb
+CFLAGS+= -mcpu=cortex-m3 -mthumb -g
+# Start up machine assembly
as:
$(AS) $(CFLAGS) -o start.o start.asm
+# Compile and link all
all:
$(AS) $(CFLAGS) -o start.o start.asm
- $(CC) $(CFLAGS) -c -o main.o main.c
- $(LD) -nostartfiles -T link.ld -o start.out start.o main.o
+ $(CC) $(CFLAGS) -c -I./include -ffreestanding -o main.o main.c
+ $(CC) $(CFLAGS) -c -I./include -ffreestanding -o uart.o uart.c
+ $(CC) $(CFLAGS) -c -I./include -ffreestanding -o ivt.o ivt.c
+ $(CC) $(CFLAGS) -c -I./include -ffreestanding -o systick.o systick.c
+ $(CC) $(CFLAGS) -c -I./include -ffreestanding -o sysinfo.o sysinfo.c
+ $(CC) $(CFLAGS) -c -I./include -ffreestanding -o lib.o lib.c
+ $(CC) $(CFLAGS) -c -I./include -ffreestanding -o mm.o mm.c
+ $(CC) $(CFLAGS) -c -I./include -ffreestanding -o regf.o regf.c
+ $(LD) -nostartfiles -T link.ld -o start.out start.o main.o uart.o ivt.o systick.o sysinfo.o lib.o mm.o regf.o
$(MKIMG) -Obinary -R .data start.out kernel.bin
+# Run in Qemu; note this is a patched version for stm32-f103c8
run:
- qemu-system-arm -monitor stdio -M lm3s6965evb -kernel kernel.bin
+ /usr/local/bin/qemu-system-arm -serial stdio -M stm32-f103c8 -kernel kernel.bin
+
+# Examine all sections
+examine-all:
+ arm-none-eabi-objdump -D start.out | less
+
+# Examine just headers
+examine-header:
+ arm-none-eabi-objdump -x start.out | less
+
+# Flash kernel to board
+flash:
+ stm32flash -w kernel.bin -v /dev/ttyUSB0
-examine:
- arm-none-eabi-objdump -S start.out
%.o: %.c
$(CC) -c $(CFLAGS) $< -o $@