pull/12470/merge
TadeasPilar 2024-04-22 15:19:25 +10:00 zatwierdzone przez GitHub
commit 65143f1918
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
1 zmienionych plików z 33 dodań i 1 usunięć

34
tools/pydfu.py 100755 → 100644
Wyświetl plik

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