Makefile 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. # microcontroller and project specific settings
  2. TARGET = usbload
  3. F_CPU = 20000000UL
  4. MCU = atmega168
  5. SRC = usbload.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. ASFLAGS += -x assembler-with-cpp
  15. ASFLAGS += -Iusbdrv -I.
  16. # use own linkerscript, for special interrupt table handling
  17. LDFLAGS += -T ./ldscripts/avr5.x
  18. # no safe mode checks
  19. AVRDUDE_FLAGS += -u
  20. # set name for dependency-file
  21. MAKEFILE = Makefile
  22. # bootloader section start
  23. # (see datasheet)
  24. ifeq ($(MCU),atmega168)
  25. # atmega168 with 1024 words bootloader:
  26. # bootloader section starts at 0x1c00 (word-address) == 0x3800 (byte-address)
  27. BOOT_SECTION_START = 0x3800
  28. else ifeq ($(MCU),atmega88)
  29. # atmega88 with 1024 words bootloader:
  30. # bootloader section starts at 0xc00 (word-address) == 0x1800 (byte-address)
  31. BOOT_SECTION_START = 0x1800
  32. endif
  33. LDFLAGS += -Wl,--section-start=.text=$(BOOT_SECTION_START)
  34. CFLAGS += -DBOOT_SECTION_START=$(BOOT_SECTION_START)
  35. include avr.mk
  36. .PHONY: all
  37. all: $(TARGET).hex $(TARGET).lss
  38. @echo "==============================="
  39. @echo "$(TARGET) compiled for: $(MCU)"
  40. @echo -n "size is: "
  41. @$(SIZE) -A $(TARGET).hex | grep "\.sec1" | tr -s " " | cut -d" " -f2
  42. @echo "max size:2048 bytes"
  43. @echo "==============================="
  44. $(TARGET): $(OBJECTS) $(TARGET).o
  45. %.o: $(HEADERS)
  46. .PHONY: install lock fuses-atmega168-unzap bootstrap
  47. # install: program-serial-$(TARGET) program-serial-eeprom-$(TARGET)
  48. install: program-isp-$(TARGET)
  49. lock:
  50. $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(ISP_PROG) -P $(ISP_DEV) -U lock:w:0x2f:m
  51. fuses-atmega168-unzap:
  52. echo "sck 5" | $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(ISP_PROG) -P $(ISP_DEV) -F -u -t
  53. $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(ISP_PROG) -P $(ISP_DEV) -U lfuse:w:0xe7:m -U hfuse:w:0xd5:m -U efuse:w:0x00:m
  54. echo "sck 0.2" | $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(ISP_PROG) -P $(ISP_DEV) -F -u -t
  55. fuses-atmega168-rumpus:
  56. echo "sck 5" | $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(ISP_PROG) -P $(ISP_DEV) -F -u -t
  57. $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(ISP_PROG) -P $(ISP_DEV) -U lfuse:w:0xe7:m -U efuse:w:0x00:m
  58. echo "sck 0.2" | $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(ISP_PROG) -P $(ISP_DEV) -F -u -t
  59. bootstrap: fuses-atmega168-unzap install lock
  60. .PHONY: clean clean-$(TARGET) clean-uploadtest
  61. clean: clean-$(TARGET) clean-uploadtest
  62. clean-$(TARGET):
  63. $(RM) $(TARGET) $(OBJECTS)
  64. clean-uploadtest:
  65. rm -f datatestfile{512,14k}.raw
  66. .PHONY: depend test uploadtest
  67. depend:
  68. $(CC) $(CFLAGS) -M $(CDEFS) $(CINCS) $(SRC) >> $(MAKEFILE).dep
  69. datatestfile14k.raw:
  70. dd if=/dev/urandom of=datatestfile14k.raw bs=1 count=14336
  71. datatestfile512.raw:
  72. dd if=/dev/urandom of=datatestfile512.raw bs=1 count=512
  73. test/test.hex:
  74. $(MAKE) -C test test.hex
  75. uploadtest: datatestfile14k.raw datatestfile512.raw
  76. $(AVRDUDE) -p $(AVRDUDE_MCU) -c usbasp -P usb -U flash:w:datatestfile14k.raw -U eeprom:w:datatestfile512.raw
  77. $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(ISP_PROG) -P $(ISP_DEV) -U flash:v:datatestfile14k.raw -U eeprom:v:datatestfile512.raw
  78. -include $(MAKEFILE).dep