|
|
@@ -2,11 +2,13 @@
|
|
|
# Common make rules for all examples
|
|
|
# ---------------------------------------
|
|
|
|
|
|
+# Set all as default goal
|
|
|
+.DEFAULT_GOAL := all
|
|
|
+
|
|
|
ifeq ($(FAMILY),esp32s2)
|
|
|
# Espressif IDF use CMake build system, this add wrapper target to call idf.py
|
|
|
|
|
|
.PHONY: all clean flash
|
|
|
-.DEFAULT_GOAL := all
|
|
|
|
|
|
all:
|
|
|
idf.py -B$(BUILD) -DFAMILY=$(FAMILY) -DBOARD=$(BOARD) build
|
|
|
@@ -34,6 +36,11 @@ erase:
|
|
|
monitor:
|
|
|
idf.py -B$(BUILD) -DFAMILY=$(FAMILY) -DBOARD=$(BOARD) monitor
|
|
|
|
|
|
+UF2_FAMILY_ID = 0xbfdd4eee
|
|
|
+$(BUILD)/$(PROJECT).uf2: $(BUILD)/$(PROJECT).hex
|
|
|
+ @echo CREATE $@
|
|
|
+ $(PYTHON) $(TOP)/tools/uf2/utils/uf2conv.py -f $(UF2_FAMILY_ID) -c -o $@ $^
|
|
|
+
|
|
|
else ifeq ($(FAMILY),rp2040)
|
|
|
|
|
|
all:
|
|
|
@@ -98,11 +105,9 @@ $(info LDFLAGS $(LDFLAGS)) $(info )
|
|
|
$(info ASFLAGS $(ASFLAGS)) $(info )
|
|
|
endif
|
|
|
|
|
|
-# Set all as default goal
|
|
|
-.DEFAULT_GOAL := all
|
|
|
-all: $(BUILD)/$(BOARD)-firmware.bin $(BUILD)/$(BOARD)-firmware.hex size
|
|
|
+all: $(BUILD)/$(PROJECT).bin $(BUILD)/$(PROJECT).hex size
|
|
|
|
|
|
-uf2: $(BUILD)/$(BOARD)-firmware.uf2
|
|
|
+uf2: $(BUILD)/$(PROJECT).uf2
|
|
|
|
|
|
OBJ_DIRS = $(sort $(dir $(OBJ)))
|
|
|
$(OBJ): | $(OBJ_DIRS)
|
|
|
@@ -113,22 +118,31 @@ else
|
|
|
@$(MKDIR) -p $@
|
|
|
endif
|
|
|
|
|
|
-$(BUILD)/$(BOARD)-firmware.elf: $(OBJ)
|
|
|
+$(BUILD)/$(PROJECT).elf: $(OBJ)
|
|
|
@echo LINK $@
|
|
|
@$(CC) -o $@ $(LDFLAGS) $^ -Wl,--start-group $(LIBS) -Wl,--end-group
|
|
|
|
|
|
-$(BUILD)/$(BOARD)-firmware.bin: $(BUILD)/$(BOARD)-firmware.elf
|
|
|
+$(BUILD)/$(PROJECT).bin: $(BUILD)/$(PROJECT).elf
|
|
|
@echo CREATE $@
|
|
|
@$(OBJCOPY) -O binary $^ $@
|
|
|
|
|
|
-$(BUILD)/$(BOARD)-firmware.hex: $(BUILD)/$(BOARD)-firmware.elf
|
|
|
+$(BUILD)/$(PROJECT).hex: $(BUILD)/$(PROJECT).elf
|
|
|
@echo CREATE $@
|
|
|
@$(OBJCOPY) -O ihex $^ $@
|
|
|
|
|
|
-UF2_FAMILY ?= 0x00
|
|
|
-$(BUILD)/$(BOARD)-firmware.uf2: $(BUILD)/$(BOARD)-firmware.hex
|
|
|
+# UF2 generation, iMXRT need to strip to text only before conversion
|
|
|
+ifeq ($(FAMILY),imxrt)
|
|
|
+$(BUILD)/$(PROJECT).uf2: $(BUILD)/$(PROJECT).elf
|
|
|
@echo CREATE $@
|
|
|
- $(PYTHON) $(TOP)/tools/uf2/utils/uf2conv.py -f $(UF2_FAMILY) -c -o $@ $^
|
|
|
+ @$(OBJCOPY) -O ihex -R .flash_config -R .ivt $^ $(BUILD)/$(PROJECT)-textonly.hex
|
|
|
+ $(PYTHON) $(TOP)/tools/uf2/utils/uf2conv.py -f $(UF2_FAMILY_ID) -c -o $@ $(BUILD)/$(PROJECT)-textonly.hex
|
|
|
+else
|
|
|
+$(BUILD)/$(PROJECT).uf2: $(BUILD)/$(PROJECT).hex
|
|
|
+ @echo CREATE $@
|
|
|
+ $(PYTHON) $(TOP)/tools/uf2/utils/uf2conv.py -f $(UF2_FAMILY_ID) -c -o $@ $^
|
|
|
+endif
|
|
|
+
|
|
|
+copy-artifact: $(BUILD)/$(PROJECT).bin $(BUILD)/$(PROJECT).hex $(BUILD)/$(PROJECT).uf2
|
|
|
|
|
|
# We set vpath to point to the top of the tree so that the source files
|
|
|
# can be located. By following this scheme, it allows a single build rule
|
|
|
@@ -150,7 +164,7 @@ $(BUILD)/obj/%.o: %.S
|
|
|
@echo AS $(notdir $@)
|
|
|
@$(CC) -x assembler-with-cpp $(ASFLAGS) -c -o $@ $<
|
|
|
|
|
|
-size: $(BUILD)/$(BOARD)-firmware.elf
|
|
|
+size: $(BUILD)/$(PROJECT).elf
|
|
|
-@echo ''
|
|
|
@$(SIZE) $<
|
|
|
-@echo ''
|
|
|
@@ -178,7 +192,7 @@ endif
|
|
|
JLINK_IF ?= swd
|
|
|
|
|
|
# Flash using jlink
|
|
|
-flash-jlink: $(BUILD)/$(BOARD)-firmware.hex
|
|
|
+flash-jlink: $(BUILD)/$(PROJECT).hex
|
|
|
@echo halt > $(BUILD)/$(BOARD).jlink
|
|
|
@echo r > $(BUILD)/$(BOARD).jlink
|
|
|
@echo loadfile $^ >> $(BUILD)/$(BOARD).jlink
|
|
|
@@ -188,12 +202,27 @@ flash-jlink: $(BUILD)/$(BOARD)-firmware.hex
|
|
|
$(JLINKEXE) -device $(JLINK_DEVICE) -if $(JLINK_IF) -JTAGConf -1,-1 -speed auto -CommandFile $(BUILD)/$(BOARD).jlink
|
|
|
|
|
|
# flash STM32 MCU using stlink with STM32 Cube Programmer CLI
|
|
|
-flash-stlink: $(BUILD)/$(BOARD)-firmware.elf
|
|
|
+flash-stlink: $(BUILD)/$(PROJECT).elf
|
|
|
STM32_Programmer_CLI --connect port=swd --write $< --go
|
|
|
|
|
|
# flash with pyocd
|
|
|
-flash-pyocd: $(BUILD)/$(BOARD)-firmware.hex
|
|
|
+flash-pyocd: $(BUILD)/$(PROJECT).hex
|
|
|
pyocd flash -t $(PYOCD_TARGET) $<
|
|
|
pyocd reset -t $(PYOCD_TARGET)
|
|
|
|
|
|
-endif # Make target
|
|
|
+endif # GNU Make
|
|
|
+
|
|
|
+#-------------- Artifacts --------------
|
|
|
+
|
|
|
+# Create binary directory
|
|
|
+$(BIN):
|
|
|
+ @$(MKDIR) -p $@
|
|
|
+
|
|
|
+# Copy binaries .elf, .bin, .hex, .uf2 to BIN for upload
|
|
|
+# due to large size of combined artifacts, only uf2 is uploaded for now
|
|
|
+copy-artifact: $(BIN)
|
|
|
+ @$(CP) $(BUILD)/$(PROJECT).uf2 $(BIN)
|
|
|
+ #@$(CP) $(BUILD)/$(PROJECT).bin $(BIN)
|
|
|
+ #@$(CP) $(BUILD)/$(PROJECT).hex $(BIN)
|
|
|
+ #@$(CP) $(BUILD)/$(PROJECT).elf $(BIN)
|
|
|
+
|