From 01fb4da199d922402180dfc31a3bdda24aac772d Mon Sep 17 00:00:00 2001 From: Matthias Merz Date: Fri, 10 Dec 2010 21:48:48 +0100 Subject: [PATCH] tree reorg for separate master/slave build-dirs * moved files * rudimentary Makefile-support --- firmware/Makefile | 10 +++- firmware/Makefile.inc | 13 ++++++ firmware/masterchip/Makefile | 67 +++++++++++++++++++++++++++ firmware/{ => masterchip}/display.c | 0 firmware/{ => masterchip}/display.h | 0 firmware/{ => masterchip}/lcd/COPYING | 0 firmware/{ => masterchip}/lcd/lcd.c | 0 firmware/{ => masterchip}/lcd/lcd.h | 0 firmware/{ => masterchip}/main.c | 0 firmware/{ => masterchip}/main.h | 0 firmware/masterchip/spi.c | 1 + firmware/masterchip/spi.h | 1 + firmware/{ => masterchip}/usb.c | 0 firmware/{ => masterchip}/usb.h | 0 firmware/masterchip/usbdrv | 1 + firmware/{ => shared}/spi.c | 0 firmware/{ => shared}/spi.h | 0 firmware/slavechip/Makefile | 66 ++++++++++++++++++++++++++ firmware/{ => slavechip}/i2c_simple.c | 0 firmware/{ => slavechip}/i2c_simple.h | 0 firmware/{ => slavechip}/mcp_adc.c | 0 firmware/{ => slavechip}/mcp_adc.h | 0 firmware/usbdrv | 1 - 23 files changed, 157 insertions(+), 3 deletions(-) create mode 100644 firmware/Makefile.inc create mode 100644 firmware/masterchip/Makefile rename firmware/{ => masterchip}/display.c (100%) rename firmware/{ => masterchip}/display.h (100%) rename firmware/{ => masterchip}/lcd/COPYING (100%) rename firmware/{ => masterchip}/lcd/lcd.c (100%) rename firmware/{ => masterchip}/lcd/lcd.h (100%) rename firmware/{ => masterchip}/main.c (100%) rename firmware/{ => masterchip}/main.h (100%) create mode 120000 firmware/masterchip/spi.c create mode 120000 firmware/masterchip/spi.h rename firmware/{ => masterchip}/usb.c (100%) rename firmware/{ => masterchip}/usb.h (100%) create mode 120000 firmware/masterchip/usbdrv rename firmware/{ => shared}/spi.c (100%) rename firmware/{ => shared}/spi.h (100%) create mode 100644 firmware/slavechip/Makefile rename firmware/{ => slavechip}/i2c_simple.c (100%) rename firmware/{ => slavechip}/i2c_simple.h (100%) rename firmware/{ => slavechip}/mcp_adc.c (100%) rename firmware/{ => slavechip}/mcp_adc.h (100%) delete mode 120000 firmware/usbdrv diff --git a/firmware/Makefile b/firmware/Makefile index bed7b54..47ccb94 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -4,9 +4,15 @@ CFLAGS += -std=gnu99 # implements C99, for # this removes dead code and does global linker optimization #CFLAGS += -ffunction-sections -Wl,--gc-sections -Wl,--relax -OBJECTS = usbdrv/usbdrvasm.o usbdrv/usbdrv.o main.o display.o lcd/lcd.o mcp_adc.o i2c_simple.o usb.o +include Makefile.inc +# symbolic targets: +all: master -include avrbuild/Makefile.avrbuild +master: + cd masterchip; $(MAKE) $(MFLAGS) +clean: + cd masterchip; $(MAKE) $(MFLAGS) clean + cd slavechip; $(MAKE) $(MFLAGS) clean diff --git a/firmware/Makefile.inc b/firmware/Makefile.inc new file mode 100644 index 0000000..03314b8 --- /dev/null +++ b/firmware/Makefile.inc @@ -0,0 +1,13 @@ +DEFINES += -DF_CPU=16000000 +CFLAGS += -save-temps +CFLAGS += -std=gnu99 -Wall # implements C99, for +# this removes dead code and does global linker optimization +#CFLAGS += -ffunction-sections -Wl,--gc-sections -Wl,--relax +CFLAGS += -Wall -Os -I. -mmcu=atmega88 + +# further optimization: +#CFLAGS += --param inline-call-cost=2 +CFLAGS += -fno-move-loop-invariants # suggestions from from v-usb +CFLAGS += -fno-tree-scev-cprop +CFLAGS += -fno-inline-small-functions + diff --git a/firmware/masterchip/Makefile b/firmware/masterchip/Makefile new file mode 100644 index 0000000..7bcd805 --- /dev/null +++ b/firmware/masterchip/Makefile @@ -0,0 +1,67 @@ +# masterchip-makefile +include ../Makefile.inc + +COMPILE = avr-gcc $(CFLAGS) $(DEFINES) + +OBJECTS = usbdrv/usbdrvasm.o usbdrv/usbdrv.o main.o display.o lcd/lcd.o usb.o + +# symbolic targets: +all: firmware.hex + +.c.o: + $(COMPILE) -c $< -o $@ + +.S.o: + $(COMPILE) -x assembler-with-cpp -c $< -o $@ +# "-x assembler-with-cpp" should not be necessary since this is the default +# file type for the .S (with capital S) extension. However, upper case +# characters are not always preserved on Windows. To ensure WinAVR +# compatibility define the file type manually. + +.c.s: + $(COMPILE) -S $< -o $@ + +flash: all + avrdude -c usbasp -p m88 -U flash:w:firmware.hex + +fuses: + avrdude -c usbasp -p m88 -U lfuse:w:0xdf:m -U hfuse:w:0xde:m # external oscillator + + +## what are the source dependencies +%.d: %.c + @set -e; rm -f $@; \ + $(COMPILE) -MM $< | sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' > $@; +# line 1: exits if anything goes wrong +# line 2a: gcc -MM outputs dependencies +# line 2b: insert the %.d into dependency list + +#main.c: version.h + + +clean: + rm -f *.o *.hex *.obj *.i *.s *.d */*.i */*.s */*.o */*.d version.h + +# file targets: +firmware.bin: $(OBJECTS) + $(COMPILE) -o firmware.bin $(OBJECTS) + +firmware.hex: firmware.bin + rm -f firmware.hex firmware.eep.hex + avr-objcopy -j .text -j .data -O ihex firmware.bin firmware.hex + avr-size firmware.bin +# ./checksize firmware.bin 8192 960 +# do the checksize script as our last action to allow successful compilation +# on Windows with WinAVR where the Unix commands will fail. + +disasm: firmware.bin + avr-objdump -d firmware.bin >disasm + +functionsize: disasm + python avrbuild/functionsize.py + +countregs: disasm + python avrbuild/countregs.py + +# for depends: +-include $(OBJECTS:.o=.d) diff --git a/firmware/display.c b/firmware/masterchip/display.c similarity index 100% rename from firmware/display.c rename to firmware/masterchip/display.c diff --git a/firmware/display.h b/firmware/masterchip/display.h similarity index 100% rename from firmware/display.h rename to firmware/masterchip/display.h diff --git a/firmware/lcd/COPYING b/firmware/masterchip/lcd/COPYING similarity index 100% rename from firmware/lcd/COPYING rename to firmware/masterchip/lcd/COPYING diff --git a/firmware/lcd/lcd.c b/firmware/masterchip/lcd/lcd.c similarity index 100% rename from firmware/lcd/lcd.c rename to firmware/masterchip/lcd/lcd.c diff --git a/firmware/lcd/lcd.h b/firmware/masterchip/lcd/lcd.h similarity index 100% rename from firmware/lcd/lcd.h rename to firmware/masterchip/lcd/lcd.h diff --git a/firmware/main.c b/firmware/masterchip/main.c similarity index 100% rename from firmware/main.c rename to firmware/masterchip/main.c diff --git a/firmware/main.h b/firmware/masterchip/main.h similarity index 100% rename from firmware/main.h rename to firmware/masterchip/main.h diff --git a/firmware/masterchip/spi.c b/firmware/masterchip/spi.c new file mode 120000 index 0000000..688c0fb --- /dev/null +++ b/firmware/masterchip/spi.c @@ -0,0 +1 @@ +../shared/spi.c \ No newline at end of file diff --git a/firmware/masterchip/spi.h b/firmware/masterchip/spi.h new file mode 120000 index 0000000..ef58aea --- /dev/null +++ b/firmware/masterchip/spi.h @@ -0,0 +1 @@ +../shared/spi.h \ No newline at end of file diff --git a/firmware/usb.c b/firmware/masterchip/usb.c similarity index 100% rename from firmware/usb.c rename to firmware/masterchip/usb.c diff --git a/firmware/usb.h b/firmware/masterchip/usb.h similarity index 100% rename from firmware/usb.h rename to firmware/masterchip/usb.h diff --git a/firmware/masterchip/usbdrv b/firmware/masterchip/usbdrv new file mode 120000 index 0000000..fe38647 --- /dev/null +++ b/firmware/masterchip/usbdrv @@ -0,0 +1 @@ +../../vusb-20100715/usbdrv \ No newline at end of file diff --git a/firmware/spi.c b/firmware/shared/spi.c similarity index 100% rename from firmware/spi.c rename to firmware/shared/spi.c diff --git a/firmware/spi.h b/firmware/shared/spi.h similarity index 100% rename from firmware/spi.h rename to firmware/shared/spi.h diff --git a/firmware/slavechip/Makefile b/firmware/slavechip/Makefile new file mode 100644 index 0000000..beadcff --- /dev/null +++ b/firmware/slavechip/Makefile @@ -0,0 +1,66 @@ +include ../Makefile.inc + +COMPILE = avr-gcc $(CFLAGS) $(DEFINES) + +OBJECTS = mcp_adc.o i2c_simple.o + +# symbolic targets: +all: firmware.hex + +.c.o: + $(COMPILE) -c $< -o $@ + +.S.o: + $(COMPILE) -x assembler-with-cpp -c $< -o $@ +# "-x assembler-with-cpp" should not be necessary since this is the default +# file type for the .S (with capital S) extension. However, upper case +# characters are not always preserved on Windows. To ensure WinAVR +# compatibility define the file type manually. + +.c.s: + $(COMPILE) -S $< -o $@ + +flash: all + avrdude -c usbasp -p m88 -U flash:w:firmware.hex + +fuses: + avrdude -c usbasp -p m88 -U lfuse:w:0xdf:m -U hfuse:w:0xde:m # external oscillator + + +## what are the source dependencies +%.d: %.c + @set -e; rm -f $@; \ + $(COMPILE) -MM $< | sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' > $@; +# line 1: exits if anything goes wrong +# line 2a: gcc -MM outputs dependencies +# line 2b: insert the %.d into dependency list + +#main.c: version.h + + +clean: + rm -f *.o *.hex *.obj *.i *.s *.d */*.i */*.s */*.o */*.d version.h + +# file targets: +firmware.bin: $(OBJECTS) + $(COMPILE) -o firmware.bin $(OBJECTS) + +firmware.hex: firmware.bin + rm -f firmware.hex firmware.eep.hex + avr-objcopy -j .text -j .data -O ihex firmware.bin firmware.hex + avr-size firmware.bin +# ./checksize firmware.bin 8192 960 +# do the checksize script as our last action to allow successful compilation +# on Windows with WinAVR where the Unix commands will fail. + +disasm: firmware.bin + avr-objdump -d firmware.bin >disasm + +functionsize: disasm + python avrbuild/functionsize.py + +countregs: disasm + python avrbuild/countregs.py + +# for depends: +-include $(OBJECTS:.o=.d) diff --git a/firmware/i2c_simple.c b/firmware/slavechip/i2c_simple.c similarity index 100% rename from firmware/i2c_simple.c rename to firmware/slavechip/i2c_simple.c diff --git a/firmware/i2c_simple.h b/firmware/slavechip/i2c_simple.h similarity index 100% rename from firmware/i2c_simple.h rename to firmware/slavechip/i2c_simple.h diff --git a/firmware/mcp_adc.c b/firmware/slavechip/mcp_adc.c similarity index 100% rename from firmware/mcp_adc.c rename to firmware/slavechip/mcp_adc.c diff --git a/firmware/mcp_adc.h b/firmware/slavechip/mcp_adc.h similarity index 100% rename from firmware/mcp_adc.h rename to firmware/slavechip/mcp_adc.h diff --git a/firmware/usbdrv b/firmware/usbdrv deleted file mode 120000 index 421b6b4..0000000 --- a/firmware/usbdrv +++ /dev/null @@ -1 +0,0 @@ -../vusb-20100715/usbdrv/ \ No newline at end of file