stm32f4-nucleo-test/libopencm3/scripts/data/lpc43xx/csv2yaml.py
Arti Zirk 2de3a91b0a git subrepo clone https://github.com/libopencm3/libopencm3.git
subrepo:
  subdir:   "libopencm3"
  merged:   "88e91c9a7cce"
upstream:
  origin:   "https://github.com/libopencm3/libopencm3.git"
  branch:   "master"
  commit:   "88e91c9a7cce"
git-subrepo:
  version:  "0.4.3"
  origin:   "???"
  commit:   "???"
2023-01-21 18:31:08 +02:00

37 lines
1.1 KiB
Python
Executable File

#!/usr/bin/env python2
import sys
import yaml
import csv
from collections import OrderedDict
def convert_file(fname):
reader = csv.reader(open(fname, 'r'))
registers = OrderedDict()
for register_name, lsb, width, field_name, description, reset_value, access in reader:
if register_name not in registers:
registers[register_name] = {
'fields': OrderedDict(),
}
register = registers[register_name]
fields = register['fields']
if field_name in fields:
raise RuntimeError('Duplicate field name "%s" in register "%s"' %
field_name, register_name)
else:
fields[field_name] = {
'lsb': int(lsb),
'width': int(width),
'description': description,
'reset_value': reset_value,
'access': access,
}
with open(fname.replace('.csv', '.yaml'), 'w') as out_file:
yaml.dump(registers, out_file, default_flow_style=False)
for fname in sys.argv[1:]:
convert_file(fname)