From 65e38e8e77bf14f32556062387f1e27676315b58 Mon Sep 17 00:00:00 2001 From: paul eeepc Date: Fri, 18 Nov 2016 23:46:02 -0600 Subject: [PATCH] Modifing firmware makefile to work with INL retro-prog --- firmware/Makefile | 116 ++++++---------------------------------------- 1 file changed, 13 insertions(+), 103 deletions(-) diff --git a/firmware/Makefile b/firmware/Makefile index a653e7f..741edfd 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -6,119 +6,33 @@ # Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH # License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) -DEVICE = atmega168 +DEVICE = atmega164a F_CPU = 16000000 # in Hz -FUSE_L = # see below for fuse values for particular devices -FUSE_H = -AVRDUDE = avrdude -c usbasp -p $(DEVICE) # edit this line for your programmer +# Fuses and ISP programming handled in bootloader firmware build +#TODO find sources and objects automatically +#SOURCES=$(wildcard source/**/*.c source/*.c) +#OBJECTS=$(patsubst %.c,%.o,$(SOURCES)) CFLAGS = -Iusbdrv -I. -DDEBUG_LEVEL=0 OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o COMPILE = avr-gcc -Wall -Os -DF_CPU=$(F_CPU) $(CFLAGS) -mmcu=$(DEVICE) -############################################################################## -# Fuse values for particular devices -############################################################################## -# If your device is not listed here, go to -# http://palmavr.sourceforge.net/cgi-bin/fc.cgi -# and choose options for external crystal clock and no clock divider -# -################################## ATMega8 ################################## -# ATMega8 FUSE_L (Fuse low byte): -# 0x9f = 1 0 0 1 1 1 1 1 -# ^ ^ \ / \--+--/ -# | | | +------- CKSEL 3..0 (external >8M crystal) -# | | +--------------- SUT 1..0 (crystal osc, BOD enabled) -# | +------------------ BODEN (BrownOut Detector enabled) -# +-------------------- BODLEVEL (2.7V) -# ATMega8 FUSE_H (Fuse high byte): -# 0xc9 = 1 1 0 0 1 0 0 1 <-- BOOTRST (boot reset vector at 0x0000) -# ^ ^ ^ ^ ^ ^ ^------ BOOTSZ0 -# | | | | | +-------- BOOTSZ1 -# | | | | + --------- EESAVE (don't preserve EEPROM over chip erase) -# | | | +-------------- CKOPT (full output swing) -# | | +---------------- SPIEN (allow serial programming) -# | +------------------ WDTON (WDT not always on) -# +-------------------- RSTDISBL (reset pin is enabled) -# -############################## ATMega48/88/168 ############################## -# ATMega*8 FUSE_L (Fuse low byte): -# 0xdf = 1 1 0 1 1 1 1 1 -# ^ ^ \ / \--+--/ -# | | | +------- CKSEL 3..0 (external >8M crystal) -# | | +--------------- SUT 1..0 (crystal osc, BOD enabled) -# | +------------------ CKOUT (if 0: Clock output enabled) -# +-------------------- CKDIV8 (if 0: divide by 8) -# ATMega*8 FUSE_H (Fuse high byte): -# 0xde = 1 1 0 1 1 1 1 0 -# ^ ^ ^ ^ ^ \-+-/ -# | | | | | +------ BODLEVEL 0..2 (110 = 1.8 V) -# | | | | + --------- EESAVE (preserve EEPROM over chip erase) -# | | | +-------------- WDTON (if 0: watchdog always on) -# | | +---------------- SPIEN (allow serial programming) -# | +------------------ DWEN (debug wire enable) -# +-------------------- RSTDISBL (reset pin is enabled) -# -############################## ATTiny25/45/85 ############################### -# ATMega*5 FUSE_L (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) -# ATMega*5 FUSE_H (Fuse high byte): -# 0xdd = 1 1 0 1 1 1 0 1 -# ^ ^ ^ ^ ^ \-+-/ -# | | | | | +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V) -# | | | | +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved) -# | | | +-------------- WDTON (watchdog timer always on -> disable) -# | | +---------------- SPIEN (enable serial programming -> enabled) -# | +------------------ DWEN (debug wire enable) -# +-------------------- RSTDISBL (disable external reset -> enabled) -# -################################ ATTiny2313 ################################# -# ATTiny2313 FUSE_L (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) -# ATTiny2313 FUSE_H (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) - - # symbolic targets: help: @echo "This Makefile has no default rule. Use one of the following:" - @echo "make hex ....... to build main.hex" - @echo "make program ... to flash fuses and firmware" - @echo "make fuse ...... to flash the fuses" - @echo "make flash ..... to flash the firmware (use this on metaboard)" - @echo "make clean ..... to delete objects and hex file" + @echo "make hex ............ to build main.hex" + @echo "make program ........ windows flash firmware via bootloader" + @echo "make program_unix ... unix flash firmware via bootloader" + @echo "make clean .......... to delete objects and hex file" hex: main.hex -program: flash fuse +program: main.hex + ../bootloader/commandline/bootloadHID.exe -r $< -# rule for programming fuse bits: -fuse: - @[ "$(FUSE_H)" != "" -a "$(FUSE_L)" != "" ] || \ - { echo "*** Edit Makefile and choose values for FUSE_L and FUSE_H!"; exit 1; } - $(AVRDUDE) -U hfuse:w:$(FUSE_H):m -U lfuse:w:$(FUSE_L):m - -# rule for uploading firmware: -flash: main.hex - $(AVRDUDE) -U flash:w:main.hex:i +program_unix: main.hex + ../bootloader/commandline/bootloadHID -r $< # rule for deleting dependent files (those which can be built by Make): clean: @@ -142,10 +56,6 @@ clean: # file targets: -# Since we don't want to ship the driver multipe times, we copy it into this project: -usbdrv: - cp -r ../../../usbdrv . - main.elf: usbdrv $(OBJECTS) # usbdrv dependency only needed because we copy it $(COMPILE) -o main.elf $(OBJECTS)