kopia lustrzana https://github.com/micropython/micropython
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.pull/3877/merge
rodzic
ec7982ec6d
commit
92667dc2e5
|
@ -394,24 +394,25 @@ def get_memory_layout(device):
|
||||||
intf = cfg[(0, 0)]
|
intf = cfg[(0, 0)]
|
||||||
mem_layout_str = get_string(device, intf.iInterface)
|
mem_layout_str = get_string(device, intf.iInterface)
|
||||||
mem_layout = mem_layout_str.split('/')
|
mem_layout = mem_layout_str.split('/')
|
||||||
addr = int(mem_layout[1], 0)
|
|
||||||
segments = mem_layout[2].split(',')
|
|
||||||
seg_re = re.compile(r'(\d+)\*(\d+)(.)(.)')
|
|
||||||
result = []
|
result = []
|
||||||
for segment in segments:
|
for mem_layout_index in range(1, len(mem_layout), 2):
|
||||||
seg_match = seg_re.match(segment)
|
addr = int(mem_layout[mem_layout_index], 0)
|
||||||
num_pages = int(seg_match.groups()[0], 10)
|
segments = mem_layout[mem_layout_index + 1].split(',')
|
||||||
page_size = int(seg_match.groups()[1], 10)
|
seg_re = re.compile(r'(\d+)\*(\d+)(.)(.)')
|
||||||
multiplier = seg_match.groups()[2]
|
for segment in segments:
|
||||||
if multiplier == 'K':
|
seg_match = seg_re.match(segment)
|
||||||
page_size *= 1024
|
num_pages = int(seg_match.groups()[0], 10)
|
||||||
if multiplier == 'M':
|
page_size = int(seg_match.groups()[1], 10)
|
||||||
page_size *= 1024 * 1024
|
multiplier = seg_match.groups()[2]
|
||||||
size = num_pages * page_size
|
if multiplier == 'K':
|
||||||
last_addr = addr + size - 1
|
page_size *= 1024
|
||||||
result.append(named((addr, last_addr, size, num_pages, page_size),
|
if multiplier == 'M':
|
||||||
"addr last_addr size num_pages page_size"))
|
page_size *= 1024 * 1024
|
||||||
addr += size
|
size = num_pages * page_size
|
||||||
|
last_addr = addr + size - 1
|
||||||
|
result.append(named((addr, last_addr, size, num_pages, page_size),
|
||||||
|
"addr last_addr size num_pages page_size"))
|
||||||
|
addr += size
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue