1 # Copyright 2019 - Robin Krens
3 # TODO: Somehow integrate this assembly start.asm (start.o)
6 # Cross compilers links
10 MKIMG=arm-none-eabi-objcopy
13 LDFLAGS+= -mthumb -mcpu=cortex-m3
14 ASFLAGS+= -mcpu=cortex-m3 -mthumb
15 CFLAGS+= -mcpu=cortex-m3 -mthumb -ffreestanding
16 #CFLAGS+= -mcpu=cortex-m3 -mthumb -g -ffreestanding
24 _OBJ = ivt.o systick.o sysinfo.o term.o main.o clock.o rtc.o heap.o syscall.o
25 OBJ = $(patsubst %, $(ODIR)/%,$(_OBJ))
28 _DRIVERS = uart.o tm1637.o led.o tsensor.o at24c.o mk450_joystick.o st7735s.o
29 DRIVERS = $(patsubst %, $(DDIR)/%,$(_DRIVERS))
32 _LIBS = string.o stdio.o regfunc.o pool.o tinyprintf.o syscall.o
33 LIBS = $(patsubst %, $(LDIR)/%,$(_LIBS))
35 $(DDIR)/%.o: drivers/%.c
37 $(CC) -c $< $(CFLAGS) $(INCLUDE) -o $@
41 $(CC) -c $< $(CFLAGS) -I./include -o $@
45 $(CC) -c $< $(CFLAGS) -I./include -o $@
47 # Start up machine assembly
49 $(AS) $(ASFLAGS) -o start.o start.asm
51 # Compile and link all
52 kernel: $(OBJ) $(DRIVERS) $(LIBS)
53 $(AS) $(ASFLAGS) -o start.o start.asm
54 $(LD) -nostartfiles -Map $(BIN)/$@.MAP -T link.ld -o $(BIN)/$@.ELF start.o $^ --print-memory-usage
55 @echo "Creating binary..."
57 $(MKIMG) -Obinary $(BIN)/$@.ELF $(BIN)/$@.bin
59 # Run in Qemu; note this is a patched version for stm32-f103c8
61 /usr/local/bin/qemu-system-arm -monitor stdio -serial stdio -M stm32-f103c8 -kernel $(BIN)/kernel.bin
63 # Examine all sections
65 arm-none-eabi-objdump -D $(BIN)/kernel.ELF | less
67 # Examine just headers
69 arm-none-eabi-objdump -x $(BIN)/kernel.ELF | less
71 # Flash kernel to board
73 stm32flash -w $(BIN)/kernel.bin -v /dev/ttyUSB0
78 rm -rf $(ODIR)/* start.o $(BIN)/kernel.*
80 # Altijd handig deze template
82 # $(CC) -c $(CFLAGS) $< -o $@
83 # $(CC) -MM $(CFLAGS) $< > $*.d
86 # $(CC) -c $(CFLAGS) $< -o $@