From b773507443720934307a344d37bb150eac629534 Mon Sep 17 00:00:00 2001 From: Tadeas Pilar Date: Mon, 18 Sep 2023 14:20:23 +0200 Subject: [PATCH 1/2] tools/pydfu: Add option to upload .bin files on specified address. Signed-off-by: Tadeas Pilar --- tools/pydfu.py | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) mode change 100755 => 100644 tools/pydfu.py diff --git a/tools/pydfu.py b/tools/pydfu.py old mode 100755 new mode 100644 index a9da3a0f83..23dd628f06 --- a/tools/pydfu.py +++ b/tools/pydfu.py @@ -422,6 +422,20 @@ def read_dfu_file(filename): return elements +def read_bin_file(filename, address): + """Reads binary file(.bin) and stores it as single + element in element array just like read_dfu_file() would. + """ + element = {} + print("File: {}".format(filename)) + with open(filename, "rb") as fin: + element["data"] = fin.read() + element["size"] = len(element["data"]) + element["num"] = 0 + element["addr"] = address + return [element] + + class FilterDFU(object): """Class for filtering USB devices to identify devices which are in DFU mode. @@ -573,6 +587,13 @@ def main(): parser.add_argument( "-u", "--upload", help="read file from DFU device", dest="path", default=False ) + parser.add_argument( + "-a", + "--address", + help="specify target memory address(hex or dec) when uploading .bin files", + dest="address", + default=False, + ) parser.add_argument("-x", "--exit", help="Exit DFU", action="store_true", default=False) parser.add_argument( "-v", "--verbose", help="increase output verbosity", action="store_true", default=False @@ -601,7 +622,18 @@ def main(): command_run = True if args.path: - elements = read_dfu_file(args.path) + if str(args.path).endswith(".bin"): + if not args.address: + return + addr = str(args.address) + if addr.startswith("0x") or addr.startswith("0X"): + addr = int(addr, 16) + else: + addr = int(addr) + elements = read_bin_file(args.path, addr) + else: + elements = read_dfu_file(args.path) + if not elements: print("No data in dfu file") return From 296a774e7234dc78da3d2f25c0e03770cb2a9cd8 Mon Sep 17 00:00:00 2001 From: Tadeas Pilar Date: Tue, 19 Sep 2023 11:08:54 +0200 Subject: [PATCH 2/2] tools/pydfu: Raise exception when uploading binary without address. Signed-off-by: Tadeas Pilar --- tools/pydfu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pydfu.py b/tools/pydfu.py index 23dd628f06..1d8be7ffde 100644 --- a/tools/pydfu.py +++ b/tools/pydfu.py @@ -624,7 +624,7 @@ def main(): if args.path: if str(args.path).endswith(".bin"): if not args.address: - return + raise ValueError("Address must be specified using -a when uploading binary") addr = str(args.address) if addr.startswith("0x") or addr.startswith("0X"): addr = int(addr, 16)