Skip to content

Commit 92667dc

Browse files
committed
tools/pydfu.py: Add support for multiple memory segments.
Segments are separated by / and begin with the memory address. This follows how the ST DFU tool works.
1 parent ec7982e commit 92667dc

1 file changed

Lines changed: 18 additions & 17 deletions

File tree

tools/pydfu.py

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -394,24 +394,25 @@ def get_memory_layout(device):
394394
intf = cfg[(0, 0)]
395395
mem_layout_str = get_string(device, intf.iInterface)
396396
mem_layout = mem_layout_str.split('/')
397-
addr = int(mem_layout[1], 0)
398-
segments = mem_layout[2].split(',')
399-
seg_re = re.compile(r'(\d+)\*(\d+)(.)(.)')
400397
result = []
401-
for segment in segments:
402-
seg_match = seg_re.match(segment)
403-
num_pages = int(seg_match.groups()[0], 10)
404-
page_size = int(seg_match.groups()[1], 10)
405-
multiplier = seg_match.groups()[2]
406-
if multiplier == 'K':
407-
page_size *= 1024
408-
if multiplier == 'M':
409-
page_size *= 1024 * 1024
410-
size = num_pages * page_size
411-
last_addr = addr + size - 1
412-
result.append(named((addr, last_addr, size, num_pages, page_size),
413-
"addr last_addr size num_pages page_size"))
414-
addr += size
398+
for mem_layout_index in range(1, len(mem_layout), 2):
399+
addr = int(mem_layout[mem_layout_index], 0)
400+
segments = mem_layout[mem_layout_index + 1].split(',')
401+
seg_re = re.compile(r'(\d+)\*(\d+)(.)(.)')
402+
for segment in segments:
403+
seg_match = seg_re.match(segment)
404+
num_pages = int(seg_match.groups()[0], 10)
405+
page_size = int(seg_match.groups()[1], 10)
406+
multiplier = seg_match.groups()[2]
407+
if multiplier == 'K':
408+
page_size *= 1024
409+
if multiplier == 'M':
410+
page_size *= 1024 * 1024
411+
size = num_pages * page_size
412+
last_addr = addr + size - 1
413+
result.append(named((addr, last_addr, size, num_pages, page_size),
414+
"addr last_addr size num_pages page_size"))
415+
addr += size
415416
return result
416417

417418

0 commit comments

Comments
 (0)