Makefile 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # microcontroller and project specific settings
  2. TARGET = bootloader
  3. F_CPU = 20000000UL
  4. MCU = atmega644
  5. SRC = bootloader.c
  6. ASRC = usbdrv/usbdrvasm.S interrupts.S
  7. OBJECTS += $(patsubst %.c,%.o,${SRC})
  8. OBJECTS += $(patsubst %.S,%.o,${ASRC})
  9. HEADERS += $(shell echo *.h)
  10. # CFLAGS += -Werror
  11. LDFLAGS += -L/usr/local/avr/avr/lib
  12. CFLAGS += -Iusbdrv -I.
  13. CFLAGS += -DHARDWARE_REV=$(HARDWARE_REV)
  14. CDEFS += -DF_CPU
  15. ASFLAGS += -x assembler-with-cpp
  16. ASFLAGS += -Iusbdrv -I.
  17. # use own linkerscript, for special interrupt table handling
  18. LDFLAGS += -T ./ldscripts/avr5.x
  19. # no safe mode checks
  20. AVRDUDE_FLAGS += -u
  21. # set name for dependency-file
  22. MAKEFILE = Makefile
  23. # bootloader section start
  24. # (see datasheet)
  25. ifeq ($(MCU),atmega168)
  26. # atmega168 with 1024 words bootloader:
  27. # bootloader section starts at 0x1c00 (word-address) == 0x3800 (byte-address)
  28. BOOT_SECTION_START = 0x3800
  29. else ifeq ($(MCU),atmega88)
  30. # atmega88 with 1024 words bootloader:
  31. # bootloader section starts at 0xc00 (word-address) == 0x1800 (byte-address)
  32. BOOT_SECTION_START = 0x1800
  33. else ifeq ($(MCU),atmega644)
  34. # atmega644 with 2048 words bootloader:
  35. # bootloader section starts at 0x7800 (word-address) == 0xF000 (byte-address)
  36. BOOT_SECTION_START = 0xf000
  37. endif
  38. LDFLAGS += -Wl,--section-start=.text=$(BOOT_SECTION_START) -Wl,-u,vfprintf
  39. CFLAGS += -DBOOT_SECTION_START=$(BOOT_SECTION_START)
  40. include avr.mk
  41. .PHONY: all
  42. all: $(TARGET).hex $(TARGET).lss
  43. @echo "==============================="
  44. @echo "$(TARGET) compiled for: $(MCU)"
  45. @echo -n "size is: "
  46. @$(SIZE) -A $(TARGET).hex | grep "\.sec1" | tr -s " " | cut -d" " -f2
  47. @echo "==============================="
  48. $(TARGET): $(OBJECTS) $(TARGET).o
  49. %.o: $(HEADERS)
  50. .PHONY: clean clean-$(TARGET)
  51. clean: clean-$(TARGET)
  52. clean-$(TARGET):
  53. $(RM) $(TARGET) $(OBJECTS)
  54. .PHONY: depend test
  55. depend:
  56. $(CC) $(CFLAGS) -M $(CDEFS) $(CINCS) $(SRC) >> $(MAKEFILE).dep
  57. -include $(MAKEFILE).dep