@@ -564,15 +564,56 @@ CFLAGS += -DMICROPY_QSTR_EXTRA_POOL=mp_qstr_frozen_const_pool
564
564
CFLAGS += -DMICROPY_MODULE_FROZEN_MPY
565
565
endif
566
566
567
- .PHONY : deploy
567
+ define RUN_DFU
568
+ $(ECHO ) "Writing $(1 ) to the board"
569
+ $(if $(filter $(USE_PYDFU ) ,1) ,\
570
+ $(Q )$(PYTHON ) $(PYDFU ) --vid $(BOOTLOADER_DFU_USB_VID ) --pid $(BOOTLOADER_DFU_USB_PID ) -u $(1 ) ,
571
+ $(Q )$(DFU_UTIL ) -a 0 -d $(BOOTLOADER_DFU_USB_VID ) :$(BOOTLOADER_DFU_USB_PID ) -D $(1 ) )
572
+ endef
573
+
574
+ define RUN_STLINK
575
+ $(ECHO ) "Writing $(1 ) to the board via ST-LINK"
576
+ $(Q )$(STFLASH ) write $(1 ) $(2 )
577
+ endef
578
+
579
+ define RUN_OPENOCD
580
+ $(ECHO ) "Writing $(1 ) to the board via ST-LINK using OpenOCD"
581
+ $(Q )$(OPENOCD ) -f $(OPENOCD_CONFIG ) -c "stm_flash $(1 ) $(2 ) $(3 ) $(4 ) "
582
+ endef
583
+
584
+ define GENERATE_ELF
585
+ $(ECHO ) "LINK $(1 ) "
586
+ $(Q )$(LD ) $(LDFLAGS ) -o $(1 ) $(2 ) $(LDFLAGS_MOD ) $(LIBS )
587
+ $(Q )$(SIZE ) $(1 )
588
+ $(if $(filter-out $(TEXT0_ADDR ) ,0x08000000) , \
589
+ $(ECHO ) "INFO: this build requires mboot to be installed first")
590
+ $(if $(filter $(TEXT1_ADDR ) ,0x90000000) , \
591
+ $(ECHO ) "INFO: this build places firmware in external QSPI flash")
592
+ endef
593
+
594
+ define GENERATE_BIN
595
+ $(ECHO ) "GEN $(1 ) "
596
+ $(Q )$(OBJCOPY ) -O binary $(addprefix -j ,$(3 ) ) $(2 ) $(1 )
597
+ endef
598
+
599
+ define GENERATE_DFU
600
+ $(ECHO ) "GEN $(1 ) "
601
+ $(Q )$(PYTHON ) $(DFU ) \
602
+ -D $(BOOTLOADER_DFU_USB_VID ) :$(BOOTLOADER_DFU_USB_PID ) \
603
+ $(if $(2 ) ,$(addprefix -b ,$(3 ) :$(2 ) ) ) \
604
+ $(if $(4 ) ,$(addprefix -b ,$(5 ) :$(4 ) ) ) \
605
+ $(1 )
606
+ endef
607
+
608
+ define GENERATE_HEX
609
+ $(ECHO ) "GEN $(1 ) "
610
+ $(Q )$(OBJCOPY ) -O ihex $(2 ) $(1 )
611
+ endef
612
+
613
+ .PHONY : deploy deploy-stlink deploy-openocd
568
614
569
615
deploy : $(BUILD ) /firmware.dfu
570
- $(ECHO ) " Writing $< to the board"
571
- ifeq ($(USE_PYDFU ) ,1)
572
- $(Q)$(PYTHON) $(PYDFU) --vid $(BOOTLOADER_DFU_USB_VID) --pid $(BOOTLOADER_DFU_USB_PID) -u $<
573
- else
574
- $(Q)$(DFU_UTIL) -a 0 -d $(BOOTLOADER_DFU_USB_VID):$(BOOTLOADER_DFU_USB_PID) -D $<
575
- endif
616
+ $(call RUN_DFU,$^ )
576
617
577
618
# A board should specify TEXT0_ADDR if to use a different location than the
578
619
# default for the firmware memory location. A board can also optionally define
@@ -584,57 +625,46 @@ ifeq ($(TEXT1_ADDR),)
584
625
585
626
TEXT0_SECTIONS ?= .isr_vector .text .data
586
627
587
- deploy-stlink : $(BUILD ) /firmware.dfu
588
- $(ECHO ) " Writing $( BUILD) /firmware.bin to the board via ST-LINK"
589
- $(Q )$(STFLASH ) write $(BUILD ) /firmware.bin $(TEXT0_ADDR )
628
+ deploy-stlink : $(BUILD ) /firmware.bin
629
+ $(call RUN_STLINK,$^ ,$(TEXT0_ADDR ) )
590
630
591
- deploy-openocd : $(BUILD ) /firmware.dfu
592
- $(ECHO ) " Writing $( BUILD) /firmware.bin to the board via ST-LINK using OpenOCD"
593
- $(Q )$(OPENOCD ) -f $(OPENOCD_CONFIG ) -c " stm_flash $( BUILD) /firmware.bin $( TEXT0_ADDR) "
631
+ deploy-openocd : $(BUILD ) /firmware.bin
632
+ $(call RUN_OPENOCD,$^ ,$(TEXT0_ADDR ) )
594
633
595
- $(BUILD ) /firmware.dfu : $(BUILD ) /firmware.elf
596
- $(ECHO ) " Create $@ "
597
- $(Q )$(OBJCOPY ) -O binary $(addprefix -j ,$(TEXT0_SECTIONS ) ) $^ $(BUILD ) /firmware.bin
598
- $(Q )$(PYTHON ) $(DFU ) -D $(BOOTLOADER_DFU_USB_VID ) :$(BOOTLOADER_DFU_USB_PID ) -b $(TEXT0_ADDR ) :$(BUILD ) /firmware.bin $@
634
+ $(BUILD ) /firmware.bin : $(BUILD ) /firmware.elf
635
+ $(call GENERATE_BIN,$@ ,$^ ,$(TEXT0_SECTIONS ) )
636
+
637
+ $(BUILD ) /firmware.dfu : $(BUILD ) /firmware.bin
638
+ $(call GENERATE_DFU,$@ ,$^ ,$(TEXT0_ADDR ) )
599
639
600
640
else
601
641
# TEXT0_ADDR and TEXT1_ADDR are specified so split firmware between these locations
602
642
603
643
TEXT0_SECTIONS ?= .isr_vector
604
644
TEXT1_SECTIONS ?= .text .data
605
645
606
- deploy-stlink : $(BUILD ) /firmware.dfu
607
- $(ECHO ) " Writing $( BUILD) /firmware0.bin to the board via ST-LINK"
608
- $(Q )$(STFLASH ) write $(BUILD ) /firmware0.bin $(TEXT0_ADDR )
609
- $(ECHO ) " Writing $( BUILD) /firmware1.bin to the board via ST-LINK"
610
- $(Q )$(STFLASH ) --reset write $(BUILD ) /firmware1.bin $(TEXT1_ADDR )
646
+ deploy-stlink : $(BUILD ) /firmware0.bin $(BUILD ) /firmware1.bin
647
+ $(call RUN_STLINK,$(word 1,$^ ) ,$(TEXT0_ADDR ) )
648
+ $(call RUN_STLINK,$(word 2,$^ ) ,$(TEXT1_ADDR ) )
611
649
612
- deploy-openocd : $(BUILD ) /firmware.dfu
613
- $(ECHO ) " Writing $( BUILD) /firmware{0,1}.bin to the board via ST-LINK using OpenOCD"
614
- $(Q )$(OPENOCD ) -f $(OPENOCD_CONFIG ) -c " stm_flash $( BUILD) /firmware0.bin $( TEXT0_ADDR) $( BUILD) /firmware1.bin $( TEXT1_ADDR) "
650
+ deploy-openocd : $(BUILD ) /firmware0.bin $(BUILD ) /firmware1.bin
651
+ $(call RUN_OPENOCD,$(word 1,$^ ) ,$(TEXT0_ADDR ) ,$(word 2,$^ ) ,$(TEXT1_ADDR ) )
615
652
616
- $(BUILD ) /firmware.dfu : $(BUILD ) /firmware.elf
617
- $(ECHO ) " GEN $@ "
618
- $(Q )$(OBJCOPY ) -O binary $(addprefix -j ,$(TEXT0_SECTIONS ) ) $^ $(BUILD ) /firmware0.bin
619
- $(Q )$(OBJCOPY ) -O binary $(addprefix -j ,$(TEXT1_SECTIONS ) ) $^ $(BUILD ) /firmware1.bin
620
- $(Q )$(PYTHON ) $(DFU ) -D $(BOOTLOADER_DFU_USB_VID ) :$(BOOTLOADER_DFU_USB_PID ) -b $(TEXT0_ADDR ) :$(BUILD ) /firmware0.bin -b $(TEXT1_ADDR ) :$(BUILD ) /firmware1.bin $@
653
+ $(BUILD ) /firmware0.bin : $(BUILD ) /firmware.elf
654
+ $(call GENERATE_BIN,$@ ,$^ ,$(TEXT0_SECTIONS ) )
621
655
656
+ $(BUILD ) /firmware1.bin : $(BUILD ) /firmware.elf
657
+ $(call GENERATE_BIN,$@ ,$^ ,$(TEXT1_SECTIONS ) )
658
+
659
+ $(BUILD ) /firmware.dfu : $(BUILD ) /firmware0.bin $(BUILD ) /firmware1.bin
660
+ $(call GENERATE_DFU,$@ ,$(word 1,$^ ) ,$(TEXT0_ADDR ) ,$(word 2,$^ ) ,$(TEXT1_ADDR ) )
622
661
endif
623
662
624
663
$(BUILD ) /firmware.hex : $(BUILD ) /firmware.elf
625
- $(ECHO ) " GEN $@ "
626
- $(Q )$(OBJCOPY ) -O ihex $< $@
664
+ $(call GENERATE_HEX,$@ ,$^ )
627
665
628
666
$(BUILD ) /firmware.elf : $(OBJ )
629
- $(ECHO ) " LINK $@ "
630
- $(Q )$(LD ) $(LDFLAGS ) -o $@ $^ $(LDFLAGS_MOD ) $(LIBS )
631
- $(Q )$(SIZE ) $@
632
- ifneq ($(TEXT0_ADDR ) ,0x08000000)
633
- $(ECHO) "INFO: this build requires mboot to be installed first"
634
- endif
635
- ifeq ($(TEXT1_ADDR ) ,0x90000000)
636
- $(ECHO) "INFO: this build places firmware in external QSPI flash"
637
- endif
667
+ $(call GENERATE_ELF,$@ ,$^ )
638
668
639
669
PLLVALUES = boards/pllvalues.py
640
670
MAKE_PINS = boards/make-pins.py
0 commit comments