fw/icE1usb: Import firmware for the icE1usb and icE1usb-proto boards
Currently only the icE1usb-proto is supported. Adaptation for the
final production hardware is yet to be done.
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
diff --git a/firmware/ice40-riscv/icE1usb/Makefile b/firmware/ice40-riscv/icE1usb/Makefile
new file mode 100644
index 0000000..67d0a5d
--- /dev/null
+++ b/firmware/ice40-riscv/icE1usb/Makefile
@@ -0,0 +1,82 @@
+#ice1usb
+#ice1usb-proto-icebreaker
+#ice1usb-proto-bitsty
+#e1-tracer
+BOARD ?= ice1usb-proto-icebreaker
+CROSS ?= riscv-none-embed-
+CC = $(CROSS)gcc
+OBJCOPY = $(CROSS)objcopy
+ICEPROG = iceprog
+DFU_UTIL = dfu-util
+
+BOARD_DEFINE=BOARD_$(shell echo $(BOARD) | tr a-z\- A-Z_)
+CFLAGS=-Wall -Os -march=rv32i -mabi=ilp32 -ffreestanding -flto -nostartfiles -fomit-frame-pointer -Wl,--gc-section --specs=nano.specs -D$(BOARD_DEFINE) -I. -I../common
+
+NO2USB_FW_VERSION=0
+include ../../../gateware/cores/no2usb/fw/fw.mk
+CFLAGS += $(INC_no2usb)
+
+LNK=../common/lnk-app.lds
+
+HEADERS_common := $(addprefix ../common/, \
+ console.h \
+ dma.h \
+ led.h \
+ mini-printf.h \
+ spi.h \
+ utils.h \
+)
+
+SOURCES_common := $(addprefix ../common/, \
+ ../common/start.S \
+ console.c \
+ dma.c \
+ led.c \
+ mini-printf.c \
+ spi.c \
+ utils.c \
+)
+
+HEADERS_common += $(HEADERS_no2usb)
+SOURCES_common += $(SOURCES_no2usb)
+
+HEADERS_app=\
+ config.h \
+ e1.h \
+ misc.h \
+ usb_str_app.gen.h \
+ $(NULL)
+
+SOURCES_app=\
+ e1.c \
+ fw_app.c \
+ misc.c \
+ usb_desc_app.c \
+ usb_e1.c \
+ $(NULL)
+
+
+all: fw_app.bin
+
+
+fw_app.elf: $(LNK) $(HEADERS_app) $(SOURCES_app) $(HEADERS_common) $(SOURCES_common)
+ $(CC) $(CFLAGS) -Wl,-Bstatic,-T,$(LNK),--strip-debug -o $@ $(SOURCES_common) $(SOURCES_app)
+
+
+%.hex: %.bin
+ ../common/bin2hex.py $< $@
+
+%.bin: %.elf
+ $(OBJCOPY) -O binary $< $@
+
+prog: fw_app.bin
+ $(ICEPROG) -o 640k $<
+
+dfuprog: fw_app.bin
+ $(DFU_UTIL) -R -a 1 -D $<
+
+
+clean:
+ rm -f *.bin *.hex *.elf *.o *.gen.h
+
+.PHONY: prog dfuprog clean