irena-arm/Makefile

255 lines
5.7 KiB
Makefile
Raw Permalink Normal View History

NAME=irena
SerialNo-test = 0
ProductId-test = 0x01
SerialNo-esther = 1
ProductId-esther = 0x01
SerialNo-thomas = 2
ProductId-thomas = 0x01
SerialNo-FRED2 = 3
ProductId-FRED2 = 0x01
#SerialNo-HETI = 3
#ProductId-HETI = 0x01
#SerialNo-EPTI = 4
#ProductId-EPTI = 0x01
SerialNo-ALKE = 5
ProductId-ALKE = 0x01
SerialNo-IRENA = 6
ProductId-IRENA = 0x01
SerialNo-EVA = 7
ProductId-EVA = 0x01
SerialNo-MD3 = 10
ProductId-MD3 = 0x01
SerialNo-TANOS = 11
ProductId-TANOS = 0x01
SerialNo-CHAOS = 13
ProductId-CHAOS = 0x01
SerialNo-PIRENA = 4
ProductId-PIRENA = 0x03
SerialNo-sirena = 1
ProductId-sirena = 0x04
SerialNo-CE4 = 2
ProductId-CE4 = 0x04
SerialNo-icucore = 2
ProductId-icucore = 0x04
SerialNo-VARENA = x
ProductId-VARENA = 0x02
SerialNo-SARENA = 2
ProductId-SARENA = 0x02
SerialNo-TARENA = $(SerialNo-SARENA)
ProductId-TARENA = 0x02
SerialNo-IARENA = 1
ProductId-IARENA = 0x02
SerialNo-HARENA = 3
ProductId-HARENA = 0x02
SerialNo-AARENA = 4
ProductId-AARENA = 0x02
SerialNo-CE4ARENA = 4
ProductId-CE4ARENA = 0x02
ProductId-FLYRENA = 0x05
SerialNo-FLYRENA = 1
SerialNo-CCD = 1
ProductId-CCD = 0x0c
ProductId-ERENA = 0x06
SerialNo-ERENA = 1
ProductId-Flo = 0x04
SerialNo-Flo = 7
ProductId-GPS = 0x08
SerialNo-GPS = 1
ProductId-FLOW = 0x08
SerialNo-FLOW = 2
ProductId-SpW = 0x09
SerialNo-SpW = 1
ProductId-NMRENA = 0x0a
SerialNo-NMRENA = 1
ProductId-NMRENAv2 = 0x0b
SerialNo-NMRENAv2 = 8
ProductId-MCS = 0x0b
SerialNo-MCS = 9
ProductId-NMRENA10 = 0x0c
SerialNo-NMRENA10 = 13
ProductId-NMAHEPAM = 0x0c
SerialNo-NMAHEPAM = 14
ProductId-SETH = 0x0c
SerialNo-SETH = 15
#sirena:
ProductId-Torsten = 0x04
SerialNo-Torsten = 6
ifneq ($(SerialNo-$(BOX)),)
SerialNo = $(SerialNo-$(BOX))
ProductId = $(ProductId-$(BOX))
REVISION:= $(shell env SerialNo=$(SerialNo) ProductId=$(ProductId) ./update_revision.sh)
endif
prod_rev := $(shell awk <revision.h ' \
/SerialNumber/{S=$$3};\
/ProductId/{P=$$3};\
/Revision/{R=$$3};\
END{print P "_" S "_" R}\
')
ARCH=arm-none-eabi
GCC=4.3.5
gnuarm=/usr/local/gnuarm
gnuarmgcc=$(gnuarm)
ifdef DEBIAN
GCC:=$(shell ls /usr/bin/arm-none-eabi-gcc-*.*.*|sed s,/usr/bin/arm-none-eabi-gcc-,,)
gnuarmgcc=/usr
endif
export PATH:=$(gnuarmgcc)/bin:$(PATH)
CPUA= -mlittle-endian -mcpu=arm7tdmi
CPUC= $(CPUA) -msoft-float -mno-thumb-interwork -mpoke-function-name
DEBUGFORMAT=-g -gdwarf-2
WARN = -Wall -Wextra -Wno-char-subscripts -Wno-unused -Wno-pointer-sign -Wno-parentheses $(WWARN)
BUILTIN = --no-builtin-snprintf
CC=$(ARCH)-gcc-$(GCC) -std=gnu99 -O3 $(CPUC) $(WARN) $(BUILTIN)
CFLAGS=-I./include $(DEFINES)
AS=$(ARCH)-as $(DEBUGFORMAT) $(CPUA)
LD=$(ARCH)-ld -EL
LOADLIBES=-L$(gnuarm)/$(ARCH)/lib -lc -L$(gnuarmgcc)/lib/gcc/$(ARCH)/$(GCC) -lgcc
OBJCOPY=$(ARCH)-objcopy
default: $(NAME).hex $(NAME).bin
OBJS = crt.o $(patsubst %,%.o,$(sources))
objs: $(OBJS)
%.s: %.c
$(CC) -S $(CFLAGS) $<
%.o: %.c
$(CC) -MMD $(DEBUGFORMAT) -c $(CFLAGS) $<
-include *.d
clean:
rm -vf *.o *.a *.d *.map
dosfs_test: dosfs.c file.c dosfs_test.c
gcc -g -o $@ -I./include -DDOSFS_TEST $^
sources = irena mainloop parser message isr crc \
script file dosfs flash microsd spi ssp altera altera2 \
direna sirena virena flyrena erena nm64 spw led \
usb controlpipe usbconfig dma stream \
enc28j60 net udp \
expression variables display \
adc rtc hk \
plugin pressure gps chaos dorn i2c \
nomalloc strtol uart base85
$(NAME).rom: lpc2148-rom.ld $(OBJS)
$(LD) -T$< -Map=$@.map --cref -o $@ $(OBJS) $(LOADLIBES)
cp $@.map $@_${prod_rev}.map
%.hex: %.rom
$(OBJCOPY) -O ihex $< $@
%.bin: %.rom
$(OBJCOPY) -O binary $< $@
PLUGIN=plugin
%.ram: $(NAME).rom %.o
$(LD) -Tlpc2148-plugin.ld -Map=$@.map --cref -o $@ -R $^ $(LOADLIBES)
%.hex: %.ram
$(OBJCOPY) -O ihex $< $@
%.bin: %.ram
$(OBJCOPY) -O binary $< $@
LPC21ISP=lpc21isp
TTY=/dev/ttyUSB1
BURNOPTS = -term
burn: $(NAME).hex $(NAME).rom
$(LPC21ISP) -control $(BURNOPTS) $< $(TTY) 38400 12000
FLASH=flash
flashfiles:= $(shell find $(FLASH)/ -type f)
FATNAME_flash=IRENA
FATNAME_flash_IRENA=IRENA48
FATNAME_flash_irena=IRENA
FATNAME_flash_MD3=MD3IRENA
FATNAME_flash_sirena=SIRENA
FATNAME_flash_sirena_ce4=SICE4
FATNAME_flash_sirenaspw=SISPW
FATNAME_flash_icucore=ICUCORE
FATNAME_flash_ccdrena=CCDRENA
FATNAME_flash_esther=ESTHER
FATNAME_flash_esther32=ESTHER32
FATNAME_flash_zugspitze=ZUGSPITZE
FATNAME_flash_thomas=THOMAS
FATNAME_flash_fred2=FRED2
FATNAME_flash_heti=HETI
FATNAME_flash_ept=EPT
FATNAME_flash_varena=VARENA
FATNAME_flash_iarena=IARENA
FATNAME_flash_darena=DARENA
FATNAME_flash_sarena=SARENA
FATNAME_flash_tarena=TARENA
FATNAME_flash_lauri=PIRENA
FATNAME_flash_pirena=PIRENA
FATNAME_flash_i128=I128
FATNAME_flash_aarena=ADCTEST
FATNAME_flash_flyrena=FLYRENA
FATNAME_flash_erena=ERENA
FATNAME_flash_adam=ADAM-EVA
FATNAME_flash_gps=uIRENA
FATNAME_flash_SpW=SPWIRE
FATNAME_flash_CE4ARENA=CE4ARENA
FATNAME_flash_NMirena=NMIRENA
FATNAME_flash_NMRENA=NMRENA
FATNAME_flash_NMHERTZ=NMHERTZ
FATNAME_flash_NM_MCS=NM_MCS
FATNAME_flash_MUSTANG=MUSTANG
FATNAME_flash_BGOT=IRENABGOT
FATNAME_flash_torsten=TORSTEN
FATNAME_flash_alke=ALKE
FATNAME_flash_TANOS=TANOS
FATNAME_flash_CHAOS=CHAOS
FATNAME_flash_µM=IRENAuM
FATNAME_flash_NMAHEPAM=NMAHEPAM
FATNAME=$(FATNAME_$(FLASH))
FATSIZE_flash_pirena=1M
FATSIZE_flash_darena=1M
FATSIZE_flash_erena=1M
FATSIZE_flash_iarena=1M
FATSIZE_flash_µM=2M
FATNAME_flash_HARENA=HARENA
FATSIZE_flash_HARENA=1M
FATSIZE=$(FATSIZE_$(FLASH))
ifeq ($(FATSIZE_$(FLASH)),)
FATSIZE=2M
endif
MKDOSFS=/sbin/mkdosfs
MAXLINE=126
$(FLASH).fat: $(flashfiles)
[ -z "`cut -b $(MAXLINE)- $(FLASH)/*.RC | grep -v '^$$'`" ]
dd if=/dev/zero bs=$(FATSIZE) count=1 | tr '\0' '\377' >$@
$(MKDOSFS) -n "$(FATNAME)" -s 8 -r 112 -v $@
mcopy -i $@ -spmv $(FLASH)/[A-Z0-9]*.*[A-Z0-9] ::/
flash_%.fat: flash_%
$(MAKE) FLASH=flash_$* $@