summary refs log tree commit diff
path: root/util
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2023-03-02 23:26:37 +0000
committerGitHub <noreply@github.com>2023-03-03 10:26:37 +1100
commitbe781927c15b5452546a9132d30c3baaf101cef5 (patch)
tree726849cae93f24d01f100bc0f7cecb329b634ba0 /util
parent0a7f15964c6f8e10f7c1125cc61d31fc485ec25c (diff)
Merge upstream changes to uf2conv (#19993)
Diffstat (limited to 'util')
-rwxr-xr-xutil/uf2conv.py44
-rw-r--r--util/uf2families.json19
2 files changed, 42 insertions, 21 deletions
diff --git a/util/uf2conv.py b/util/uf2conv.py
index 7f5645414a..52d3861cba 100755
--- a/util/uf2conv.py
+++ b/util/uf2conv.py
@@ -8,6 +8,7 @@ import os
 import os.path
 import argparse
 import json
+from time import sleep
 
 
 UF2_MAGIC_START0 = 0x0A324655 # "UF2\n"
@@ -276,23 +277,25 @@ def main():
     parser = argparse.ArgumentParser(description='Convert to UF2 or flash directly.')
     parser.add_argument('input', metavar='INPUT', type=str, nargs='?',
                         help='input file (HEX, BIN or UF2)')
-    parser.add_argument('-b' , '--base', dest='base', type=str,
+    parser.add_argument('-b', '--base', dest='base', type=str,
                         default="0x2000",
                         help='set base address of application for BIN format (default: 0x2000)')
-    parser.add_argument('-o' , '--output', metavar="FILE", dest='output', type=str,
+    parser.add_argument('-f', '--family', dest='family', type=str,
+                        default="0x0",
+                        help='specify familyID - number or name (default: 0x0)')
+    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",
+    parser.add_argument('-d', '--device', dest="device_path",
                         help='select a device path to flash')
-    parser.add_argument('-l' , '--list', action='store_true',
+    parser.add_argument('-l', '--list', action='store_true',
                         help='list connected devices')
-    parser.add_argument('-c' , '--convert', action='store_true',
+    parser.add_argument('-c', '--convert', action='store_true',
                         help='do not flash, just convert')
-    parser.add_argument('-D' , '--deploy', action='store_true',
+    parser.add_argument('-D', '--deploy', action='store_true',
                         help='just flash, do not convert')
-    parser.add_argument('-f' , '--family', dest='family', type=str,
-                        default="0x0",
-                        help='specify familyID - number or name (default: 0x0)')
-    parser.add_argument('-C' , '--carray', action='store_true',
+    parser.add_argument('-w', '--wait', action='store_true',
+                        help='wait for device to flash')
+    parser.add_argument('-C', '--carray', action='store_true',
                         help='convert binary file to a C array, not UF2')
     parser.add_argument('-i', '--info', action='store_true',
                         help='display header information from UF2, do not convert')
@@ -337,20 +340,23 @@ def main():
             print("Converted to %s, output size: %d, start address: 0x%x" %
                   (ext, len(outbuf), appstartaddr))
         if args.convert or ext != "uf2":
-            drives = []
             if args.output == None:
                 args.output = "flash." + ext
-        else:
-            drives = get_drives()
-
         if args.output:
             write_file(args.output, outbuf)
-        else:
+        if ext == "uf2" and not args.convert and not args.info:
+            drives = get_drives()
             if len(drives) == 0:
-                error("No drive to deploy.")
-        for d in drives:
-            print("Flashing %s (%s)" % (d, board_id(d)))
-            write_file(d + "/NEW.UF2", outbuf)
+                if args.wait:
+                    print("Waiting for drive to deploy...")
+                    while len(drives) == 0:
+                        sleep(0.1)
+                        drives = get_drives()
+                elif not args.output:
+                    error("No drive to deploy.")
+            for d in drives:
+                print("Flashing %s (%s)" % (d, board_id(d)))
+                write_file(d + "/NEW.UF2", outbuf)
 
 
 if __name__ == "__main__":
diff --git a/util/uf2families.json b/util/uf2families.json
index fafae82a60..c2140fe351 100644
--- a/util/uf2families.json
+++ b/util/uf2families.json
@@ -77,7 +77,7 @@
     {
         "id": "0x57755a57",
         "short_name": "STM32F4",
-        "description": "ST STM32F401"
+        "description": "ST STM32F4xx"
     },
     {
         "id": "0x5a18069b",
@@ -188,5 +188,20 @@
         "id": "0x9af03e33",
         "short_name": "GD32VF103",
         "description": "GigaDevice GD32VF103"
+    },
+    {
+        "id": "0x4f6ace52",
+        "short_name": "CSK4",
+        "description": "LISTENAI CSK300x/400x"
+    },
+    {
+        "id": "0x6e7348a8",
+        "short_name": "CSK6",
+        "description": "LISTENAI CSK60xx"
+    },
+    {
+        "id": "0x11de784a",
+        "short_name": "M0SENSE",
+        "description": "M0SENSE BL702"
     }
-]
+]
\ No newline at end of file