Преглед изворни кода

Merge pull request #606 from hathach/upload-binary-artifacts

Upload binary artifacts
Ha Thach пре 5 година
родитељ
комит
40870f9037
65 измењених фајлова са 174 додато и 95 уклоњено
  1. 15 1
      .github/workflows/build.yml
  2. 2 1
      examples/device/audio_test/CMakeLists.txt
  3. 1 0
      examples/device/board_test/CMakeLists.txt
  4. 1 0
      examples/device/cdc_dual_ports/CMakeLists.txt
  5. 1 0
      examples/device/cdc_msc/CMakeLists.txt
  6. 7 7
      examples/device/cdc_msc_freertos/CMakeLists.txt
  7. 1 0
      examples/device/dfu_rt/CMakeLists.txt
  8. 1 0
      examples/device/dynamic_configuration/CMakeLists.txt
  9. 1 0
      examples/device/hid_composite/CMakeLists.txt
  10. 7 7
      examples/device/hid_composite_freertos/CMakeLists.txt
  11. 1 0
      examples/device/hid_generic_inout/CMakeLists.txt
  12. 1 0
      examples/device/hid_multiple_interface/CMakeLists.txt
  13. 1 0
      examples/device/midi_test/CMakeLists.txt
  14. 1 0
      examples/device/msc_dual_lun/CMakeLists.txt
  15. 1 0
      examples/device/net_lwip_webserver/CMakeLists.txt
  16. 1 0
      examples/device/uac2_headset/CMakeLists.txt
  17. 1 0
      examples/device/usbtmc/CMakeLists.txt
  18. 1 0
      examples/device/webusb_serial/CMakeLists.txt
  19. 12 1
      examples/make.mk
  20. 45 16
      examples/rules.mk
  21. 2 2
      hw/bsp/da14695_dk_usb/board.mk
  22. 2 2
      hw/bsp/da1469x_dk_pro/board.mk
  23. 1 1
      hw/bsp/double_m33_express/board.mk
  24. 2 2
      hw/bsp/fomu/board.mk
  25. 1 1
      hw/bsp/imxrt/boards/teensy_40/board.mk
  26. 2 0
      hw/bsp/imxrt/family.mk
  27. 1 1
      hw/bsp/lpcxpresso11u37/board.mk
  28. 1 1
      hw/bsp/lpcxpresso11u68/board.mk
  29. 1 1
      hw/bsp/lpcxpresso51u68/board.mk
  30. 1 1
      hw/bsp/lpcxpresso54114/board.mk
  31. 1 1
      hw/bsp/lpcxpresso55s69/board.mk
  32. 1 1
      hw/bsp/mbed1768/board.mk
  33. 2 2
      hw/bsp/msp_exp430f5529lp/board.mk
  34. 2 2
      hw/bsp/nrf/boards/adafruit_clue/board.mk
  35. 1 1
      hw/bsp/nrf/boards/arduino_nano33_ble/board.mk
  36. 2 2
      hw/bsp/nrf/boards/circuitplayground_bluefruit/board.mk
  37. 2 2
      hw/bsp/nrf/boards/feather_nrf52840_express/board.mk
  38. 2 2
      hw/bsp/nrf/boards/feather_nrf52840_sense/board.mk
  39. 2 2
      hw/bsp/nrf/boards/itsybitsy_nrf52840/board.mk
  40. 2 2
      hw/bsp/nrf/boards/nrf52840_mdk_dongle/board.mk
  41. 2 2
      hw/bsp/nrf/boards/pca10059/board.mk
  42. 2 3
      hw/bsp/nrf/family.mk
  43. 1 1
      hw/bsp/nutiny_nuc121s/board.mk
  44. 1 1
      hw/bsp/nutiny_nuc125s/board.mk
  45. 1 1
      hw/bsp/nutiny_nuc126v/board.mk
  46. 1 1
      hw/bsp/nutiny_sdk_nuc120/board.mk
  47. 1 1
      hw/bsp/nutiny_sdk_nuc505/board.mk
  48. 1 1
      hw/bsp/samd11_xplained/board.mk
  49. 1 1
      hw/bsp/samd21/boards/luna/board.mk
  50. 3 1
      hw/bsp/samd21/family.mk
  51. 3 1
      hw/bsp/samd51/family.mk
  52. 1 1
      hw/bsp/same70_xplained/board.mk
  53. 1 1
      hw/bsp/samg55xplained/board.mk
  54. 4 4
      hw/bsp/spresense/board.mk
  55. 1 1
      hw/bsp/stm32f103bluepill/board.mk
  56. 1 1
      hw/bsp/stm32f4/boards/feather_stm32f405/board.mk
  57. 1 1
      hw/bsp/stm32f4/boards/stm32f401blackpill/board.mk
  58. 1 1
      hw/bsp/stm32f4/boards/stm32f411blackpill/board.mk
  59. 2 0
      hw/bsp/stm32f4/family.mk
  60. 2 0
      hw/bsp/stm32f7/family.mk
  61. 1 1
      hw/bsp/stm32l0538disco/board.mk
  62. 1 1
      hw/bsp/stm32l476disco/board.mk
  63. 2 2
      tools/build_board.py
  64. 2 2
      tools/build_esp32s2.py
  65. 4 3
      tools/build_family.py

+ 15 - 1
.github/workflows/build.yml

@@ -1,6 +1,12 @@
 name: Build
 
-on: [pull_request, push, repository_dispatch]
+on:
+  pull_request:
+  push:
+  repository_dispatch:
+  release:
+    types:
+      - created
 
 jobs:
   # Unit testing with Ceedling
@@ -27,6 +33,7 @@ jobs:
       fail-fast: false
       matrix:
         family:
+        # Alphabetical order
         - 'imxrt'
         - 'nrf'
         - 'rp2040'
@@ -62,6 +69,11 @@ jobs:
     - name: Build
       run: python3 tools/build_family.py ${{ matrix.family }}
 
+    - uses: actions/upload-artifact@v2
+      with:
+        name: ${{ matrix.family }}-tinyusb-examples
+        path: _bin/
+
   # Build all no-family (opharned) boards
   build-board:
     runs-on: ubuntu-latest
@@ -69,6 +81,7 @@ jobs:
       fail-fast: false
       matrix:
         example:
+        # Alphabetical order
         - 'device/audio_test'
         - 'device/board_test'
         - 'device/cdc_dual_ports'
@@ -145,6 +158,7 @@ jobs:
       fail-fast: false
       matrix:
         board:
+        # Alphabetical order
         - 'espressif_kaluga_1'
         - 'espressif_saola_1'
 

+ 2 - 1
examples/device/audio_test/CMakeLists.txt

@@ -1,5 +1,6 @@
-# use directory name for project id
+# use BOARD-Directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 1 - 0
examples/device/board_test/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 1 - 0
examples/device/cdc_dual_ports/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 1 - 0
examples/device/cdc_msc/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 7 - 7
examples/device/cdc_msc_freertos/CMakeLists.txt

@@ -1,18 +1,18 @@
 cmake_minimum_required(VERSION 3.5)
 
-# use directory name for project id
+# use BOARD-Directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")
 get_filename_component(TOP "${TOP}" REALPATH)
 
 # Check for -DFAMILY=
-if(NOT DEFINED FAMILY)
+if(FAMILY STREQUAL "esp32s2")
+  include(${TOP}/hw/bsp/${FAMILY}/family.cmake)
+  project(${PROJECT})
+
+else()
   message(FATAL_ERROR "Invalid FAMILY specified")
 endif()
-
-include(${TOP}/hw/bsp/${FAMILY}/family.cmake)
-project(${PROJECT})
-
-project(cdc_msc_freertos)

+ 1 - 0
examples/device/dfu_rt/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 1 - 0
examples/device/dynamic_configuration/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 1 - 0
examples/device/hid_composite/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 7 - 7
examples/device/hid_composite_freertos/CMakeLists.txt

@@ -1,18 +1,18 @@
 cmake_minimum_required(VERSION 3.5)
 
-# use directory name for project id
+# use BOARD-Directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")
 get_filename_component(TOP "${TOP}" REALPATH)
 
 # Check for -DFAMILY=
-if(NOT DEFINED FAMILY)
+if(FAMILY STREQUAL "esp32s2")
+  include(${TOP}/hw/bsp/${FAMILY}/family.cmake)
+  project(${PROJECT})
+
+else()
   message(FATAL_ERROR "Invalid FAMILY specified")
 endif()
-
-include(${TOP}/hw/bsp/${FAMILY}/family.cmake)
-project(${PROJECT})
-
-project(hid_composite_freertos)

+ 1 - 0
examples/device/hid_generic_inout/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 1 - 0
examples/device/hid_multiple_interface/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 1 - 0
examples/device/midi_test/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 1 - 0
examples/device/msc_dual_lun/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 1 - 0
examples/device/net_lwip_webserver/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 1 - 0
examples/device/uac2_headset/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 1 - 0
examples/device/usbtmc/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 1 - 0
examples/device/webusb_serial/CMakeLists.txt

@@ -1,5 +1,6 @@
 # use directory name for project id
 get_filename_component(PROJECT ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+set(PROJECT ${BOARD}-${PROJECT})
 
 # TOP is absolute path to root directory of TinyUSB git repo
 set(TOP "../../..")

+ 12 - 1
examples/make.mk

@@ -3,7 +3,10 @@
 # ---------------------------------------
 
 # Build directory
-BUILD = _build/build-$(BOARD)
+BUILD := _build/$(BOARD)
+
+PROJECT := $(BOARD)-$(notdir $(CURDIR))
+BIN := $(TOP)/_bin/$(BOARD)/$(notdir $(CURDIR))
 
 # Handy check parameter function
 check_defined = \
@@ -13,6 +16,12 @@ __check_defined = \
     $(if $(value $1),, \
     $(error Undefined make flag: $1$(if $2, ($2))))
     
+# TODO Check if submodule haven't checkout yet
+fetch_submodule_if_empty = \
+  ifeq ($(wildcard $(TOP)/$1/*),) \
+    $(info $(shell git -C $(TOP) submodule update --init)) \
+  endif
+
 #-------------- Select the board to build for. ------------
 #BOARD_LIST = $(sort $(subst /.,,$(subst $(TOP)/hw/bsp/,,$(wildcard $(TOP)/hw/bsp/*/.))))
 #ifeq ($(filter $(BOARD),$(BOARD_LIST)),)
@@ -45,6 +54,8 @@ else
   SRC_C += $(subst $(TOP)/,,$(wildcard $(TOP)/$(FAMILY_PATH)/*.c))
 endif
 
+#TODO $(call fetch_submodule_if_empty,lib/sct_neopixel)
+
 #-------------- Cross Compiler  ------------
 # Can be set by board, default to ARM GCC
 CROSS_COMPILE ?= arm-none-eabi-

+ 45 - 16
examples/rules.mk

@@ -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)
+

+ 2 - 2
hw/bsp/da14695_dk_usb/board.mk

@@ -42,10 +42,10 @@ JLINK_DEVICE = DA14695
 # flash using jlink but with some twists
 flash: flash-dialog
 
-flash-dialog: $(BUILD)/$(BOARD)-firmware.bin
+flash-dialog: $(BUILD)/$(PROJECT).bin
 	@echo '#define SW_VERSION "v_1.0.0.1"' >$(BUILD)/version.h
 	@echo '#define SW_VERSION_DATE "'`date +"%Y-%m-%d %H:%M"`'"' >>$(BUILD)/version.h
-	mkimage da1469x $(BUILD)/$(BOARD)-firmware.bin $(BUILD)/version.h $^.img
+	mkimage da1469x $(BUILD)/$(PROJECT).bin $(BUILD)/version.h $^.img
 	cp $(TOP)/hw/bsp/$(BOARD)/product_header.dump $(BUILD)/$(BOARD)-image.bin
 	cat $^.img >> $(BUILD)/$(BOARD)-image.bin
 	@echo r > $(BUILD)/$(BOARD).jlink

+ 2 - 2
hw/bsp/da1469x_dk_pro/board.mk

@@ -42,10 +42,10 @@ JLINK_DEVICE = DA14699
 # flash using jlink but with some twists
 flash: flash-dialog
 
-flash-dialog: $(BUILD)/$(BOARD)-firmware.bin
+flash-dialog: $(BUILD)/$(PROJECT).bin
 	@echo '#define SW_VERSION "v_1.0.0.1"' >$(BUILD)/version.h
 	@echo '#define SW_VERSION_DATE "'`date +"%Y-%m-%d %H:%M"`'"' >>$(BUILD)/version.h
-	mkimage da1469x $(BUILD)/$(BOARD)-firmware.bin $(BUILD)/version.h $^.img
+	mkimage da1469x $(BUILD)/$(PROJECT).bin $(BUILD)/version.h $^.img
 	cp $(TOP)/hw/bsp/$(BOARD)/product_header.dump $(BUILD)/$(BOARD)-image.bin
 	cat $^.img >> $(BUILD)/$(BOARD)-image.bin
 	@echo r > $(BUILD)/$(BOARD).jlink

+ 1 - 1
hw/bsp/double_m33_express/board.mk

@@ -51,5 +51,5 @@ FREERTOS_PORT = ARM_CM33_NTZ/non_secure
 JLINK_DEVICE = LPC55S69
 
 # flash using pyocd
-flash: $(BUILD)/$(BOARD)-firmware.hex
+flash: $(BUILD)/$(PROJECT).hex
 	pyocd flash -t LPC55S69 $<

+ 2 - 2
hw/bsp/fomu/board.mk

@@ -27,9 +27,9 @@ CHIP_FAMILY = eptri
 FREERTOS_PORT = RISC-V
 
 # flash using dfu-util
-$(BUILD)/$(BOARD)-firmware.dfu: $(BUILD)/$(BOARD)-firmware.bin
+$(BUILD)/$(PROJECT).dfu: $(BUILD)/$(PROJECT).bin
 	@echo "Create $@"
 	python $(TOP)/hw/bsp/$(BOARD)/dfu.py -b $^ -D 0x1209:0x5bf0 $@
 	
-flash: $(BUILD)/$(BOARD)-firmware.dfu
+flash: $(BUILD)/$(PROJECT).dfu
 	dfu-util -D $^

+ 1 - 1
hw/bsp/imxrt/boards/teensy_40/board.mk

@@ -6,5 +6,5 @@ JLINK_DEVICE = MIMXRT1062xxx6A
 
 # flash by using teensy_loader_cli https://github.com/PaulStoffregen/teensy_loader_cli
 # Make sure it is in your PATH 
-flash: $(BUILD)/$(BOARD)-firmware.hex
+flash: $(BUILD)/$(PROJECT).hex
 	teensy_loader_cli --mcu=imxrt1062 -v -w $<

+ 2 - 0
hw/bsp/imxrt/family.mk

@@ -1,3 +1,5 @@
+UF2_FAMILY_ID = 0x4fb2d5bd
+
 include $(TOP)/$(BOARD_PATH)/board.mk
 
 CFLAGS += \

+ 1 - 1
hw/bsp/lpcxpresso11u37/board.mk

@@ -42,5 +42,5 @@ FREERTOS_PORT = ARM_CM0
 JLINK_DEVICE = LPC11U37/401
 
 # flash using pyocd 
-flash: $(BUILD)/$(BOARD)-firmware.hex
+flash: $(BUILD)/$(PROJECT).hex
 	pyocd flash -t lpc11u37 $<

+ 1 - 1
hw/bsp/lpcxpresso11u68/board.mk

@@ -39,5 +39,5 @@ FREERTOS_PORT = ARM_CM0
 JLINK_DEVICE = LPC11U68
 
 # flash using pyocd 
-flash: $(BUILD)/$(BOARD)-firmware.hex
+flash: $(BUILD)/$(PROJECT).hex
 	pyocd flash -t lpc11u68 $<

+ 1 - 1
hw/bsp/lpcxpresso51u68/board.mk

@@ -43,5 +43,5 @@ FREERTOS_PORT = ARM_CM0
 JLINK_DEVICE = LPC51U68
 
 # flash using pyocd (51u68 is not supported yet)
-flash: $(BUILD)/$(BOARD)-firmware.hex
+flash: $(BUILD)/$(PROJECT).hex
 	pyocd flash -t LPC51U68 $<

+ 1 - 1
hw/bsp/lpcxpresso54114/board.mk

@@ -45,5 +45,5 @@ FREERTOS_PORT = ARM_CM4F
 JLINK_DEVICE = LPC54114J256_M4
 
 # flash using pyocd
-flash: $(BUILD)/$(BOARD)-firmware.hex
+flash: $(BUILD)/$(PROJECT).hex
 	pyocd flash -t LPC54114 $<

+ 1 - 1
hw/bsp/lpcxpresso55s69/board.mk

@@ -45,5 +45,5 @@ FREERTOS_PORT = ARM_CM33_NTZ/non_secure
 JLINK_DEVICE = LPC55S69
 
 # flash using pyocd
-flash: $(BUILD)/$(BOARD)-firmware.hex
+flash: $(BUILD)/$(PROJECT).hex
 	pyocd flash -t LPC55S69 $<

+ 1 - 1
hw/bsp/mbed1768/board.mk

@@ -41,6 +41,6 @@ FREERTOS_PORT = ARM_CM3
 JLINK_DEVICE = LPC1768
 
 # flash using pyocd 
-flash: $(BUILD)/$(BOARD)-firmware.hex
+flash: $(BUILD)/$(PROJECT).hex
 	pyocd flash -t lpc1768 $<
 

+ 2 - 2
hw/bsp/msp_exp430f5529lp/board.mk

@@ -28,9 +28,9 @@ endif
 # flash target using TI MSP430-Flasher
 # http://www.ti.com/tool/MSP430-FLASHER
 # Please add its installation dir to PATH
-flash: $(BUILD)/$(BOARD)-firmware.hex
+flash: $(BUILD)/$(PROJECT).hex
 	MSP430Flasher -w $< -z [VCC]
 
 # flash target using mspdebug.
-flash-mspdebug: $(BUILD)/$(BOARD)-firmware.elf
+flash-mspdebug: $(BUILD)/$(PROJECT).elf
 	$(MSPDEBUG) tilib "prog $<" --allow-fw-update

+ 2 - 2
hw/bsp/nrf/boards/adafruit_clue/board.mk

@@ -1,10 +1,10 @@
 MCU_VARIANT = nrf52840
 CFLAGS += -DNRF52840_XXAA
 
-$(BUILD)/$(BOARD)-firmware.zip: $(BUILD)/$(BOARD)-firmware.hex
+$(BUILD)/$(PROJECT).zip: $(BUILD)/$(PROJECT).hex
 	adafruit-nrfutil dfu genpkg --dev-type 0x0052 --sd-req 0xFFFE --application $^ $@
 
 # flash using adafruit-nrfutil dfu
-flash: $(BUILD)/$(BOARD)-firmware.zip
+flash: $(BUILD)/$(PROJECT).zip
 	@:$(call check_defined, SERIAL, example: SERIAL=/dev/ttyACM0)
 	adafruit-nrfutil --verbose dfu serial --package $^ -p $(SERIAL) -b 115200 --singlebank --touch 1200

+ 1 - 1
hw/bsp/nrf/boards/arduino_nano33_ble/board.mk

@@ -8,6 +8,6 @@ LD_FILE = $(BOARD_PATH)/$(BOARD).ld
 # Add it to your PATH or change BOSSAC variable to match your installation
 BOSSAC = bossac
 
-flash: $(BUILD)/$(BOARD)-firmware.bin
+flash: $(BUILD)/$(PROJECT).bin
 	@:$(call check_defined, SERIAL, example: SERIAL=/dev/ttyACM0)
 	$(BOSSAC) --port=$(SERIAL) -U -i -e -w $^ -R

+ 2 - 2
hw/bsp/nrf/boards/circuitplayground_bluefruit/board.mk

@@ -1,10 +1,10 @@
 MCU_VARIANT = nrf52840
 CFLAGS += -DNRF52840_XXAA
 
-$(BUILD)/$(BOARD)-firmware.zip: $(BUILD)/$(BOARD)-firmware.hex
+$(BUILD)/$(PROJECT).zip: $(BUILD)/$(PROJECT).hex
 	adafruit-nrfutil dfu genpkg --dev-type 0x0052 --sd-req 0xFFFE --application $^ $@
 
 # flash using adafruit-nrfutil dfu
-flash: $(BUILD)/$(BOARD)-firmware.zip
+flash: $(BUILD)/$(PROJECT).zip
 	@:$(call check_defined, SERIAL, example: SERIAL=/dev/ttyACM0)
 	adafruit-nrfutil --verbose dfu serial --package $^ -p $(SERIAL) -b 115200 --singlebank --touch 1200

+ 2 - 2
hw/bsp/nrf/boards/feather_nrf52840_express/board.mk

@@ -1,10 +1,10 @@
 MCU_VARIANT = nrf52840
 CFLAGS += -DNRF52840_XXAA
 
-$(BUILD)/$(BOARD)-firmware.zip: $(BUILD)/$(BOARD)-firmware.hex
+$(BUILD)/$(PROJECT).zip: $(BUILD)/$(PROJECT).hex
 	adafruit-nrfutil dfu genpkg --dev-type 0x0052 --sd-req 0xFFFE --application $^ $@
 
 # flash using adafruit-nrfutil dfu
-flash: $(BUILD)/$(BOARD)-firmware.zip
+flash: $(BUILD)/$(PROJECT).zip
 	@:$(call check_defined, SERIAL, example: SERIAL=/dev/ttyACM0)
 	adafruit-nrfutil --verbose dfu serial --package $^ -p $(SERIAL) -b 115200 --singlebank --touch 1200

+ 2 - 2
hw/bsp/nrf/boards/feather_nrf52840_sense/board.mk

@@ -1,10 +1,10 @@
 MCU_VARIANT = nrf52840
 CFLAGS += -DNRF52840_XXAA
 
-$(BUILD)/$(BOARD)-firmware.zip: $(BUILD)/$(BOARD)-firmware.hex
+$(BUILD)/$(PROJECT).zip: $(BUILD)/$(PROJECT).hex
 	adafruit-nrfutil dfu genpkg --dev-type 0x0052 --sd-req 0xFFFE --application $^ $@
 
 # flash using adafruit-nrfutil dfu
-flash: $(BUILD)/$(BOARD)-firmware.zip
+flash: $(BUILD)/$(PROJECT).zip
 	@:$(call check_defined, SERIAL, example: SERIAL=/dev/ttyACM0)
 	adafruit-nrfutil --verbose dfu serial --package $^ -p $(SERIAL) -b 115200 --singlebank --touch 1200

+ 2 - 2
hw/bsp/nrf/boards/itsybitsy_nrf52840/board.mk

@@ -1,10 +1,10 @@
 MCU_VARIANT = nrf52840
 CFLAGS += -DNRF52840_XXAA
 
-$(BUILD)/$(BOARD)-firmware.zip: $(BUILD)/$(BOARD)-firmware.hex
+$(BUILD)/$(PROJECT).zip: $(BUILD)/$(PROJECT).hex
 	adafruit-nrfutil dfu genpkg --dev-type 0x0052 --sd-req 0xFFFE --application $^ $@
 
 # flash using adafruit-nrfutil dfu
-flash: $(BUILD)/$(BOARD)-firmware.zip
+flash: $(BUILD)/$(PROJECT).zip
 	@:$(call check_defined, SERIAL, example: SERIAL=/dev/ttyACM0)
 	adafruit-nrfutil --verbose dfu serial --package $^ -p $(SERIAL) -b 115200 --singlebank --touch 1200

+ 2 - 2
hw/bsp/nrf/boards/nrf52840_mdk_dongle/board.mk

@@ -7,9 +7,9 @@ LD_FILE = $(BOARD_PATH)/$(BOARD).ld
 # 	make BOARD=nrf52840_mdk_dongle SERIAL=/dev/ttyACM0 all flash
 NRFUTIL = nrfutil
 
-$(BUILD)/$(BOARD)-firmware.zip: $(BUILD)/$(BOARD)-firmware.hex
+$(BUILD)/$(PROJECT).zip: $(BUILD)/$(PROJECT).hex
 	$(NRFUTIL) pkg generate --hw-version 52 --sd-req 0x0000 --debug-mode --application $^ $@
 
-flash: $(BUILD)/$(BOARD)-firmware.zip
+flash: $(BUILD)/$(PROJECT).zip
 	@:$(call check_defined, SERIAL, example: SERIAL=/dev/ttyACM0)
 	$(NRFUTIL) dfu usb-serial --package $^ -p $(SERIAL) -b 115200

+ 2 - 2
hw/bsp/nrf/boards/pca10059/board.mk

@@ -7,9 +7,9 @@ LD_FILE = $(BOARD_PATH)/$(BOARD).ld
 # 	make BOARD=pca10059 SERIAL=/dev/ttyACM0 all flash
 NRFUTIL = nrfutil
 
-$(BUILD)/$(BOARD)-firmware.zip: $(BUILD)/$(BOARD)-firmware.hex
+$(BUILD)/$(PROJECT).zip: $(BUILD)/$(PROJECT).hex
 	$(NRFUTIL) pkg generate --hw-version 52 --sd-req 0x0000 --debug-mode --application $^ $@
 
-flash: $(BUILD)/$(BOARD)-firmware.zip
+flash: $(BUILD)/$(PROJECT).zip
 	@:$(call check_defined, SERIAL, example: SERIAL=/dev/ttyACM0)
 	$(NRFUTIL) dfu usb-serial --package $^ -p $(SERIAL) -b 115200

+ 2 - 3
hw/bsp/nrf/family.mk

@@ -1,3 +1,5 @@
+UF2_FAMILY_ID = 0xADA52840
+
 include $(TOP)/$(BOARD_PATH)/board.mk
 
 CFLAGS += \
@@ -58,6 +60,3 @@ FREERTOS_PORT = ARM_CM4F
 
 # For flash-jlink target
 JLINK_DEVICE = $(MCU_VARIANT)_xxaa
-
-# For uf2 conversion
-UF2_FAMILY = 0xADA52840

+ 1 - 1
hw/bsp/nutiny_nuc121s/board.mk

@@ -52,5 +52,5 @@ JLINK_DEVICE = NUC121SC2AE
 
 # Flash using Nuvoton's openocd fork at https://github.com/OpenNuvoton/OpenOCD-Nuvoton
 # Please compile and install it from github source
-flash: $(BUILD)/$(BOARD)-firmware.elf
+flash: $(BUILD)/$(PROJECT).elf
 	openocd -f interface/nulink.cfg -f target/numicroM0.cfg -c "program $< reset exit"

+ 1 - 1
hw/bsp/nutiny_nuc125s/board.mk

@@ -36,5 +36,5 @@ JLINK_DEVICE = NUC125SC2AE
 
 # Flash using Nuvoton's openocd fork at https://github.com/OpenNuvoton/OpenOCD-Nuvoton
 # Please compile and install it from github source
-flash: $(BUILD)/$(BOARD)-firmware.elf
+flash: $(BUILD)/$(PROJECT).elf
 	openocd -f interface/nulink.cfg -f target/numicroM0.cfg -c "program $< reset exit"

+ 1 - 1
hw/bsp/nutiny_nuc126v/board.mk

@@ -56,5 +56,5 @@ JLINK_DEVICE = NUC126VG4AE
 
 # Flash using Nuvoton's openocd fork at https://github.com/OpenNuvoton/OpenOCD-Nuvoton
 # Please compile and install it from github source
-flash: $(BUILD)/$(BOARD)-firmware.elf
+flash: $(BUILD)/$(PROJECT).elf
 	openocd -f interface/nulink.cfg -f target/numicroM0.cfg -c "program $< reset exit"

+ 1 - 1
hw/bsp/nutiny_sdk_nuc120/board.mk

@@ -52,5 +52,5 @@ JLINK_DEVICE = NUC120LE3
 
 # Flash using Nuvoton's openocd fork at https://github.com/OpenNuvoton/OpenOCD-Nuvoton
 # Please compile and install it from github source
-flash: $(BUILD)/$(BOARD)-firmware.elf
+flash: $(BUILD)/$(PROJECT).elf
 	openocd -f interface/nulink.cfg -f target/numicroM0.cfg -c "program $< reset exit"

+ 1 - 1
hw/bsp/nutiny_sdk_nuc505/board.mk

@@ -57,5 +57,5 @@ JLINK_DEVICE = NUC505YO13Y
 
 # Flash using Nuvoton's openocd fork at https://github.com/OpenNuvoton/OpenOCD-Nuvoton
 # Please compile and install it from github source
-flash: $(BUILD)/$(BOARD)-firmware.elf
+flash: $(BUILD)/$(PROJECT).elf
 	openocd -f interface/nulink.cfg -f target/numicroM4.cfg -c "program $< reset exit"

+ 1 - 1
hw/bsp/samd11_xplained/board.mk

@@ -42,5 +42,5 @@ FREERTOS_PORT = ARM_CM0
 JLINK_DEVICE = ATSAMD11D14
 
 # flash using edbg
-flash: $(BUILD)/$(BOARD)-firmware.bin
+flash: $(BUILD)/$(PROJECT).bin
 	edbg -b -t samd11 -e -pv -f $<

+ 1 - 1
hw/bsp/samd21/boards/luna/board.mk

@@ -6,6 +6,6 @@ LD_FILE = $(BOARD_PATH)/samd21g18a_flash.ld
 JLINK_DEVICE = ATSAMD21G18
 
 # flash using dfu-util
-flash: $(BUILD)/$(BOARD)-firmware.bin
+flash: $(BUILD)/$(PROJECT).bin
 	dfu-util -a 0 -d 1d50:615c -D $< || dfu-util -a 0 -d 16d0:05a5 -D $<
 

+ 3 - 1
hw/bsp/samd21/family.mk

@@ -1,3 +1,5 @@
+UF2_FAMILY_ID = 0x68ed2b88
+
 include $(TOP)/$(BOARD_PATH)/board.mk
 
 CFLAGS += \
@@ -41,6 +43,6 @@ FREERTOS_PORT = ARM_CM0
 # Add it to your PATH or change BOSSAC variable to match your installation
 BOSSAC = bossac
 
-flash-bossac: $(BUILD)/$(BOARD)-firmware.bin
+flash-bossac: $(BUILD)/$(PROJECT).bin
 	@:$(call check_defined, SERIAL, example: SERIAL=/dev/ttyACM0)
 	$(BOSSAC) --port=$(SERIAL) -U -i --offset=0x2000 -e -w $^ -R

+ 3 - 1
hw/bsp/samd51/family.mk

@@ -1,3 +1,5 @@
+UF2_FAMILY_ID = 0x55114460
+
 include $(TOP)/$(BOARD_PATH)/board.mk
 
 CFLAGS += \
@@ -44,6 +46,6 @@ FREERTOS_PORT = ARM_CM4F
 # Add it to your PATH or change BOSSAC variable to match your installation
 BOSSAC = bossac
 
-flash-bossac: $(BUILD)/$(BOARD)-firmware.bin
+flash-bossac: $(BUILD)/$(PROJECT).bin
 	@:$(call check_defined, SERIAL, example: SERIAL=/dev/ttyACM0)
 	$(BOSSAC) --port=$(SERIAL) -U -i --offset=0x4000 -e -w $^ -R

+ 1 - 1
hw/bsp/same70_xplained/board.mk

@@ -54,5 +54,5 @@ JLINK_DEVICE = SAME70Q21B
 # flash using edbg from https://github.com/ataradov/edbg
 # Note: SAME70's GPNVM1 must be set to 1 to boot from flash with
 # 	edbg -t same70 -F w0,1,1
-flash: $(BUILD)/$(BOARD)-firmware.bin
+flash: $(BUILD)/$(PROJECT).bin
 	edbg --verbose -t same70 -pv -f $< 

+ 1 - 1
hw/bsp/samg55xplained/board.mk

@@ -49,5 +49,5 @@ FREERTOS_PORT = ARM_CM4F
 JLINK_DEVICE = ATSAMG55J19
 
 # flash using edbg from https://github.com/ataradov/edbg
-flash: $(BUILD)/$(BOARD)-firmware.bin
+flash: $(BUILD)/$(PROJECT).bin
 	edbg --verbose -t samg55 -pv -f $< 

+ 4 - 4
hw/bsp/spresense/board.mk

@@ -61,13 +61,13 @@ LDFLAGS += \
 VENDOR = sony
 CHIP_FAMILY = cxd56
 
-$(MKSPK): $(BUILD)/$(BOARD)-firmware.elf
+$(MKSPK): $(BUILD)/$(PROJECT).elf
 	$(MAKE) -C $(TOP)/hw/mcu/sony/cxd56/mkspk
 
-$(BUILD)/$(BOARD)-firmware.spk: $(MKSPK)
+$(BUILD)/$(PROJECT).spk: $(MKSPK)
 	@echo CREATE $@
-	@$(MKSPK) -c 2 $(BUILD)/$(BOARD)-firmware.elf nuttx $@
+	@$(MKSPK) -c 2 $(BUILD)/$(PROJECT).elf nuttx $@
 
 # flash
-flash: $(BUILD)/$(BOARD)-firmware.spk
+flash: $(BUILD)/$(PROJECT).spk
 	@$(TOP)/hw/mcu/sony/cxd56/tools/flash_writer.py -s -c $(SERIAL) -d -b 115200 -n $<

+ 1 - 1
hw/bsp/stm32f103bluepill/board.mk

@@ -46,5 +46,5 @@ FREERTOS_PORT = ARM_CM3
 JLINK_DEVICE = stm32f103c8
 
 # flash target ROM bootloader
-flash: $(BUILD)/$(BOARD)-firmware.bin
+flash: $(BUILD)/$(PROJECT).bin
 	dfu-util -R -a 0 --dfuse-address 0x08000000 -D $<

+ 1 - 1
hw/bsp/stm32f4/boards/feather_stm32f405/board.mk

@@ -8,5 +8,5 @@ SRC_S += $(ST_CMSIS)/Source/Templates/gcc/startup_stm32f405xx.s
 JLINK_DEVICE = stm32f405rg
 
 # flash target ROM bootloader
-flash: $(BUILD)/$(BOARD)-firmware.bin
+flash: $(BUILD)/$(PROJECT).bin
 	dfu-util -R -a 0 --dfuse-address 0x08000000 -D $<

+ 1 - 1
hw/bsp/stm32f4/boards/stm32f401blackpill/board.mk

@@ -8,5 +8,5 @@ SRC_S += $(ST_CMSIS)/Source/Templates/gcc/startup_stm32f401xc.s
 JLINK_DEVICE = stm32f401cc
 
 # flash target ROM bootloader
-flash: $(BUILD)/$(BOARD)-firmware.bin
+flash: $(BUILD)/$(PROJECT).bin
 	dfu-util -R -a 0 --dfuse-address 0x08000000 -D $<

+ 1 - 1
hw/bsp/stm32f4/boards/stm32f411blackpill/board.mk

@@ -8,5 +8,5 @@ SRC_S += $(ST_CMSIS)/Source/Templates/gcc/startup_stm32f411xe.s
 JLINK_DEVICE = stm32f411ce
 
 # flash target ROM bootloader
-flash: $(BUILD)/$(BOARD)-firmware.bin
+flash: $(BUILD)/$(PROJECT).bin
 	dfu-util -R -a 0 --dfuse-address 0x08000000 -D $<

+ 2 - 0
hw/bsp/stm32f4/family.mk

@@ -1,3 +1,5 @@
+UF2_FAMILY_ID = 0x57755a57
+
 include $(TOP)/$(BOARD_PATH)/board.mk
 
 CFLAGS += \

+ 2 - 0
hw/bsp/stm32f7/family.mk

@@ -1,3 +1,5 @@
+UF2_FAMILY_ID = 0x53b80f00
+
 include $(TOP)/$(BOARD_PATH)/board.mk
 
 CFLAGS += \

+ 1 - 1
hw/bsp/stm32l0538disco/board.mk

@@ -50,5 +50,5 @@ JLINK_DEVICE = STM32L053R8
 STM32Prog = STM32_Programmer_CLI
 
 # flash target using on-board stlink
-flash: $(BUILD)/$(BOARD)-firmware.elf
+flash: $(BUILD)/$(PROJECT).elf
 	$(STM32Prog) --connect port=swd --write $< --go

+ 1 - 1
hw/bsp/stm32l476disco/board.mk

@@ -53,5 +53,5 @@ JLINK_DEVICE = stm32l476vg
 STM32Prog = STM32_Programmer_CLI
 
 # flash target using on-board stlink
-flash: $(BUILD)/$(BOARD)-firmware.elf
+flash: $(BUILD)/$(PROJECT).elf
 	$(STM32Prog) --connect port=swd --write $< --go

+ 2 - 2
tools/build_board.py

@@ -74,8 +74,8 @@ def build_board(example, board):
             print(build_result.stdout.decode("utf-8"))
 
 def build_size(example, board):
-    #elf_file = 'examples/device/{}/_build/build-{}/{}-firmware.elf'.format(example, board, board)
-    elf_file = 'examples/{}/_build/build-{}/*.elf'.format(example, board)
+    #elf_file = 'examples/device/{}/_build/{}/{}-firmware.elf'.format(example, board, board)
+    elf_file = 'examples/{}/_build/{}/*.elf'.format(example, board)
     size_output = subprocess.run('size {}'.format(elf_file), shell=True, stdout=subprocess.PIPE).stdout.decode("utf-8")
     size_list = size_output.split('\n')[1].split('\t')
     flash_size = int(size_list[0])

+ 2 - 2
tools/build_esp32s2.py

@@ -72,8 +72,8 @@ def build_board(example, board):
             print(build_result.stdout.decode("utf-8"))
 
 def build_size(example, board):
-    #elf_file = 'examples/device/{}/_build/build-{}/{}-firmware.elf'.format(example, board, board)
-    elf_file = 'examples/device/{}/_build/build-{}/*.elf'.format(example, board)
+    #elf_file = 'examples/device/{}/_build/{}/{}-firmware.elf'.format(example, board, board)
+    elf_file = 'examples/device/{}/_build/{}/*.elf'.format(example, board)
     size_output = subprocess.run('size {}'.format(elf_file), shell=True, stdout=subprocess.PIPE).stdout.decode("utf-8")
     size_list = size_output.split('\n')[1].split('\t')
     flash_size = int(size_list[0])

+ 4 - 3
tools/build_family.py

@@ -66,13 +66,14 @@ def build_board(example, board):
         skip_count += 1
         print(build_format.format(example, board, success, '-', flash_size, sram_size))
     else:   
-        subprocess.run("make -C examples/{} BOARD={} clean".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+        #subprocess.run("make -C examples/{} BOARD={} clean".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
         build_result = subprocess.run("make -j -C examples/{} BOARD={} all".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
 
         if build_result.returncode == 0:
             success = SUCCEEDED
             success_count += 1
             (flash_size, sram_size) = build_size(example, board)
+            subprocess.run("make -j -C examples/{} BOARD={} copy-artifact".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
         else:
             exit_status = build_result.returncode
             success = FAILED
@@ -85,8 +86,8 @@ def build_board(example, board):
             print(build_result.stdout.decode("utf-8"))            
 
 def build_size(example, board):
-    #elf_file = 'examples/device/{}/_build/build-{}/{}-firmware.elf'.format(example, board, board)
-    elf_file = 'examples/{}/_build/build-{}/*.elf'.format(example, board)
+    #elf_file = 'examples/device/{}/_build/{}/{}-firmware.elf'.format(example, board, board)
+    elf_file = 'examples/{}/_build/{}/*.elf'.format(example, board)
     size_output = subprocess.run('size {}'.format(elf_file), shell=True, stdout=subprocess.PIPE).stdout.decode("utf-8")
     size_list = size_output.split('\n')[1].split('\t')
     flash_size = int(size_list[0])