Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 
 

37 rader
1.1 KiB

  1. #!/usr/bin/env python
  2. import sys
  3. import yaml
  4. import csv
  5. from collections import OrderedDict
  6. def convert_file(fname):
  7. reader = csv.reader(open(fname, 'r'))
  8. registers = OrderedDict()
  9. for register_name, lsb, width, field_name, description, reset_value, access in reader:
  10. if register_name not in registers:
  11. registers[register_name] = {
  12. 'fields': OrderedDict(),
  13. }
  14. register = registers[register_name]
  15. fields = register['fields']
  16. if field_name in fields:
  17. raise RuntimeError('Duplicate field name "%s" in register "%s"' %
  18. field_name, register_name)
  19. else:
  20. fields[field_name] = {
  21. 'lsb': int(lsb),
  22. 'width': int(width),
  23. 'description': description,
  24. 'reset_value': reset_value,
  25. 'access': access,
  26. }
  27. with open(fname.replace('.csv', '.yaml'), 'w') as out_file:
  28. yaml.dump(registers, out_file, default_flow_style=False)
  29. for fname in sys.argv[1:]:
  30. convert_file(fname)