avr.mk 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. # Programmer used for In System Programming
  2. ISP_PROG = dapa
  3. # device the ISP programmer is connected to
  4. ISP_DEV = /dev/parport0
  5. # Programmer used for serial programming (using the bootloader)
  6. SERIAL_PROG = avr109
  7. # device the serial programmer is connected to
  8. SERIAL_DEV = /dev/ttyS0
  9. # programs
  10. CC = avr-gcc
  11. OBJCOPY = avr-objcopy
  12. OBJDUMP = avr-objdump
  13. AS = avr-as
  14. CP = cp
  15. RM = rm -f
  16. AVRDUDE = avrdude
  17. AVRDUDE_BAUDRATE = 19200
  18. SIZE = avr-size
  19. -include $(CURDIR)/config.mk
  20. # flags for avrdude
  21. ifeq ($(MCU),atmega8)
  22. AVRDUDE_MCU=m8
  23. endif
  24. ifeq ($(MCU),atmega48)
  25. AVRDUDE_MCU=m48
  26. endif
  27. ifeq ($(MCU),atmega88)
  28. AVRDUDE_MCU=m88
  29. endif
  30. ifeq ($(MCU),atmega168)
  31. AVRDUDE_MCU=m168
  32. endif
  33. AVRDUDE_FLAGS += -p $(AVRDUDE_MCU) -b $(AVRDUDE_BAUDRATE)
  34. # flags for the compiler
  35. CFLAGS += -g -Os -finline-limit=800 -mmcu=$(MCU) -DF_CPU=$(F_CPU) -std=gnu99
  36. ASFLAGS += -g -mmcu=$(MCU) -DF_CPU=$(F_CPU)
  37. # flags for the linker
  38. LDFLAGS += -mmcu=$(MCU)
  39. ifneq ($(DEBUG),)
  40. CFLAGS += -Wall -W -Wchar-subscripts -Wmissing-prototypes
  41. CFLAGS += -Wmissing-declarations -Wredundant-decls
  42. CFLAGS += -Wstrict-prototypes -Wshadow -Wbad-function-cast
  43. CFLAGS += -Winline -Wpointer-arith -Wsign-compare
  44. #CFLAGS += -Wunreachable-code -Wdisabled-optimization -Werror
  45. CFLAGS += -Wunreachable-code -Wdisabled-optimization
  46. CFLAGS += -Wcast-align -Wwrite-strings -Wnested-externs -Wundef
  47. CFLAGS += -Wa,-adhlns=$(basename $@).lst
  48. CFLAGS += -DDEBUG
  49. endif
  50. all:
  51. $(OBJECTS):
  52. clean:
  53. $(RM) *.hex *.eep.hex *.o *.lst *.lss
  54. interactive-isp:
  55. $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(ISP_PROG) -P $(ISP_DEV) -t
  56. interactive-serial:
  57. $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(SERIAL_PROG) -P $(SERIAL_DEV) -t
  58. .PHONY: all clean interactive-isp interactive-serial launch-bootloader
  59. program-isp-%: %.hex
  60. $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(ISP_PROG) -P $(ISP_DEV) -U flash:w:$<
  61. program-isp-eeprom-%: %.eep.hex
  62. $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(ISP_PROG) -P $(ISP_DEV) -U eeprom:w:$<
  63. program-serial-%: %.hex
  64. $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(SERIAL_PROG) -P $(SERIAL_DEV) -U flash:w:$<
  65. program-serial-eeprom-%: %.eep.hex launch-bootloader
  66. $(AVRDUDE) $(AVRDUDE_FLAGS) -c $(SERIAL_PROG) -P $(SERIAL_DEV) -U eeprom:w:$<
  67. %.hex: %
  68. $(OBJCOPY) -O ihex -R .eeprom $< $@
  69. %.eep.hex: %
  70. $(OBJCOPY) --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex -j .eeprom $< $@
  71. %.lss: %
  72. $(OBJDUMP) -h -S $< > $@
  73. %-size: %.hex
  74. $(SIZE) $<
  75. launch-bootloader:
  76. launch-bootloader $(SERIAL_DEV) $(AVRDUDE_BAUDRATE)