]> mj.ucw.cz Git - home-hw.git/commitdiff
Makefiles: Signing of DFU firmware and cleanups
authorMartin Mares <mj@ucw.cz>
Tue, 25 Feb 2020 16:42:14 +0000 (17:42 +0100)
committerMartin Mares <mj@ucw.cz>
Tue, 25 Feb 2020 16:42:14 +0000 (17:42 +0100)
mk/bluepill.mk

index a155801064511023b2115a6f6586c220b0efaf9c..829c79bd356b60cfb7e137701c5d24be422caee7 100644 (file)
@@ -19,7 +19,7 @@ OPENCM3_DIR=/home/mj/stm/libopencm3
 DEVICE=stm32f103x8
 
 .PHONY: all
-all: $(BINARY).elf $(BINARY).bin
+all:: $(BINARY).elf
 
 .PHONY: flash
 flash: $(BINARY).flash
@@ -83,10 +83,10 @@ LDLIBS              += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
 include $(OPENCM3_DIR)/mk/genlink-rules.mk
 
 %.bin: %.elf
-       @printf "  OBJCOPY $(*).bin\n"
-       $(Q)$(OBJCOPY) -Obinary $(*).elf $(*).bin
+       @printf "  OBJCOPY $< -> $@\n"
+       $(Q)$(OBJCOPY) -Obinary $< $@
 ifdef MAX_SIZE
-       $(Q)if [ $$(stat -c '%s' $(*).bin) -gt $(MAX_SIZE) ] ; then echo >&2 "Output too large!" ; false ; fi
+       $(Q)if [ $$(stat -c '%s' $@) -gt $(MAX_SIZE) ] ; then echo >&2 "Output too exceeds $(MAX_SIZE) bytes!" ; false ; fi
 endif
 
 %.elf: $(OBJS) $(UCW_LDSCRIPT)
@@ -100,20 +100,34 @@ endif
 .PHONY: clean
 clean:
        @printf "  CLEAN\n"
-       $(Q)rm -f *.elf *.bin *.o *.d *.map $(LDSCRIPT) $(UCW_LDSCRIPT)
+       $(Q)rm -f *.elf *.bin *.dfu *.o *.d *.map $(LDSCRIPT) $(UCW_LDSCRIPT)
 
 ifdef WITH_DFU_FLASH
 
-%.flash: %.bin
+all:: $(BINARY).dfu
+
+%.flash: %.dfu
        @printf "  FLASH  $<\n"
-       $(Q)dfu-util -D $(*).bin
+       $(Q)dfu-util -D $<
+
+%.dfu: %.bin $(ROOT)/tools/dfu-sign
+       @printf "  SIGN    $< -> $@\n"
+       $(Q)$(ROOT)/tools/dfu-sign $< $@
+
+$(ROOT)/tools/dfu-sign:
+       make -C $(ROOT)/tools
+
 # For the STM32duino-bootloader, we used:
+#%.flash: %.bin
+#      @printf "  FLASH  $<\n"
 #      $(Q)dfu-util -a2 -D $(*).bin
 
 else
 
 ifdef WITH_SERIAL_FLASH
 
+all:: $(BINARY).bin
+
 BOOT_SERIAL ?= /dev/ttyUSB0
 
 %.flash: %.bin
@@ -126,6 +140,8 @@ reset: all
 
 else
 
+all:: $(BINARY).bin
+
 %.flash: %.bin
        @printf "  FLASH  $<\n"
        $(Q)$(ROOT)/bin/st-flash write $(*).bin 0x8000000