summaryrefslogtreecommitdiff
path: root/firmware/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/Makefile')
-rw-r--r--firmware/Makefile79
1 files changed, 79 insertions, 0 deletions
diff --git a/firmware/Makefile b/firmware/Makefile
new file mode 100644
index 0000000..793ffc0
--- /dev/null
+++ b/firmware/Makefile
@@ -0,0 +1,79 @@
+# Name: Makefile
+# Project: PowerSwitch
+# Author: Christian Starkjohann
+# Creation Date: 2004-12-29
+# Tabsize: 4
+# Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH
+# License: GNU GPL v2 (see License.txt) or proprietary (CommercialLicense.txt)
+# This Revision: $Id$
+
+DEVICE = attiny2313
+AVRDUDE = avrdude -c usbasp -p $(DEVICE)
+# Choose your favorite programmer and interface above.
+
+COMPILE = avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=$(DEVICE) -DF_CPU=16000000 #-DDEBUG_LEVEL=2
+# NEVER compile the final product with debugging! Any debug output will
+# distort timing so that the specs can't be met.
+
+OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o
+
+# symbolic targets:
+all: main.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) -U flash:w:main.hex:i
+
+
+# Fuse low byte:
+# 0xef = 1 1 1 0 1 1 1 1
+# ^ ^ \+/ \--+--/
+# | | | +------- CKSEL 3..0 (clock selection -> crystal @ 12 MHz)
+# | | +--------------- SUT 1..0 (BOD enabled, fast rising power)
+# | +------------------ CKOUT (clock output on CKOUT pin -> disabled)
+# +-------------------- CKDIV8 (divide clock by 8 -> don't divide)
+#
+# Fuse high byte:
+# 0xdb = 1 1 0 1 1 0 1 1
+# ^ ^ ^ ^ \-+-/ ^
+# | | | | | +---- RSTDISBL (disable external reset -> enabled)
+# | | | | +-------- BODLEVEL 2..0 (brownout trigger level -> 2.7V)
+# | | | +-------------- WDTON (watchdog timer always on -> disable)
+# | | +---------------- SPIEN (enable serial programming -> enabled)
+# | +------------------ EESAVE (preserve EEPROM on Chip Erase -> not preserved)
+# +-------------------- DWEN (debug wire enable)
+fuse_tiny2313: # only needed for attiny2313
+ $(AVRDUDE) -U hfuse:w:0xdb:m -U lfuse:w:0xef:m
+
+
+clean:
+ rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.bin *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s
+
+# file targets:
+main.bin: $(OBJECTS)
+ $(COMPILE) -o main.bin $(OBJECTS)
+
+main.hex: main.bin
+ rm -f main.hex main.eep.hex
+ avr-objcopy -j .text -j .data -O ihex main.bin main.hex
+ ./checksize main.bin
+# do the checksize script as our last action to allow successful compilation
+# on Windows with WinAVR where the Unix commands will fail.
+
+disasm: main.bin
+ avr-objdump -d main.bin
+
+cpp:
+ $(COMPILE) -E main.c