commit
1b18ea01f9
410
data/registers/syscfg_h7.yaml
Normal file
410
data/registers/syscfg_h7.yaml
Normal file
@ -0,0 +1,410 @@
|
|||||||
|
---
|
||||||
|
block/SYSCFG:
|
||||||
|
description: System configuration controller
|
||||||
|
items:
|
||||||
|
- name: PMCR
|
||||||
|
description: peripheral mode configuration register
|
||||||
|
byte_offset: 4
|
||||||
|
fieldset: PMCR
|
||||||
|
- name: EXTICR
|
||||||
|
description: external interrupt configuration register 1
|
||||||
|
array:
|
||||||
|
len: 4
|
||||||
|
stride: 4
|
||||||
|
byte_offset: 8
|
||||||
|
fieldset: EXTICR
|
||||||
|
- name: CCCSR
|
||||||
|
description: compensation cell control/status register
|
||||||
|
byte_offset: 32
|
||||||
|
fieldset: CCCSR
|
||||||
|
- name: CCVR
|
||||||
|
description: SYSCFG compensation cell value register
|
||||||
|
byte_offset: 36
|
||||||
|
access: Read
|
||||||
|
fieldset: CCVR
|
||||||
|
- name: CCCR
|
||||||
|
description: SYSCFG compensation cell code register
|
||||||
|
byte_offset: 40
|
||||||
|
fieldset: CCCR
|
||||||
|
- name: PWRCR
|
||||||
|
description: SYSCFG power control register
|
||||||
|
byte_offset: 44
|
||||||
|
fieldset: PWRCR
|
||||||
|
- name: PKGR
|
||||||
|
description: SYSCFG package register
|
||||||
|
byte_offset: 292
|
||||||
|
access: Read
|
||||||
|
fieldset: PKGR
|
||||||
|
- name: UR0
|
||||||
|
description: SYSCFG user register 0
|
||||||
|
byte_offset: 768
|
||||||
|
access: Read
|
||||||
|
fieldset: UR0
|
||||||
|
- name: UR2
|
||||||
|
description: SYSCFG user register 2
|
||||||
|
byte_offset: 776
|
||||||
|
fieldset: UR2
|
||||||
|
- name: UR3
|
||||||
|
description: SYSCFG user register 3
|
||||||
|
byte_offset: 780
|
||||||
|
fieldset: UR3
|
||||||
|
- name: UR4
|
||||||
|
description: SYSCFG user register 4
|
||||||
|
byte_offset: 784
|
||||||
|
access: Read
|
||||||
|
fieldset: UR4
|
||||||
|
- name: UR5
|
||||||
|
description: SYSCFG user register 5
|
||||||
|
byte_offset: 788
|
||||||
|
access: Read
|
||||||
|
fieldset: UR5
|
||||||
|
- name: UR6
|
||||||
|
description: SYSCFG user register 6
|
||||||
|
byte_offset: 792
|
||||||
|
access: Read
|
||||||
|
fieldset: UR6
|
||||||
|
- name: UR7
|
||||||
|
description: SYSCFG user register 7
|
||||||
|
byte_offset: 796
|
||||||
|
access: Read
|
||||||
|
fieldset: UR7
|
||||||
|
- name: UR8
|
||||||
|
description: SYSCFG user register 8
|
||||||
|
byte_offset: 800
|
||||||
|
access: Read
|
||||||
|
fieldset: UR8
|
||||||
|
- name: UR9
|
||||||
|
description: SYSCFG user register 9
|
||||||
|
byte_offset: 804
|
||||||
|
access: Read
|
||||||
|
fieldset: UR9
|
||||||
|
- name: UR10
|
||||||
|
description: SYSCFG user register 10
|
||||||
|
byte_offset: 808
|
||||||
|
access: Read
|
||||||
|
fieldset: UR10
|
||||||
|
- name: UR11
|
||||||
|
description: SYSCFG user register 11
|
||||||
|
byte_offset: 812
|
||||||
|
access: Read
|
||||||
|
fieldset: UR11
|
||||||
|
- name: UR12
|
||||||
|
description: SYSCFG user register 12
|
||||||
|
byte_offset: 816
|
||||||
|
access: Read
|
||||||
|
fieldset: UR12
|
||||||
|
- name: UR13
|
||||||
|
description: SYSCFG user register 13
|
||||||
|
byte_offset: 820
|
||||||
|
access: Read
|
||||||
|
fieldset: UR13
|
||||||
|
- name: UR14
|
||||||
|
description: SYSCFG user register 14
|
||||||
|
byte_offset: 824
|
||||||
|
fieldset: UR14
|
||||||
|
- name: UR15
|
||||||
|
description: SYSCFG user register 15
|
||||||
|
byte_offset: 828
|
||||||
|
access: Read
|
||||||
|
fieldset: UR15
|
||||||
|
- name: UR16
|
||||||
|
description: SYSCFG user register 16
|
||||||
|
byte_offset: 832
|
||||||
|
access: Read
|
||||||
|
fieldset: UR16
|
||||||
|
- name: UR17
|
||||||
|
description: SYSCFG user register 17
|
||||||
|
byte_offset: 836
|
||||||
|
access: Read
|
||||||
|
fieldset: UR17
|
||||||
|
fieldset/CCCR:
|
||||||
|
description: SYSCFG compensation cell code register
|
||||||
|
fields:
|
||||||
|
- name: NCC
|
||||||
|
description: NMOS compensation code
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 4
|
||||||
|
- name: PCC
|
||||||
|
description: PMOS compensation code
|
||||||
|
bit_offset: 4
|
||||||
|
bit_size: 4
|
||||||
|
fieldset/CCCSR:
|
||||||
|
description: compensation cell control/status register
|
||||||
|
fields:
|
||||||
|
- name: EN
|
||||||
|
description: enable
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 1
|
||||||
|
- name: CS
|
||||||
|
description: Code selection
|
||||||
|
bit_offset: 1
|
||||||
|
bit_size: 1
|
||||||
|
- name: READY
|
||||||
|
description: Compensation cell ready flag
|
||||||
|
bit_offset: 8
|
||||||
|
bit_size: 1
|
||||||
|
- name: HSLV
|
||||||
|
description: High-speed at low-voltage
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 1
|
||||||
|
fieldset/CCVR:
|
||||||
|
description: SYSCFG compensation cell value register
|
||||||
|
fields:
|
||||||
|
- name: NCV
|
||||||
|
description: NMOS compensation value
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 4
|
||||||
|
- name: PCV
|
||||||
|
description: PMOS compensation value
|
||||||
|
bit_offset: 4
|
||||||
|
bit_size: 4
|
||||||
|
fieldset/EXTICR:
|
||||||
|
description: external interrupt configuration register 2
|
||||||
|
fields:
|
||||||
|
- name: EXTI
|
||||||
|
description: EXTI x configuration (x = 4 to 7)
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 4
|
||||||
|
array:
|
||||||
|
len: 4
|
||||||
|
stride: 4
|
||||||
|
fieldset/PKGR:
|
||||||
|
description: SYSCFG package register
|
||||||
|
fields:
|
||||||
|
- name: PKG
|
||||||
|
description: Package
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 4
|
||||||
|
fieldset/PMCR:
|
||||||
|
description: peripheral mode configuration register
|
||||||
|
fields:
|
||||||
|
- name: I2C1FMP
|
||||||
|
description: I2C1 Fm+
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 1
|
||||||
|
- name: I2C2FMP
|
||||||
|
description: I2C2 Fm+
|
||||||
|
bit_offset: 1
|
||||||
|
bit_size: 1
|
||||||
|
- name: I2C3FMP
|
||||||
|
description: I2C3 Fm+
|
||||||
|
bit_offset: 2
|
||||||
|
bit_size: 1
|
||||||
|
- name: I2C4FMP
|
||||||
|
description: I2C4 Fm+
|
||||||
|
bit_offset: 3
|
||||||
|
bit_size: 1
|
||||||
|
- name: PB6FMP
|
||||||
|
description: PB(6) Fm+
|
||||||
|
bit_offset: 4
|
||||||
|
bit_size: 1
|
||||||
|
- name: PB7FMP
|
||||||
|
description: PB(7) Fast Mode Plus
|
||||||
|
bit_offset: 5
|
||||||
|
bit_size: 1
|
||||||
|
- name: PB8FMP
|
||||||
|
description: PB(8) Fast Mode Plus
|
||||||
|
bit_offset: 6
|
||||||
|
bit_size: 1
|
||||||
|
- name: PB9FMP
|
||||||
|
description: PB(9) Fm+
|
||||||
|
bit_offset: 7
|
||||||
|
bit_size: 1
|
||||||
|
- name: BOOSTE
|
||||||
|
description: Booster Enable
|
||||||
|
bit_offset: 8
|
||||||
|
bit_size: 1
|
||||||
|
- name: BOOSTVDDSEL
|
||||||
|
description: Analog switch supply voltage selection
|
||||||
|
bit_offset: 9
|
||||||
|
bit_size: 1
|
||||||
|
- name: EPIS
|
||||||
|
description: Ethernet PHY Interface Selection
|
||||||
|
bit_offset: 21
|
||||||
|
bit_size: 3
|
||||||
|
- name: PA0SO
|
||||||
|
description: PA0 Switch Open
|
||||||
|
bit_offset: 24
|
||||||
|
bit_size: 1
|
||||||
|
- name: PA1SO
|
||||||
|
description: PA1 Switch Open
|
||||||
|
bit_offset: 25
|
||||||
|
bit_size: 1
|
||||||
|
- name: PC2SO
|
||||||
|
description: PC2 Switch Open
|
||||||
|
bit_offset: 26
|
||||||
|
bit_size: 1
|
||||||
|
- name: PC3SO
|
||||||
|
description: PC3 Switch Open
|
||||||
|
bit_offset: 27
|
||||||
|
bit_size: 1
|
||||||
|
fieldset/PWRCR:
|
||||||
|
description: SYSCFG power control register
|
||||||
|
fields:
|
||||||
|
- name: ODEN
|
||||||
|
description: " Overdrive enable"
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 4
|
||||||
|
fieldset/UR0:
|
||||||
|
description: SYSCFG user register 0
|
||||||
|
fields:
|
||||||
|
- name: BKS
|
||||||
|
description: Bank Swap
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 1
|
||||||
|
- name: RDP
|
||||||
|
description: Readout protection
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 8
|
||||||
|
fieldset/UR10:
|
||||||
|
description: SYSCFG user register 10
|
||||||
|
fields:
|
||||||
|
- name: PA_END_2
|
||||||
|
description: Protected area end address for bank 2
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 12
|
||||||
|
- name: SA_BEG_2
|
||||||
|
description: Secured area start address for bank 2
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 12
|
||||||
|
fieldset/UR11:
|
||||||
|
description: SYSCFG user register 11
|
||||||
|
fields:
|
||||||
|
- name: SA_END_2
|
||||||
|
description: Secured area end address for bank 2
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 12
|
||||||
|
- name: IWDG1M
|
||||||
|
description: Independent Watchdog 1 mode
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 1
|
||||||
|
fieldset/UR12:
|
||||||
|
description: SYSCFG user register 12
|
||||||
|
fields:
|
||||||
|
- name: SECURE
|
||||||
|
description: Secure mode
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 1
|
||||||
|
fieldset/UR13:
|
||||||
|
description: SYSCFG user register 13
|
||||||
|
fields:
|
||||||
|
- name: SDRS
|
||||||
|
description: Secured DTCM RAM Size
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 2
|
||||||
|
- name: D1SBRST
|
||||||
|
description: D1 Standby reset
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 1
|
||||||
|
fieldset/UR14:
|
||||||
|
description: SYSCFG user register 14
|
||||||
|
fields:
|
||||||
|
- name: D1STPRST
|
||||||
|
description: D1 Stop Reset
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 1
|
||||||
|
fieldset/UR15:
|
||||||
|
description: SYSCFG user register 15
|
||||||
|
fields:
|
||||||
|
- name: FZIWDGSTB
|
||||||
|
description: Freeze independent watchdog in Standby mode
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 1
|
||||||
|
fieldset/UR16:
|
||||||
|
description: SYSCFG user register 16
|
||||||
|
fields:
|
||||||
|
- name: FZIWDGSTP
|
||||||
|
description: Freeze independent watchdog in Stop mode
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 1
|
||||||
|
- name: PKP
|
||||||
|
description: Private key programmed
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 1
|
||||||
|
fieldset/UR17:
|
||||||
|
description: SYSCFG user register 17
|
||||||
|
fields:
|
||||||
|
- name: IO_HSLV
|
||||||
|
description: I/O high speed / low voltage
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 1
|
||||||
|
fieldset/UR2:
|
||||||
|
description: SYSCFG user register 2
|
||||||
|
fields:
|
||||||
|
- name: BORH
|
||||||
|
description: BOR_LVL Brownout Reset Threshold Level
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 2
|
||||||
|
- name: BOOT_ADD0
|
||||||
|
description: Boot Address 0
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 16
|
||||||
|
fieldset/UR3:
|
||||||
|
description: SYSCFG user register 3
|
||||||
|
fields:
|
||||||
|
- name: BOOT_ADD1
|
||||||
|
description: Boot Address 1
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 16
|
||||||
|
fieldset/UR4:
|
||||||
|
description: SYSCFG user register 4
|
||||||
|
fields:
|
||||||
|
- name: MEPAD_1
|
||||||
|
description: Mass Erase Protected Area Disabled for bank 1
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 1
|
||||||
|
fieldset/UR5:
|
||||||
|
description: SYSCFG user register 5
|
||||||
|
fields:
|
||||||
|
- name: MESAD_1
|
||||||
|
description: Mass erase secured area disabled for bank 1
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 1
|
||||||
|
- name: WRPN_1
|
||||||
|
description: Write protection for flash bank 1
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 8
|
||||||
|
fieldset/UR6:
|
||||||
|
description: SYSCFG user register 6
|
||||||
|
fields:
|
||||||
|
- name: PA_BEG_1
|
||||||
|
description: Protected area start address for bank 1
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 12
|
||||||
|
- name: PA_END_1
|
||||||
|
description: Protected area end address for bank 1
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 12
|
||||||
|
fieldset/UR7:
|
||||||
|
description: SYSCFG user register 7
|
||||||
|
fields:
|
||||||
|
- name: SA_BEG_1
|
||||||
|
description: Secured area start address for bank 1
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 12
|
||||||
|
- name: SA_END_1
|
||||||
|
description: Secured area end address for bank 1
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 12
|
||||||
|
fieldset/UR8:
|
||||||
|
description: SYSCFG user register 8
|
||||||
|
fields:
|
||||||
|
- name: MEPAD_2
|
||||||
|
description: Mass erase protected area disabled for bank 2
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 1
|
||||||
|
- name: MESAD_2
|
||||||
|
description: Mass erase secured area disabled for bank 2
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 1
|
||||||
|
fieldset/UR9:
|
||||||
|
description: SYSCFG user register 9
|
||||||
|
fields:
|
||||||
|
- name: WRPN_2
|
||||||
|
description: Write protection for flash bank 2
|
||||||
|
bit_offset: 0
|
||||||
|
bit_size: 8
|
||||||
|
- name: PA_BEG_2
|
||||||
|
description: Protected area start address for bank 2
|
||||||
|
bit_offset: 16
|
||||||
|
bit_size: 12
|
35
parse.py
35
parse.py
@ -7,6 +7,20 @@ from collections import OrderedDict
|
|||||||
from glob import glob
|
from glob import glob
|
||||||
|
|
||||||
|
|
||||||
|
def removeprefix(value: str, prefix: str, /) -> str:
|
||||||
|
if value.startswith(prefix):
|
||||||
|
return value[len(prefix):]
|
||||||
|
else:
|
||||||
|
return value[:]
|
||||||
|
|
||||||
|
|
||||||
|
def removesuffix(value: str, suffix: str, /) -> str:
|
||||||
|
if value.endswith(suffix):
|
||||||
|
return value[:-len(suffix)]
|
||||||
|
else:
|
||||||
|
return value[:]
|
||||||
|
|
||||||
|
|
||||||
def represent_ordereddict(dumper, data):
|
def represent_ordereddict(dumper, data):
|
||||||
value = []
|
value = []
|
||||||
|
|
||||||
@ -217,6 +231,7 @@ perimap = [
|
|||||||
('.*:RNG:rng1_v3_1', 'rng_v1/RNG'),
|
('.*:RNG:rng1_v3_1', 'rng_v1/RNG'),
|
||||||
('STM32F4.*:SYS:.*', 'syscfg_f4/SYSCFG'),
|
('STM32F4.*:SYS:.*', 'syscfg_f4/SYSCFG'),
|
||||||
('STM32L4.*:SYS:.*', 'syscfg_l4/SYSCFG'),
|
('STM32L4.*:SYS:.*', 'syscfg_l4/SYSCFG'),
|
||||||
|
('STM32H7.*:SYS:.*', 'syscfg_h7/SYSCFG'),
|
||||||
('.*SDMMC:sdmmc2_v1_0', 'sdmmc_v2/SDMMC'),
|
('.*SDMMC:sdmmc2_v1_0', 'sdmmc_v2/SDMMC'),
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -233,8 +248,8 @@ def parse_headers():
|
|||||||
print('loading headers...')
|
print('loading headers...')
|
||||||
for f in glob('sources/headers/*.h'):
|
for f in glob('sources/headers/*.h'):
|
||||||
# if 'stm32f4' not in f: continue
|
# if 'stm32f4' not in f: continue
|
||||||
ff = f.removeprefix('sources/headers/')
|
ff = removeprefix(f, 'sources/headers/')
|
||||||
ff = ff.removesuffix('.h')
|
ff = removesuffix(ff, '.h')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with open('sources/headers_parsed/{}.json'.format(ff), 'r') as j:
|
with open('sources/headers_parsed/{}.json'.format(ff), 'r') as j:
|
||||||
@ -292,7 +307,8 @@ def parse_chips():
|
|||||||
chip_name = chip_name_from_package_name(package_name)
|
chip_name = chip_name_from_package_name(package_name)
|
||||||
flash = int(package_flashs[package_i])
|
flash = int(package_flashs[package_i])
|
||||||
ram = int(package_rams[package_i])
|
ram = int(package_rams[package_i])
|
||||||
gpio_af = next(filter(lambda x: x['@Name'] == 'GPIO', r['IP']))['@Version'].removesuffix('_gpio_v1_0')
|
gpio_af = next(filter(lambda x: x['@Name'] == 'GPIO', r['IP']))['@Version']
|
||||||
|
gpio_af = removesuffix(gpio_af, '_gpio_v1_0')
|
||||||
|
|
||||||
if chip_name not in chips:
|
if chip_name not in chips:
|
||||||
chips[chip_name] = OrderedDict({
|
chips[chip_name] = OrderedDict({
|
||||||
@ -320,7 +336,7 @@ def parse_chips():
|
|||||||
for ip in r['IP']:
|
for ip in r['IP']:
|
||||||
pname = ip['@InstanceName']
|
pname = ip['@InstanceName']
|
||||||
pkind = ip['@Name']+':'+ip['@Version']
|
pkind = ip['@Name']+':'+ip['@Version']
|
||||||
pkind = pkind.removesuffix('_Cube')
|
pkind = removesuffix(pkind, '_Cube')
|
||||||
|
|
||||||
if pname == 'SYS':
|
if pname == 'SYS':
|
||||||
pname = 'SYSCFG'
|
pname = 'SYSCFG'
|
||||||
@ -384,8 +400,8 @@ def parse_gpio_af():
|
|||||||
if 'STM32F1' in f:
|
if 'STM32F1' in f:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
ff = f.removeprefix('sources/cubedb/mcu/IP/GPIO-')
|
ff = removeprefix(f, 'sources/cubedb/mcu/IP/GPIO-')
|
||||||
ff = ff.removesuffix('_gpio_v1_0_Modes.xml')
|
ff = removesuffix(ff, '_gpio_v1_0_Modes.xml')
|
||||||
print(ff)
|
print(ff)
|
||||||
|
|
||||||
pins = {}
|
pins = {}
|
||||||
@ -404,14 +420,15 @@ def parse_gpio_af():
|
|||||||
pin_name = pin_name.split(' ')[0]
|
pin_name = pin_name.split(' ')[0]
|
||||||
pin_name = pin_name.split('_')[0]
|
pin_name = pin_name.split('_')[0]
|
||||||
pin_name = pin_name.split('(')[0]
|
pin_name = pin_name.split('(')[0]
|
||||||
pin_name = pin_name.removesuffix('OSC32')
|
pin_name = removesuffix(pin_name, 'OSC32')
|
||||||
pin_name = pin_name.removesuffix('BOOT0')
|
pin_name = removesuffix(pin_name, 'BOOT0')
|
||||||
|
|
||||||
# Extract AFs
|
# Extract AFs
|
||||||
afs = {}
|
afs = {}
|
||||||
for signal in children(pin, 'PinSignal'):
|
for signal in children(pin, 'PinSignal'):
|
||||||
func = signal['@Name']
|
func = signal['@Name']
|
||||||
afn = int(signal['SpecificParameter']['PossibleValue'].split('_')[1].removeprefix('AF'))
|
afn = signal['SpecificParameter']['PossibleValue'].split('_')[1]
|
||||||
|
afn = int(removeprefix(afn, 'AF'))
|
||||||
afs[func] = afn
|
afs[func] = afn
|
||||||
|
|
||||||
pins[pin_name] = afs
|
pins[pin_name] = afs
|
||||||
|
Loading…
x
Reference in New Issue
Block a user