Merge pull request #142 from embassy-rs/generate-flash-settings
Generate flash settings
This commit is contained in:
commit
b8325a23ac
@ -853,6 +853,7 @@ def parse_chips():
|
||||
'kind': 'flash',
|
||||
'address': h['defines']['all'][each + '_BASE'],
|
||||
'size': size,
|
||||
'settings': memory.determine_flash_settings(chip_name),
|
||||
})
|
||||
|
||||
found = set()
|
||||
|
@ -45,13 +45,16 @@ memories = []
|
||||
|
||||
def parse():
|
||||
for f in sorted(glob('sources/cubeprogdb/db/*.xml')):
|
||||
#print("parsing ", f);
|
||||
# print("parsing ", f);
|
||||
device = xmltodict.parse(open(f, 'rb'))['Root']['Device']
|
||||
device_id = device['DeviceID']
|
||||
name = device['Name']
|
||||
names = split_names(name)
|
||||
flash_size = None
|
||||
flash_addr = None
|
||||
write_size = None
|
||||
erase_size = None
|
||||
erase_value = None
|
||||
ram_size = None
|
||||
ram_addr = None
|
||||
|
||||
@ -69,7 +72,20 @@ def parse():
|
||||
configs = [configs]
|
||||
flash_addr = int(configs[0]['Parameters']['@address'], 16)
|
||||
flash_size = int(configs[0]['Parameters']['@size'], 16)
|
||||
#print( f'flash {addr} {size}')
|
||||
erase_value = int(peripheral['ErasedValue'], 16)
|
||||
write_size = int(configs[0]['Allignement'], 16)
|
||||
bank = configs[0]['Bank']
|
||||
if type(bank) != list:
|
||||
bank = [bank]
|
||||
fields = bank[0]['Field']
|
||||
if type(fields) != list:
|
||||
fields = [fields]
|
||||
|
||||
erase_size = int(fields[0]['Parameters']['@size'], 16)
|
||||
for field in fields:
|
||||
# print("Field", field)
|
||||
erase_size = max(erase_size, int(field['Parameters']['@size'], 16))
|
||||
#print( f'flash {addr} {size}')
|
||||
|
||||
chunk = {
|
||||
'device-id': int(device_id, 16),
|
||||
@ -86,6 +102,9 @@ def parse():
|
||||
chunk['flash'] = {
|
||||
'address': flash_addr,
|
||||
'bytes': flash_size,
|
||||
'erase_value': erase_value,
|
||||
'write_size': write_size,
|
||||
'erase_size': erase_size,
|
||||
}
|
||||
|
||||
memories.append(chunk)
|
||||
@ -108,6 +127,18 @@ def determine_flash_size(chip_name):
|
||||
|
||||
return None
|
||||
|
||||
def determine_flash_settings(chip_name):
|
||||
for each in memories:
|
||||
for name in each['names']:
|
||||
if is_chip_name_match(name, chip_name):
|
||||
return {
|
||||
'erase_size': each['flash']['erase_size'],
|
||||
'write_size': each['flash']['write_size'],
|
||||
'erase_value': each['flash']['erase_value'],
|
||||
}
|
||||
|
||||
return None
|
||||
|
||||
|
||||
def determine_device_id(chip_name):
|
||||
for each in memories:
|
||||
|
Loading…
x
Reference in New Issue
Block a user