Created
November 7, 2018 17:50
-
-
Save jackhumbert/50cbfead6ab27b6b3ee42f8c59d72776 to your computer and use it in GitHub Desktop.
BootloaderHID Makefile for Planck THK
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Name: Makefile | |
# Project: bootloadHID | |
# Author: Christian Starkjohann | |
# Creation Date: 2007-03-19 | |
# Tabsize: 4 | |
# Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH | |
# License: GNU GPL v2 (see License.txt) | |
# This Revision: $Id$ | |
############################################################################### | |
# Configure the following variables according to your AVR. The example below | |
# is for an ATMega8. Program the device with | |
# make fuse # to set the clock generator, boot section size etc. | |
# make flash # to load the boot loader into flash | |
# make lock # to protect the boot loader from overwriting | |
DEVICE = atmega32a | |
BOOTLOADER_ADDRESS = 7000 | |
F_CPU = 16000000 | |
FUSEH = 0xcf | |
FUSEL = 0x99 | |
# Fuse high byte: | |
# 0xc0 = 1 1 0 0 0 0 0 0 <-- BOOTRST (boot reset vector at 0x1800) | |
# ^ ^ ^ ^ ^ ^ ^------ BOOTSZ0 | |
# | | | | | +-------- BOOTSZ1 | |
# | | | | + --------- EESAVE (preserve EEPROM over chip erase) | |
# | | | +-------------- CKOPT (full output swing) | |
# | | +---------------- SPIEN (allow serial programming) | |
# | +------------------ WDTON (WDT not always on) | |
# +-------------------- RSTDISBL (reset pin is enabled) | |
# 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) | |
############################################################################### | |
AVRDUDE = avrdude -c stk500v2 -P avrdoper -p $(DEVICE) | |
LDFLAGS += -Wl,--relax,--gc-sections -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS) | |
# Omit -fno-* options when using gcc 3, it does not support them. | |
COMPILE = avr-gcc -Wall -Os -fno-move-loop-invariants -fno-tree-scev-cprop -fno-inline-small-functions -Iusbdrv -I. -mmcu=$(DEVICE) -DF_CPU=$(F_CPU) -DDEBUG_LEVEL=0 # -DTEST_MODE | |
# NEVER compile the final product with debugging! Any debug output will | |
# distort timing so that the specs can't be met. | |
OBJECTS = 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 | |
readflash: | |
$(AVRDUDE) -U flash:r:read.hex:i | |
fuse: | |
$(AVRDUDE) -U hfuse:w:$(FUSEH):m -U lfuse:w:$(FUSEL):m | |
lock: | |
$(AVRDUDE) -U lock:w:0x2f:m | |
read_fuses: | |
$(UISP) --rd_fuses | |
clean: | |
rm -f main.hex main.bin *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s | |
# file targets: | |
main.bin: $(OBJECTS) | |
$(COMPILE) -o main.bin $(OBJECTS) $(LDFLAGS) | |
main.hex: main.bin | |
rm -f main.hex main.eep.hex | |
avr-objcopy -j .text -j .data -O ihex main.bin main.hex | |
avr-size main.hex | |
disasm: main.bin | |
avr-objdump -d main.bin | |
cpp: | |
$(COMPILE) -E main.c |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment