Add stub stm32f1 gpio parsing
This commit is contained in:
parent
8b5f735c6d
commit
8833e7a8df
@ -891,56 +891,85 @@ def remove_duplicates(item_list):
|
|||||||
def parse_gpio_af():
|
def parse_gpio_af():
|
||||||
# os.makedirs('data/gpio_af', exist_ok=True)
|
# os.makedirs('data/gpio_af', exist_ok=True)
|
||||||
for f in glob('sources/cubedb/mcu/IP/GPIO-*_gpio_v1_0_Modes.xml'):
|
for f in glob('sources/cubedb/mcu/IP/GPIO-*_gpio_v1_0_Modes.xml'):
|
||||||
if 'STM32F1' in f:
|
|
||||||
continue
|
|
||||||
|
|
||||||
ff = removeprefix(f, 'sources/cubedb/mcu/IP/GPIO-')
|
ff = removeprefix(f, 'sources/cubedb/mcu/IP/GPIO-')
|
||||||
ff = removesuffix(ff, '_gpio_v1_0_Modes.xml')
|
ff = removesuffix(ff, '_gpio_v1_0_Modes.xml')
|
||||||
|
|
||||||
peris = {}
|
|
||||||
|
|
||||||
r = xmltodict.parse(open(f, 'rb'))
|
r = xmltodict.parse(open(f, 'rb'))
|
||||||
for pin in r['IP']['GPIO_Pin']:
|
|
||||||
pin_name = pin['@Name']
|
|
||||||
|
|
||||||
# Blacklist non-pins
|
|
||||||
if pin_name == 'PDR_ON':
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Cleanup pin name
|
|
||||||
pin_name = cleanup_pin_name(pin_name)
|
|
||||||
if pin_name is None:
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Extract AFs
|
|
||||||
for signal in children(pin, 'PinSignal'):
|
|
||||||
p = parse_signal_name(signal['@Name'])
|
|
||||||
if p is None:
|
|
||||||
continue
|
|
||||||
peri_name, signal_name = p
|
|
||||||
|
|
||||||
afn = signal['SpecificParameter']['PossibleValue'].split('_')[1]
|
|
||||||
afn = int(removeprefix(afn, 'AF'))
|
|
||||||
|
|
||||||
if peri_name not in peris:
|
|
||||||
peris[peri_name] = []
|
|
||||||
peris[peri_name].append(OrderedDict({
|
|
||||||
'pin': pin_name,
|
|
||||||
'signal': signal_name,
|
|
||||||
'af': afn,
|
|
||||||
}))
|
|
||||||
|
|
||||||
for pname, p in peris.items():
|
|
||||||
p = remove_duplicates(p)
|
|
||||||
sort_pins(p)
|
|
||||||
peris[pname] = p
|
|
||||||
|
|
||||||
# with open('data/gpio_af/'+ff+'.yaml', 'w') as f:
|
|
||||||
# f.write(yaml.dump(pins))
|
|
||||||
|
|
||||||
|
if 'STM32F1' in f:
|
||||||
|
peris = parse_gpio_af_f1(r)
|
||||||
|
else:
|
||||||
|
peris = parse_gpio_af_nonf1(r)
|
||||||
af[ff] = peris
|
af[ff] = peris
|
||||||
|
|
||||||
|
|
||||||
|
def parse_gpio_af_f1(xml):
|
||||||
|
peris = {}
|
||||||
|
for pin in xml['IP']['GPIO_Pin']:
|
||||||
|
pin_name = pin['@Name']
|
||||||
|
|
||||||
|
# Cleanup pin name
|
||||||
|
pin_name = cleanup_pin_name(pin_name)
|
||||||
|
if pin_name is None:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Extract AFs
|
||||||
|
for signal in children(pin, 'PinSignal'):
|
||||||
|
p = parse_signal_name(signal['@Name'])
|
||||||
|
if p is None:
|
||||||
|
continue
|
||||||
|
peri_name, signal_name = p
|
||||||
|
|
||||||
|
if peri_name not in peris:
|
||||||
|
peris[peri_name] = []
|
||||||
|
peris[peri_name].append(OrderedDict({
|
||||||
|
'pin': pin_name,
|
||||||
|
'signal': signal_name,
|
||||||
|
}))
|
||||||
|
|
||||||
|
for pname, p in peris.items():
|
||||||
|
p = remove_duplicates(p)
|
||||||
|
sort_pins(p)
|
||||||
|
peris[pname] = p
|
||||||
|
return peris
|
||||||
|
|
||||||
|
|
||||||
|
def parse_gpio_af_nonf1(xml):
|
||||||
|
peris = {}
|
||||||
|
|
||||||
|
for pin in xml['IP']['GPIO_Pin']:
|
||||||
|
pin_name = pin['@Name']
|
||||||
|
|
||||||
|
# Cleanup pin name
|
||||||
|
pin_name = cleanup_pin_name(pin_name)
|
||||||
|
if pin_name is None:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Extract AFs
|
||||||
|
for signal in children(pin, 'PinSignal'):
|
||||||
|
p = parse_signal_name(signal['@Name'])
|
||||||
|
if p is None:
|
||||||
|
continue
|
||||||
|
peri_name, signal_name = p
|
||||||
|
|
||||||
|
afn = signal['SpecificParameter']['PossibleValue'].split('_')[1]
|
||||||
|
afn = int(removeprefix(afn, 'AF'))
|
||||||
|
|
||||||
|
if peri_name not in peris:
|
||||||
|
peris[peri_name] = []
|
||||||
|
peris[peri_name].append(OrderedDict({
|
||||||
|
'pin': pin_name,
|
||||||
|
'signal': signal_name,
|
||||||
|
'af': afn,
|
||||||
|
}))
|
||||||
|
|
||||||
|
for pname, p in peris.items():
|
||||||
|
p = remove_duplicates(p)
|
||||||
|
sort_pins(p)
|
||||||
|
peris[pname] = p
|
||||||
|
return peris
|
||||||
|
|
||||||
|
|
||||||
dma_channels = {}
|
dma_channels = {}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user