gen-device-svd: add _Pos and _Msk fields
Without these extra fields, it is impossible to read/write some register bits correctly.
Этот коммит содержится в:
родитель
2788ab0172
коммит
67e33ac30e
1 изменённых файлов: 12 добавлений и 0 удалений
|
@ -123,6 +123,18 @@ def parseSVDRegister(peripheralName, regEl, baseAddress, namePrefix=''):
|
|||
continue
|
||||
fieldName = getText(fieldEl.getElementsByTagName('name')[0])
|
||||
descrEls = fieldEl.getElementsByTagName('description')
|
||||
lsb = int(getText(fieldEl.getElementsByTagName('lsb')[0]))
|
||||
msb = int(getText(fieldEl.getElementsByTagName('msb')[0]))
|
||||
fields.append({
|
||||
'name': '{}_{}{}_{}_Pos'.format(peripheralName, namePrefix, regName, fieldName),
|
||||
'description': 'Position of %s field.' % fieldName,
|
||||
'value': lsb,
|
||||
})
|
||||
fields.append({
|
||||
'name': '{}_{}{}_{}_Msk'.format(peripheralName, namePrefix, regName, fieldName),
|
||||
'description': 'Bit mask of %s field.' % fieldName,
|
||||
'value': (0xffffffff >> (31 - (msb - lsb))) << lsb,
|
||||
})
|
||||
for enumEl in fieldEl.getElementsByTagName('enumeratedValue'):
|
||||
enumName = getText(enumEl.getElementsByTagName('name')[0])
|
||||
enumDescription = getText(enumEl.getElementsByTagName('description')[0])
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче