1 #===============================================================================
7 MB_CROSS_COMPILE ?= mbtumbl-elf-
8 TARGET_CC := $(MB_CROSS_COMPILE)gcc
9 TARGET_LD := $(MB_CROSS_COMPILE)ld
10 TARGET_OBJCOPY := $(MB_CROSS_COMPILE)objcopy
11 TARGET_OBJDUMP := $(MB_CROSS_COMPILE)objdump
13 C_OBJS := $(OUT)/firmware.o
15 CFLAGS := -mxl-soft-div -msoft-float -Wno-main -Wl,-no-check-sections -fno-zero-initialized-in-bss
18 AFLAGS := -D__ASSEMBLY__ $(CFLAGS)
19 LDFLAGS := -static -nostdlib -relax -defsym _STACK_SIZE=0x0200
21 OBJS := $(OUT)/start.o $(C_OBJS) $(A_OBJS)
23 REQ_FIRMWARE := $(OUT)/imem.bin $(OUT)/imem.asm $(OUT)/dmem.bin $(OUT)/firmware.lst
27 USB_APP_VID_PID ?= 0x1669:0x1023
29 USB_SENDHEX := ./usb_sendhex
31 #===============================================================================
33 # Attempt to create a output directory.
34 $(shell [ -d ${OUT} ] || mkdir -p ${OUT})
36 # Verify if it was successful.
37 OUTPUT_DIR := $(shell cd $(OUT) && /bin/pwd)
38 $(if $(OUTPUT_DIR),,$(error output directory "$(OUT)" does not exist))
40 #===============================================================================
45 #$(OUT)/%.o: $(FIRMWARE_DIR)/%.c
46 # $(TARGET_CC) $(CFLAGS) $(DEB_FLAGS) -c $< -o $@
48 $(OUT)/%.s: $(FIRMWARE_DIR)/%.c
49 $(TARGET_CC) $(CFLAGS) $(DEB_FLAGS) -S $< -o $@
53 $(OUT)/%.o: $(OUT)/%.s
54 $(TARGET_CC) $(AFLAGS) -fpreprocessed -c $< -o $@
56 $(OUT)/%.o: $(FIRMWARE_DIR)/%.S
57 $(TARGET_CC) $(AFLAGS) $(DEB_FLAGS) -c $< -o $@
59 $(OUT)/firmware.elf: $(OBJS)
60 $(TARGET_LD) $(LDFLAGS) -T $(FIRMWARE_DIR)/utils/tumbl.ld-script -o $@ $(OBJS)
63 re-firmware $(REQ_FIRMWARE): $(REQ_PKG) $(OUT)/firmware.elf
64 $(TARGET_OBJCOPY) -O binary $(OUT)/firmware.elf -j .text -S $(OUT)/imem.bin
65 $(TARGET_OBJCOPY) -O binary $(OUT)/firmware.elf -j .data -S $(OUT)/dmem.bin
66 $(TARGET_OBJDUMP) -DSCz $(OUT)/firmware.elf > $(OUT)/firmware.lst
68 $(TARGET_OBJDUMP) -b binary -mmbtumbl -EB -D imem.bin | sed -e 's/.data/.text/' > imem.asm
70 #===============================================================================
77 firmware: $(REQ_FIRMWARE)
80 install-tumbl: $(USB_SENDHEX) $(BUILDDIR)/imem.bin $(BUILDDIR)/dmem.bin
81 $(USB_SENDHEX) -d $(USB_APP_VID_PID) -c 0xF100 -a 0x0001
82 $(USB_SENDHEX) -d $(USB_APP_VID_PID) -t 3 -s 0x00000000 -f binary $(BUILDDIR)/imem.bin
83 $(USB_SENDHEX) -d $(USB_APP_VID_PID) -t 3 -s 0x00001000 -f binary $(BUILDDIR)/dmem.bin
84 $(USB_SENDHEX) -d $(USB_APP_VID_PID) -c 0xF100 -a 0x0000
87 # watch -d ./usb_sendhex -d 0x1669:0x1023 -t 4 -s 0x80000000 -l 0x200 -f dump -u -
89 # watch -d ./usb_sendhex -d 0x1669:0x1023 -t 4 -s 0x80001000 -l 0x200 -f dump -u -
91 # watch -d ./usb_sendhex -d 0x1669:0x1023 -t 4 -s 0x80003008 -l 0x4 -f dump -u -