Чт дек 17, 2020 14:10:46
- makefile for avr-gcc
- avrdude
- несколько целей для прошивки (разные программаторы; разные параметры, разные по кол-ву и настройкам)
FLASH_NAME ?= usbasp ###!!! дефолтный программатор
FLASH_DEV ?= usb
flash_usbasp : FLASH_NAME ?= usbasp
flash_usbasp : FLASH_BRATE = 115200
flash_usbasp : FLASH_BCLOCK = 4
flash_usbasp : AVRDUDE_FLAG += -b $(FLASH_BRATE) -B $(FLASH_BCLOCK)
flash_usbasp : flash_cmd
flash_ispmkii : FLASH_NAME = avrispmkII
flash_ispmkii : FLASH_BRATE = 115200
flash_ispmkii : FLASH_BCLOCK = 4
flash_ispmkii : AVRDUDE_FLAG += -b $(FLASH_BRATE) -B $(FLASH_BCLOCK)
flash_ispmkii : flash_cmd
flash_109 : FLASH_NAME = avr109
flash_109 : FLASH_BRATE = 9600
flash_109 : AVRDUDE_FLAG += -b $(FLASH_BRATE)
flash_109 : flash_cmd
###!!!
# рекурсивынй вызов, в зов-ти от цели
###!!!
flash :
ifeq ($(FLASH_NAME),usbasp)
$(MAKE) flash_usbasp
endif
ifeq ($(FLASH_NAME),ispmkii)
$(MAKE) flash_ispmkii
endif
ifeq ($(FLASH_NAME),avr109)
$(MAKE) flash_avr109
endif
flash_cmd: $(TARGET).hex
$(AVRDUDE) -c $(FLASH_NAME) -P $(FLASH_DEV) -F $(AVRDUDE_FLAG) -U flash:w:$(OUTDIR)/$<
FLASH_NAME ?= name1
FLASH_NAME ?= name2
FLASH_NAME ?= name3
...
flash_name1 : FLASH_NAME =
flash_name1 : ARG = ...
flash_name1 : flash
flash_name2 : FLASH_NAME =
flash_name2 : ARG = ...
flash_name2 : flash
flash_name3 : FLASH_NAME =
flash_name3 : ARG = ...
flash_name3 : flash
flash : flash_$(FLASH_NAME)
$(FLASH_CMD)
...
make all - сборка проекта
make flash - прошивка дефолтным свистком (настраивается)
make flash_$NAME - прошивка кастомным свистком
Сб дек 19, 2020 16:20:26
-U flash:w:$(OUTDIR)/$<
-U flash:w:out/main.hex
-->
-U flash:w:out/flash_usbasp
-U flash:w:$(OUTDIR)/$<
-U flash:w:$(OUTDIR)/$(TARGET).hex