diff options
| -rw-r--r-- | builddefs/common_rules.mk | 3 | ||||
| -rwxr-xr-x | util/uf2conv.py | 10 | 
2 files changed, 12 insertions, 1 deletions
| diff --git a/builddefs/common_rules.mk b/builddefs/common_rules.mk index e993cc350e..816eac49ae 100644 --- a/builddefs/common_rules.mk +++ b/builddefs/common_rules.mk @@ -152,6 +152,7 @@ endif  # To produce a UF2 file in your build, add to your keyboard's rules.mk:  #      FIRMWARE_FORMAT = uf2  UF2CONV = $(TOP_DIR)/util/uf2conv.py +UF2CONV_ARGS ?=  UF2_FAMILY ?= 0x0  # Compiler flags to generate dependency files. @@ -219,7 +220,7 @@ gccversion :  	@$(BUILD_CMD)  %.uf2: %.elf -	$(eval CMD=$(HEX) $< $(BUILD_DIR)/$(TARGET).tmp && $(UF2CONV) $(BUILD_DIR)/$(TARGET).tmp --output $@ --convert --family $(UF2_FAMILY) >/dev/null 2>&1) +	$(eval CMD=$(HEX) $< $(BUILD_DIR)/$(TARGET).tmp && $(UF2CONV) $(UF2CONV_ARGS) $(BUILD_DIR)/$(TARGET).tmp --output $@ --convert --family $(UF2_FAMILY) >/dev/null 2>&1)  	#@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"  	@$(SILENT) || printf "$(MSG_UF2) $@" | $(AWK_CMD)  	@$(BUILD_CMD) diff --git a/util/uf2conv.py b/util/uf2conv.py index 52d3861cba..578b2b4977 100755 --- a/util/uf2conv.py +++ b/util/uf2conv.py @@ -151,10 +151,15 @@ class Block:          flags = 0x0          if familyid:              flags |= 0x2000 +        if devicetype: +            flags |= 0x8000          hd = struct.pack("<IIIIIIII",              UF2_MAGIC_START0, UF2_MAGIC_START1,              flags, self.addr, 256, blockno, numblocks, familyid)          hd += self.bytes[0:256] +        if devicetype: +            hd += bytearray(b'\x08\x29\xa7\xc8') +            hd += bytearray(devicetype.to_bytes(4, 'little'))          while len(hd) < 512 - 4:              hd += b"\x00"          hd += struct.pack("<I", UF2_MAGIC_END) @@ -283,6 +288,8 @@ def main():      parser.add_argument('-f', '--family', dest='family', type=str,                          default="0x0",                          help='specify familyID - number or name (default: 0x0)') +    parser.add_argument('-t' , '--device-type', dest='devicetype', type=str, +                        help='specify deviceTypeID extension tag - number')      parser.add_argument('-o', '--output', metavar="FILE", dest='output', type=str,                          help='write output to named file; defaults to "flash.uf2" or "flash.bin" where sensible')      parser.add_argument('-d', '--device', dest="device_path", @@ -312,6 +319,9 @@ def main():          except ValueError:              error("Family ID needs to be a number or one of: " + ", ".join(families.keys())) +    global devicetype +    devicetype = int(args.devicetype, 0) if args.devicetype else None +      if args.list:          list_drives()      else: | 
