From 25fff03be8cfef6534b4876e81f7c9fd036d2248 Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Wed, 13 May 2020 22:06:45 +0200 Subject: [PATCH 01/16] [dfg] Add NRF device data extractor --- .../raw-data-extractor/extract-nrf.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 tools/generator/raw-data-extractor/extract-nrf.py diff --git a/tools/generator/raw-data-extractor/extract-nrf.py b/tools/generator/raw-data-extractor/extract-nrf.py new file mode 100644 index 00000000..eab49e04 --- /dev/null +++ b/tools/generator/raw-data-extractor/extract-nrf.py @@ -0,0 +1,28 @@ +from pathlib import Path +import urllib.request +import zipfile +import shutil +import io +import os + +packurl = "https://www.nordicsemi.com/-/media/Software-and-other-downloads/Desktop-software/nRF-MDK/sw/8-33-0/nRF_MDK_8_33_0_GCC_BSDLicense.zip" + +shutil.rmtree("../raw-device-data/nrf-devices", ignore_errors=True) +Path("../raw-device-data/nrf-devices/nrf").mkdir(exist_ok=True, parents=True) + +if __name__ == "__main__": + dest = "../raw-device-data/nrf-devices/nrf" + print("Downloading...") + with urllib.request.urlopen(packurl) as content: + z = zipfile.ZipFile(io.BytesIO(content.read())) + print("Extracting...") + # remove subfolders, some packs have several chips per pack + for zi in z.infolist(): + if zi.filename.endswith(".svd"): + zi.filename = os.path.basename(zi.filename) + print(zi.filename) + z.extract(zi, dest) + + # dirty hack because af inconsistent part names in .svd files + os.rename(dest + '/nrf51.svd', dest + '/nrf51822.svd') + os.rename(dest + '/nrf52.svd', dest + '/nrf52832.svd') From feb575c0b2d17ca4b6c1b936c5965b1091a85c5c Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Wed, 13 May 2020 22:07:35 +0200 Subject: [PATCH 02/16] [dfg] Add NRF device file generator --- tools/generator/dfg/nrf/__init__.py | 0 tools/generator/dfg/nrf/nrf_device_tree.py | 240 +++++++++++++++++++++ tools/generator/dfg/nrf/nrf_groups.py | 12 ++ tools/generator/dfg/nrf/nrf_identifier.py | 39 ++++ tools/generator/nrf_generator.py | 109 ++++++++++ 5 files changed, 400 insertions(+) create mode 100644 tools/generator/dfg/nrf/__init__.py create mode 100644 tools/generator/dfg/nrf/nrf_device_tree.py create mode 100644 tools/generator/dfg/nrf/nrf_groups.py create mode 100644 tools/generator/dfg/nrf/nrf_identifier.py create mode 100755 tools/generator/nrf_generator.py diff --git a/tools/generator/dfg/nrf/__init__.py b/tools/generator/dfg/nrf/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tools/generator/dfg/nrf/nrf_device_tree.py b/tools/generator/dfg/nrf/nrf_device_tree.py new file mode 100644 index 00000000..b38ef598 --- /dev/null +++ b/tools/generator/dfg/nrf/nrf_device_tree.py @@ -0,0 +1,240 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2013-2016, Niklas Hauser +# Copyright (c) 2016, Fabian Greif +# Copyright (c) 2020, Hannes Ellinger +# All rights reserved. + +import math +import logging + +from ..device_tree import DeviceTree +from ..input.xml import XMLReader + +from .nrf_identifier import NRFIdentifier + +LOGGER = logging.getLogger('dfg.nrf.reader') + +class NRFDeviceTree: + """ NRFDeviceTree + This NRF specific part description file reader knows the structure and + translates the data into a platform independent format. + """ + + @staticmethod + def _properties_from_file(filename): + device_file = XMLReader(filename) + p = {} + + LOGGER.info("Parsing Device File For '%s'", device_file.query("//device/name")[0]) + + partname = device_file.query("//device/name")[0].text + + # dirty hack because af inconsistent part names in .svd files + if partname == 'nrf52': + partname = 'nrf52832' + elif partname == 'nrf51': + partname = 'nrf51822' + + did = NRFIdentifier.from_string(partname.lower()) + p['id'] = did + + # information about the core and architecture + core = device_file.query("//device/cpu/name")[0].text.lower().replace("cm", "cortex-m") + if device_file.query("//device/cpu/fpuPresent")[0].text == '1': + core += "f" + p["core"] = core + + # find the values for flash and ram + # FIXME load from Linkerfile + memories = [] + memories.append({"name":'flash', "access":"rx", "size":str(int("0x100000", 16)), "start":"0x00000000"}) + memories.append({"name":'extflash', "access":"rx", "size":str(int("0x8000000", 16)), "start":"0x12000000"}) + memories.append({"name":'ram', "access":"rwx", "size":str(int("0x40000", 16)), "start":"0x20000000"}) + memories.append({"name":'code_ram', "access":"rwx", "size":str(int("0x40000", 16)), "start":"0x800000"}) + p["memories"] = memories + + raw_modules = device_file.query("//peripherals/peripheral") + modules = [] + ports = {} + gpios = [] + for m in raw_modules: + modulename = m.find('name').text + moduledesc = m.find('description').text + + if "GPIO Port" in moduledesc: + if m.get('derivedFrom') is not None: + portsize = ports[m.get('derivedFrom')] + else: + portsize = int(m.find('size').text, base=0) + + ports[modulename] = portsize + for i in range(portsize): + gpios.append((modulename, str(i))) + + else: + modules.append({'module': modulename.lower(), 'instance': modulename.lower()}) + p['modules'] = sorted(list(set([(m['module'], m['instance']) for m in modules]))) + p['gpios'] = gpios + p['signals'] = [] + + interrupts = [] + raw_interrupt = device_file.query("//peripherals/peripheral/interrupt") + for i in raw_interrupt: + interruptname = i.find('name').text + interruptnum = i.find('value').text + interrupts.append({'position': interruptnum, 'name': interruptname}) + + # Unique interrupts + p['interrupts'] = [] + for interrupt in interrupts: + if interrupt not in p['interrupts']: + p['interrupts'].append(interrupt) + + LOGGER.debug("Found GPIOs: [%s]", ", ".join([p.upper() + "." + i for p,i in p['gpios']])) + LOGGER.debug("Available Modules are:\n" + NRFDeviceTree._modulesToString(p['modules'])) + # LOGGER.debug("Found Signals:") + # for sig in p['signals']: + # LOGGER.debug(" %s", sig) + # LOGGER.debug("Found Interrupts:") + # for intr in p['interrupts']: + # LOGGER.debug(" %s", intr) + + return p + + @staticmethod + def _modulesToString(modules): + string = "" + mods = sorted(modules) + char = mods[0][0][0:1] + for module, instance in mods: + if not instance.startswith(char): + string += "\n" + string += instance + " \t" + char = instance[0][0:1] + return string + + @staticmethod + def _device_tree_from_properties(p): + tree = DeviceTree('device') + tree.ids.append(p['id']) + + def topLevelOrder(e): + order = ['attribute-flash', 'attribute-ram', 'attribute-eeprom', 'attribute-core', 'attribute-mcu', 'header', 'attribute-define'] + if e.name in order: + if e.name in ['attribute-flash', 'attribute-eeprom', 'attribute-ram']: + return (order.index(e.name), int(e['value'])) + else: + return (order.index(e.name), e['value']) + return (len(order), -1) + # tree.addSortKey(topLevelOrder) + + # NRFDeviceTree.addDeviceAttributesToNode(p, tree, 'attribute-flash') + # NRFDeviceTree.addDeviceAttributesToNode(p, tree, 'attribute-ram') + # NRFDeviceTree.addDeviceAttributesToNode(p, tree, 'attribute-eeprom') + # NRFDeviceTree.addDeviceAttributesToNode(p, tree, 'attribute-mcu') + + def driverOrder(e): + if e.name == 'driver': + if e['name'] == 'core': + # place the core at the very beginning + return ('aaaaaaa', e['type']) + if e['name'] == 'gpio': + # place the gpio at the very end + return ('zzzzzzz', e['type']) + # sort remaining drivers by type and compatible strings + return (e['name'], e['type']) + return ("", "") + tree.addSortKey(driverOrder) + + # Core + core_child = tree.addChild('driver') + core_child.setAttributes('name', 'core', 'type', p['core']) + core_child.addSortKey(lambda e: (int(e['position']), e['name']) if e.name == 'vector' else (-1, "")) + core_child.addSortKey(lambda e: (e['name'], int(e['size'])) if e.name == 'memory' else ("", -1)) + + for section in p["memories"]: + memory_section = core_child.addChild("memory") + memory_section.setAttributes(["name", "access", "start", "size"], section) + # sort the node children by start address and size + core_child.addSortKey(lambda e: (int(e["start"], 16), int(e["size"])) if e.name == "memory" else (-1, -1)) + + # for memory in ['flash', 'ram', 'lpram', 'eeprom']: + # if memory not in p: continue; + # memory_section = core_child.addChild('memory') + # memory_section.setAttribute('name', memory) + # memory_section.setAttribute('size', p[memory]) + + for vector in p['interrupts']: + if int(vector['position']) < 0: continue; + vector_section = core_child.addChild('vector') + vector_section.setAttributes(['position', 'name'], vector) + + modules = {} + for m, i in p['modules']: + # filter out non-peripherals: fuses, micro-trace buffer + if m in ['fuses', 'mtb', 'systemcontrol', 'systick', 'hmatrixb', 'hmatrix']: continue; + if m not in modules: + modules[m] = [i] + else: + modules[m].append(i) + + # add all other modules + for name, instances in modules.items(): + driver = tree.addChild('driver') + dtype = name + compatible = 'nrf' + + driver.setAttributes('name', dtype, 'type', compatible) + # Add all instances to this driver + if any(i != dtype for i in instances): + driver.addSortKey(lambda e: e['value']) + for i in instances: + inst = driver.addChild('instance') + inst.setValue(i[len(dtype):]) + + # GPIO driver + gpio_driver = tree.addChild('driver') + gpio_driver.setAttributes('name', 'gpio', 'type', 'nrf') + gpio_driver.addSortKey(lambda e : (e['port'], int(e['pin']))) + for port, pin in p['gpios']: + pin_driver = gpio_driver.addChild('gpio') + pin_driver.setAttributes('port', port.upper(), 'pin', pin) + pin_driver.addSortKey(lambda e: (e['driver'], + e['instance'] if e['instance'] is not None else '', + e['name'] if e['name'] is not None else '')) + # add all signals + for s in [s for s in p['signals'] if s['pad'] == ("p" + port + pin)]: + driver, instance, name = s['module'], s['instance'], s['group'] + # add the af node + pin_signal = {'driver': driver} + if instance != driver: + pin_signal['instance'] = instance.replace(driver, '') + if name != driver and name != 'int': + if 'index' in s: name += s['index']; + pin_signal['name'] = name + elif 'index' in s: + pin_signal['name'] = s['index'] + if "name" not in pin_signal: + LOGGER.error("%s has no name!", s) + continue + af = pin_driver.addChild('signal') + af.setAttributes(['driver', 'instance', 'name'], pin_signal) + + return tree + + @staticmethod + def addDeviceAttributesToNode(p, node, name): + pname = name.split('-')[-1] + if pname not in p: return; + props = p[pname] + if not isinstance(props, list): + props = [props] + for prop in props: + child = node.addChild(name) + child.setValue(prop) + + @staticmethod + def from_file(filename): + p = NRFDeviceTree._properties_from_file(filename) + if p is None: return None; + return NRFDeviceTree._device_tree_from_properties(p) diff --git a/tools/generator/dfg/nrf/nrf_groups.py b/tools/generator/dfg/nrf/nrf_groups.py new file mode 100644 index 00000000..b3b8aefa --- /dev/null +++ b/tools/generator/dfg/nrf/nrf_groups.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020 Hannes Ellinger +# All rights reserved. + +nrf_groups = \ +[ + # NRF52 devices + { + 'family': ['52'], + 'series': ['810', '811', '820', '832', '833', '840'] + }, +] diff --git a/tools/generator/dfg/nrf/nrf_identifier.py b/tools/generator/dfg/nrf/nrf_identifier.py new file mode 100644 index 00000000..8d9bb10e --- /dev/null +++ b/tools/generator/dfg/nrf/nrf_identifier.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2013 , Kevin Läufer +# Copyright (c) 2013-2014, Niklas Hauser +# Copyright (c) 2016, Fabian Greif +# Copyright (c) 2020, Hannes Ellinger +# All rights reserved. + +import re +import logging + +from modm_devices.device_identifier import DeviceIdentifier + +LOGGER = logging.getLogger("dfg.nrf.identifier") + +class NRFIdentifier: + """ NRFIdentifier + A class to parse NRF device strings, e.g. NRF52840. + Device names are organized as follows: + NRF 52 840 + {platform}{family}{series} + """ + + @staticmethod + def from_string(string): + string = string.lower() + + if string.startswith("nrf"): + matchString = r"nrf(?P[0-9]{2})(?P[0-9]{3})" + match = re.search(matchString, string) + if match: + i = DeviceIdentifier("{platform}{family}{series}") + i.set("platform", "nrf") + i.set("family", match.group("family").lower()) + i.set("series", match.group("series").lower()) + return i + + + LOGGER.error("Parse Error: unknown platform. Device string: '%s'", string) + exit(1) diff --git a/tools/generator/nrf_generator.py b/tools/generator/nrf_generator.py new file mode 100755 index 00000000..13017c0b --- /dev/null +++ b/tools/generator/nrf_generator.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright (c) 2013-2016, Niklas Hauser +# Copyright (c) 2016, Fabian Greif +# All rights reserved. +# TESTING: exec(open("./nrf_generator.py").read()) + +import os +import sys +import glob +import logging + +import dfg.logger + +from dfg.merger import DeviceMerger +from dfg.nrf.nrf_device_tree import NRFDeviceTree +from dfg.nrf.nrf_groups import nrf_groups +from dfg.output.device_file import DeviceFileWriter +from modm_devices.parser import DeviceParser +from deepdiff import DeepDiff + +LOGGER = logging.getLogger('dfg.nrf') + +if __name__ == "__main__": + loglevel = 'DEBUG' + devs = [] + device_depth = 1e6 + simulate = False + + for arg in sys.argv[1:]: + if arg.startswith('-n'): + simulate = True + continue + if arg.startswith('--log='): + loglevel = arg.replace('--log=', '') + continue + if arg.startswith('--depth='): + device_depth = int(arg.replace('--depth=', '')) - 1 + continue + devs.append(arg) + + if not len(devs): + devs.append('nrf52810') + devs.append('nrf52811') + devs.append('nrf52820') + devs.append('nrf52832') + devs.append('nrf52833') + devs.append('nrf52840') + + dfg.logger.configure_logger(loglevel) + + devices = {} + for dev in devs: + xml_path = os.path.join(os.path.dirname(__file__), 'raw-device-data', 'nrf-devices', 'nrf', (dev.lower() + '.svd')) + files = glob.glob(xml_path) + for filename in files: + print(filename) + device = NRFDeviceTree.from_file(filename) + if device is None: continue; + devices[device.ids.string] = device + if device_depth > 0: + device_depth -= 1 + else: + print(device.toString()) + exit(1) + + mergedDevices = DeviceMerger.merge(nrf_groups, [d.copy() for d in devices.values()]) + + def filename(ids): + p = {} + for k in ids.keys(): + v = [] + for b in ids.getAttribute(k): + if b == "": b = 'n' + v.append(b) + if k in ['type', 'pin']: v.sort() + if len(v) > 0: + p[k] = "_".join(v) + fmt = "{platform}{family}{series}" + return fmt.format(**p) + + folder = os.path.join(os.path.dirname(__file__), '..', '..', 'devices', 'nrf') + parser = DeviceParser() + parsed_devices = {} + for dev in mergedDevices: + # dump the merged device file into the devices folder + path = DeviceFileWriter.write(dev, folder, filename) + # immediately parse this file + device_file = parser.parse(path) + for device in device_file.get_devices(): + # and extract all the devices from it + parsed_devices[device.partname] = device + + tmp_folder = os.path.join(os.path.dirname(__file__), 'single') + os.makedirs(tmp_folder, exist_ok=True) + for pname, pdevice in parsed_devices.items(): + # these are the properties from the merged device + pprops = pdevice.properties + # dump the associated single device + rpath = DeviceFileWriter.write(devices[pname], tmp_folder, lambda ids: ids.string) + # parse it again + rdevice_file = parser.parse(rpath) + rdevice = rdevice_file.get_devices() + assert(len(rdevice) == 1) + # these are the properties of the single device + rprops = rdevice[0].properties + ddiff = DeepDiff(rprops, pprops, ignore_order=True) + # assert that there is no difference between the two + assert(len(ddiff) == 0) From fda4e2f8dda58bbfa6ace107137c2fa6dd74c35b Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Wed, 13 May 2020 22:08:48 +0200 Subject: [PATCH 03/16] [dfg] Add NRF devices to CI --- .travis.yml | 1 + tools/generator/Makefile | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index acb909b4..323eca95 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,6 +19,7 @@ script: - (cd tools/generator; make generate-avr) - (cd tools/generator; make generate-stm32) - (cd tools/generator; make generate-sam) + - (cd tools/generator; make generate-nrf) - tools/device/scripts/stats --count - tools/device/scripts/stats --name >/dev/null - tools/device/scripts/stats --ram >/dev/null diff --git a/tools/generator/Makefile b/tools/generator/Makefile index 69b5de56..bde282a7 100644 --- a/tools/generator/Makefile +++ b/tools/generator/Makefile @@ -15,7 +15,7 @@ raw-device-data/%-devices: (cd raw-data-extractor && python3 extract-$(@:raw-device-data/%-devices=%).py) .PHONY: extract -extract: raw-device-data/avr-devices raw-device-data/stm32-devices raw-device-data/sam-devices +extract: raw-device-data/avr-devices raw-device-data/stm32-devices raw-device-data/sam-devices raw-device-data/nrf-devices .PHONY: clean_extract clean_extract: @@ -41,6 +41,17 @@ generate-sam%: raw-device-data/sam-devices ext/cmsis-5-partial generate-sam: generate-saml21 generate-samd21 generate-samd51 + +# NRF device files +.PHONY: generate-nrf% +generate-nrf%: raw-device-data/nrf-devices ext/cmsis-5-partial + @rm -f ../../devices/nrf/$(@:generate-%=%)* + ./nrf_generator.py $(@:generate-%=%) + +.PHONY: generate-nrf +generate-nrf: generate-nrf52810 generate-nrf52811 generate-nrf52820 generate-nrf52832 generate-nrf52833 generate-nrf52840 + + # STM32 device files .PHONY: generate-stm32% generate-stm32%: raw-device-data/sam-devices ext/cmsis-5-partial ext/cmsis-header-stm32 From 469442975840f2439f6816da1d4da18b06cb3f5a Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Wed, 13 May 2020 22:09:16 +0200 Subject: [PATCH 04/16] [dfg] Add initial set of NRF device files --- devices/nrf/nrf52810.xml | 115 +++++++++++++++++++++++ devices/nrf/nrf52811.xml | 118 ++++++++++++++++++++++++ devices/nrf/nrf52820.xml | 123 +++++++++++++++++++++++++ devices/nrf/nrf52832.xml | 148 ++++++++++++++++++++++++++++++ devices/nrf/nrf52833.xml | 188 ++++++++++++++++++++++++++++++++++++++ devices/nrf/nrf52840.xml | 193 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 885 insertions(+) create mode 100644 devices/nrf/nrf52810.xml create mode 100644 devices/nrf/nrf52811.xml create mode 100644 devices/nrf/nrf52820.xml create mode 100644 devices/nrf/nrf52832.xml create mode 100644 devices/nrf/nrf52833.xml create mode 100644 devices/nrf/nrf52840.xml diff --git a/devices/nrf/nrf52810.xml b/devices/nrf/nrf52810.xml new file mode 100644 index 00000000..92c7d179 --- /dev/null +++ b/devices/nrf/nrf52810.xml @@ -0,0 +1,115 @@ + + + + + {platform}{family}{series} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52811.xml b/devices/nrf/nrf52811.xml new file mode 100644 index 00000000..4c9a986d --- /dev/null +++ b/devices/nrf/nrf52811.xml @@ -0,0 +1,118 @@ + + + + + {platform}{family}{series} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52820.xml b/devices/nrf/nrf52820.xml new file mode 100644 index 00000000..0c2af00a --- /dev/null +++ b/devices/nrf/nrf52820.xml @@ -0,0 +1,123 @@ + + + + + {platform}{family}{series} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52832.xml b/devices/nrf/nrf52832.xml new file mode 100644 index 00000000..0d5b3f30 --- /dev/null +++ b/devices/nrf/nrf52832.xml @@ -0,0 +1,148 @@ + + + + + {platform}{family}{series} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52833.xml b/devices/nrf/nrf52833.xml new file mode 100644 index 00000000..127a992d --- /dev/null +++ b/devices/nrf/nrf52833.xml @@ -0,0 +1,188 @@ + + + + + {platform}{family}{series} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52840.xml b/devices/nrf/nrf52840.xml new file mode 100644 index 00000000..672811b4 --- /dev/null +++ b/devices/nrf/nrf52840.xml @@ -0,0 +1,193 @@ + + + + + {platform}{family}{series} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From e66a60d16396ea1d47cc391c56df55f74247309a Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Wed, 13 May 2020 23:14:00 +0200 Subject: [PATCH 05/16] update README.md --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 4f4ad5c3..ee5f5d24 100644 --- a/README.md +++ b/README.md @@ -13,18 +13,19 @@ These tools and this data set is maintained and curated by It is licensed under the MPLv2 license. The CI checks daily for new data: [![](https://travis-ci.org/modm-io/modm-devices.svg?branch=develop)](https://travis-ci.org/modm-io/modm-devices) -Currently data for 3240 devices is available. +Currently data for 3246 devices is available. Please open an issue or better yet a pull request for additional support. | Family | Devices | Family | Devices | Family | Devices | |:--------------|:--------|:--------------|:--------|:--------------|:--------| | AT90 | 12 | ATMEGA | 370 | ATTINY | 148 | -| SAMD | 209 | SAML | 47 | STM32F0 | 168 | -| STM32F1 | 194 | STM32F2 | 71 | STM32F3 | 143 | -| STM32F4 | 340 | STM32F7 | 174 | STM32G0 | 117 | -| STM32G4 | 263 | STM32H7 | 153 | STM32L0 | 307 | -| STM32L1 | 140 | STM32L4 | 353 | STM32WB | 31 | +| NRF52 | 6 | SAMD | 209 | SAML | 47 | +| STM32F0 | 168 | STM32F1 | 194 | STM32F2 | 71 | +| STM32F3 | 143 | STM32F4 | 340 | STM32F7 | 174 | +| STM32G0 | 117 | STM32G4 | 263 | STM32H7 | 153 | +| STM32L0 | 307 | STM32L1 | 140 | STM32L4 | 353 | +| STM32WB | 31 | From ffb3c7f0e0141ab5d825f09394a3872ab55e2f97 Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Thu, 14 May 2020 13:30:21 +0200 Subject: [PATCH 06/16] add package and function (memory variant) to device identifier, read function from linkerscript filenames --- devices/nrf/nrf52810.xml | 4 ++-- devices/nrf/nrf52811.xml | 4 ++-- devices/nrf/nrf52820.xml | 4 ++-- devices/nrf/nrf52832.xml | 4 ++-- devices/nrf/nrf52833.xml | 4 ++-- devices/nrf/nrf52840.xml | 4 ++-- tools/generator/dfg/nrf/nrf_device_tree.py | 17 ++++++++--------- tools/generator/dfg/nrf/nrf_groups.py | 5 ++++- tools/generator/dfg/nrf/nrf_identifier.py | 12 +++++++----- tools/generator/nrf_generator.py | 6 ++---- .../generator/raw-data-extractor/extract-nrf.py | 10 +++++++++- 11 files changed, 42 insertions(+), 32 deletions(-) diff --git a/devices/nrf/nrf52810.xml b/devices/nrf/nrf52810.xml index 92c7d179..2e8e813d 100644 --- a/devices/nrf/nrf52810.xml +++ b/devices/nrf/nrf52810.xml @@ -1,8 +1,8 @@ - - {platform}{family}{series} + + {platform}{family}{series}-{package}{function} diff --git a/devices/nrf/nrf52811.xml b/devices/nrf/nrf52811.xml index 4c9a986d..1bdcc2b6 100644 --- a/devices/nrf/nrf52811.xml +++ b/devices/nrf/nrf52811.xml @@ -1,8 +1,8 @@ - - {platform}{family}{series} + + {platform}{family}{series}-{package}{function} diff --git a/devices/nrf/nrf52820.xml b/devices/nrf/nrf52820.xml index 0c2af00a..a74ecfd6 100644 --- a/devices/nrf/nrf52820.xml +++ b/devices/nrf/nrf52820.xml @@ -1,8 +1,8 @@ - - {platform}{family}{series} + + {platform}{family}{series}-{package}{function} diff --git a/devices/nrf/nrf52832.xml b/devices/nrf/nrf52832.xml index 0d5b3f30..36228b84 100644 --- a/devices/nrf/nrf52832.xml +++ b/devices/nrf/nrf52832.xml @@ -1,8 +1,8 @@ - - {platform}{family}{series} + + {platform}{family}{series}-{package}{function} diff --git a/devices/nrf/nrf52833.xml b/devices/nrf/nrf52833.xml index 127a992d..634fccfe 100644 --- a/devices/nrf/nrf52833.xml +++ b/devices/nrf/nrf52833.xml @@ -1,8 +1,8 @@ - - {platform}{family}{series} + + {platform}{family}{series}-{package}{function} diff --git a/devices/nrf/nrf52840.xml b/devices/nrf/nrf52840.xml index 672811b4..f5960660 100644 --- a/devices/nrf/nrf52840.xml +++ b/devices/nrf/nrf52840.xml @@ -1,8 +1,8 @@ - - {platform}{family}{series} + + {platform}{family}{series}-{package}{function} diff --git a/tools/generator/dfg/nrf/nrf_device_tree.py b/tools/generator/dfg/nrf/nrf_device_tree.py index b38ef598..7f4b25eb 100644 --- a/tools/generator/dfg/nrf/nrf_device_tree.py +++ b/tools/generator/dfg/nrf/nrf_device_tree.py @@ -6,6 +6,8 @@ import math import logging +import re +import os from ..device_tree import DeviceTree from ..input.xml import XMLReader @@ -21,19 +23,16 @@ class NRFDeviceTree: """ @staticmethod - def _properties_from_file(filename): - device_file = XMLReader(filename) + def _properties_from_file(ld_filename): + xml_filename = re.sub('\_\w{4}.ld', '.svd', ld_filename) + device_file = XMLReader(xml_filename) p = {} LOGGER.info("Parsing Device File For '%s'", device_file.query("//device/name")[0]) - partname = device_file.query("//device/name")[0].text - - # dirty hack because af inconsistent part names in .svd files - if partname == 'nrf52': - partname = 'nrf52832' - elif partname == 'nrf51': - partname = 'nrf51822' + partname = ld_filename.split('/')[-1] + partname = partname.split('.')[0] + partname = partname.replace('_', '-') did = NRFIdentifier.from_string(partname.lower()) p['id'] = did diff --git a/tools/generator/dfg/nrf/nrf_groups.py b/tools/generator/dfg/nrf/nrf_groups.py index b3b8aefa..dcca1bab 100644 --- a/tools/generator/dfg/nrf/nrf_groups.py +++ b/tools/generator/dfg/nrf/nrf_groups.py @@ -4,8 +4,11 @@ nrf_groups = \ [ - # NRF52 devices + # NRF5 devices { + 'family': ['51'], + 'series': ['822'] + },{ 'family': ['52'], 'series': ['810', '811', '820', '832', '833', '840'] }, diff --git a/tools/generator/dfg/nrf/nrf_identifier.py b/tools/generator/dfg/nrf/nrf_identifier.py index 8d9bb10e..64a4c303 100644 --- a/tools/generator/dfg/nrf/nrf_identifier.py +++ b/tools/generator/dfg/nrf/nrf_identifier.py @@ -14,10 +14,10 @@ class NRFIdentifier: """ NRFIdentifier - A class to parse NRF device strings, e.g. NRF52840. + A class to parse NRF device strings, e.g. NRF52840-QIAA. Device names are organized as follows: - NRF 52 840 - {platform}{family}{series} + NRF 52 840 - QI AA + {platform}{family}{series}-{package}{function} """ @staticmethod @@ -25,13 +25,15 @@ def from_string(string): string = string.lower() if string.startswith("nrf"): - matchString = r"nrf(?P[0-9]{2})(?P[0-9]{3})" + matchString = r"nrf(?P[0-9]{2})(?P[0-9]{3})-(?P\w{2})(?P\w{2})" match = re.search(matchString, string) if match: - i = DeviceIdentifier("{platform}{family}{series}") + i = DeviceIdentifier("{platform}{family}{series}-{package}{function}") i.set("platform", "nrf") i.set("family", match.group("family").lower()) i.set("series", match.group("series").lower()) + i.set("package", match.group("package").lower()) + i.set("function", match.group("function").lower()) return i diff --git a/tools/generator/nrf_generator.py b/tools/generator/nrf_generator.py index 13017c0b..a70fe08a 100755 --- a/tools/generator/nrf_generator.py +++ b/tools/generator/nrf_generator.py @@ -51,17 +51,15 @@ devices = {} for dev in devs: - xml_path = os.path.join(os.path.dirname(__file__), 'raw-device-data', 'nrf-devices', 'nrf', (dev.lower() + '.svd')) - files = glob.glob(xml_path) + ld_path = os.path.join(os.path.dirname(__file__), 'raw-device-data', 'nrf-devices', 'nrf', (dev.lower() + '_*.ld')) + files = glob.glob(ld_path) for filename in files: - print(filename) device = NRFDeviceTree.from_file(filename) if device is None: continue; devices[device.ids.string] = device if device_depth > 0: device_depth -= 1 else: - print(device.toString()) exit(1) mergedDevices = DeviceMerger.merge(nrf_groups, [d.copy() for d in devices.values()]) diff --git a/tools/generator/raw-data-extractor/extract-nrf.py b/tools/generator/raw-data-extractor/extract-nrf.py index eab49e04..7a1c8df6 100644 --- a/tools/generator/raw-data-extractor/extract-nrf.py +++ b/tools/generator/raw-data-extractor/extract-nrf.py @@ -3,6 +3,7 @@ import zipfile import shutil import io +import glob import os packurl = "https://www.nordicsemi.com/-/media/Software-and-other-downloads/Desktop-software/nRF-MDK/sw/8-33-0/nRF_MDK_8_33_0_GCC_BSDLicense.zip" @@ -18,7 +19,7 @@ print("Extracting...") # remove subfolders, some packs have several chips per pack for zi in z.infolist(): - if zi.filename.endswith(".svd"): + if zi.filename.endswith(".svd") or zi.filename.endswith(".ld"): zi.filename = os.path.basename(zi.filename) print(zi.filename) z.extract(zi, dest) @@ -26,3 +27,10 @@ # dirty hack because af inconsistent part names in .svd files os.rename(dest + '/nrf51.svd', dest + '/nrf51822.svd') os.rename(dest + '/nrf52.svd', dest + '/nrf52832.svd') + + for f in glob.glob(dest + '/nrf51_*.ld'): + os.remove(f) + for f in glob.glob(dest + '/nrf52_*.ld'): + os.remove(f) + for f in glob.glob(dest + '/nrf_common.ld'): + os.remove(f) From 5f560c38bd42b55723e3247ba02adf7c043b2662 Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Thu, 14 May 2020 13:37:31 +0200 Subject: [PATCH 07/16] use {platform}{family} as device driver type --- devices/nrf/nrf52810.xml | 82 ++++++------ devices/nrf/nrf52811.xml | 88 ++++++------- devices/nrf/nrf52820.xml | 100 +++++++-------- devices/nrf/nrf52832.xml | 128 +++++++++---------- devices/nrf/nrf52833.xml | 136 ++++++++++---------- devices/nrf/nrf52840.xml | 142 ++++++++++----------- tools/generator/dfg/nrf/nrf_device_tree.py | 2 +- 7 files changed, 339 insertions(+), 339 deletions(-) diff --git a/devices/nrf/nrf52810.xml b/devices/nrf/nrf52810.xml index 2e8e813d..e1a907ef 100644 --- a/devices/nrf/nrf52810.xml +++ b/devices/nrf/nrf52810.xml @@ -36,47 +36,47 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52811.xml b/devices/nrf/nrf52811.xml index 1bdcc2b6..51cf1e1c 100644 --- a/devices/nrf/nrf52811.xml +++ b/devices/nrf/nrf52811.xml @@ -36,50 +36,50 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52820.xml b/devices/nrf/nrf52820.xml index a74ecfd6..c3dc1e1a 100644 --- a/devices/nrf/nrf52820.xml +++ b/devices/nrf/nrf52820.xml @@ -35,56 +35,56 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52832.xml b/devices/nrf/nrf52832.xml index 36228b84..feb59407 100644 --- a/devices/nrf/nrf52832.xml +++ b/devices/nrf/nrf52832.xml @@ -46,70 +46,70 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52833.xml b/devices/nrf/nrf52833.xml index 634fccfe..1c124793 100644 --- a/devices/nrf/nrf52833.xml +++ b/devices/nrf/nrf52833.xml @@ -50,74 +50,74 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52840.xml b/devices/nrf/nrf52840.xml index f5960660..c9be7fa2 100644 --- a/devices/nrf/nrf52840.xml +++ b/devices/nrf/nrf52840.xml @@ -52,77 +52,77 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/generator/dfg/nrf/nrf_device_tree.py b/tools/generator/dfg/nrf/nrf_device_tree.py index 7f4b25eb..0369480d 100644 --- a/tools/generator/dfg/nrf/nrf_device_tree.py +++ b/tools/generator/dfg/nrf/nrf_device_tree.py @@ -181,7 +181,7 @@ def driverOrder(e): for name, instances in modules.items(): driver = tree.addChild('driver') dtype = name - compatible = 'nrf' + compatible = p['id']['platform'] + p['id']['family'] driver.setAttributes('name', dtype, 'type', compatible) # Add all instances to this driver From 8c9acf3873f30c0c808424202732f7c99777e042 Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Thu, 14 May 2020 13:41:43 +0200 Subject: [PATCH 08/16] update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ee5f5d24..0fea2987 100644 --- a/README.md +++ b/README.md @@ -13,14 +13,14 @@ These tools and this data set is maintained and curated by It is licensed under the MPLv2 license. The CI checks daily for new data: [![](https://travis-ci.org/modm-io/modm-devices.svg?branch=develop)](https://travis-ci.org/modm-io/modm-devices) -Currently data for 3246 devices is available. +Currently data for 3247 devices is available. Please open an issue or better yet a pull request for additional support. | Family | Devices | Family | Devices | Family | Devices | |:--------------|:--------|:--------------|:--------|:--------------|:--------| | AT90 | 12 | ATMEGA | 370 | ATTINY | 148 | -| NRF52 | 6 | SAMD | 209 | SAML | 47 | +| NRF52 | 7 | SAMD | 209 | SAML | 47 | | STM32F0 | 168 | STM32F1 | 194 | STM32F2 | 71 | | STM32F3 | 143 | STM32F4 | 340 | STM32F7 | 174 | | STM32G0 | 117 | STM32G4 | 263 | STM32H7 | 153 | From 88bfc6cfbcae7787ac7da222511518d88575a534 Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Thu, 14 May 2020 14:10:44 +0200 Subject: [PATCH 09/16] extract memory size and location from linkerscripts --- devices/nrf/nrf52810.xml | 7 ++--- devices/nrf/nrf52811.xml | 7 ++--- devices/nrf/nrf52820.xml | 7 ++--- devices/nrf/nrf52832.xml | 10 ++++--- devices/nrf/nrf52833.xml | 7 ++--- devices/nrf/nrf52840.xml | 8 ++--- tools/generator/dfg/nrf/nrf_device_tree.py | 35 +++++++++++++++++----- 7 files changed, 50 insertions(+), 31 deletions(-) diff --git a/devices/nrf/nrf52810.xml b/devices/nrf/nrf52810.xml index e1a907ef..600e307c 100644 --- a/devices/nrf/nrf52810.xml +++ b/devices/nrf/nrf52810.xml @@ -31,10 +31,9 @@ - - - - + + + diff --git a/devices/nrf/nrf52811.xml b/devices/nrf/nrf52811.xml index 51cf1e1c..bbfa5ec1 100644 --- a/devices/nrf/nrf52811.xml +++ b/devices/nrf/nrf52811.xml @@ -31,10 +31,9 @@ - - - - + + + diff --git a/devices/nrf/nrf52820.xml b/devices/nrf/nrf52820.xml index c3dc1e1a..21458149 100644 --- a/devices/nrf/nrf52820.xml +++ b/devices/nrf/nrf52820.xml @@ -30,10 +30,9 @@ - - - - + + + diff --git a/devices/nrf/nrf52832.xml b/devices/nrf/nrf52832.xml index feb59407..65d1f458 100644 --- a/devices/nrf/nrf52832.xml +++ b/devices/nrf/nrf52832.xml @@ -41,10 +41,12 @@ - - - - + + + + + + diff --git a/devices/nrf/nrf52833.xml b/devices/nrf/nrf52833.xml index 1c124793..73e89061 100644 --- a/devices/nrf/nrf52833.xml +++ b/devices/nrf/nrf52833.xml @@ -45,10 +45,9 @@ - - - - + + + diff --git a/devices/nrf/nrf52840.xml b/devices/nrf/nrf52840.xml index c9be7fa2..6a78fd3b 100644 --- a/devices/nrf/nrf52840.xml +++ b/devices/nrf/nrf52840.xml @@ -47,10 +47,10 @@ - - - - + + + + diff --git a/tools/generator/dfg/nrf/nrf_device_tree.py b/tools/generator/dfg/nrf/nrf_device_tree.py index 0369480d..2d5dfa77 100644 --- a/tools/generator/dfg/nrf/nrf_device_tree.py +++ b/tools/generator/dfg/nrf/nrf_device_tree.py @@ -43,15 +43,36 @@ def _properties_from_file(ld_filename): core += "f" p["core"] = core + # find the values for flash and ram - # FIXME load from Linkerfile + memlines = [] + with open(ld_filename, 'r') as linkerfile: + status = 0 + for line in linkerfile: + if status == 0 and "MEMORY" in line: + status = 1 + elif status == 1 and "{" in line: + status = 2 + elif status == 2: + if "}" in line: + status = 3 + else: + memlines.append(line) + memories = [] - memories.append({"name":'flash', "access":"rx", "size":str(int("0x100000", 16)), "start":"0x00000000"}) - memories.append({"name":'extflash', "access":"rx", "size":str(int("0x8000000", 16)), "start":"0x12000000"}) - memories.append({"name":'ram', "access":"rwx", "size":str(int("0x40000", 16)), "start":"0x20000000"}) - memories.append({"name":'code_ram', "access":"rwx", "size":str(int("0x40000", 16)), "start":"0x800000"}) + + for memline in memlines: + matchString = r" (?P\w*) \((?P\w*)\) : ORIGIN = (?P0x\d*), LENGTH = (?P0x\d*)" + match = re.search(matchString, memline) + memories.append({ + "name": match.group("name").lower(), + "access": match.group("access").lower(), + "size": match.group("size").lower(), + "start": match.group("start").lower()}) + p["memories"] = memories + raw_modules = device_file.query("//peripherals/peripheral") modules = [] ports = {} @@ -149,13 +170,13 @@ def driverOrder(e): core_child = tree.addChild('driver') core_child.setAttributes('name', 'core', 'type', p['core']) core_child.addSortKey(lambda e: (int(e['position']), e['name']) if e.name == 'vector' else (-1, "")) - core_child.addSortKey(lambda e: (e['name'], int(e['size'])) if e.name == 'memory' else ("", -1)) + core_child.addSortKey(lambda e: (e['name'], int(e['size'], 16)) if e.name == 'memory' else ("", -1)) for section in p["memories"]: memory_section = core_child.addChild("memory") memory_section.setAttributes(["name", "access", "start", "size"], section) # sort the node children by start address and size - core_child.addSortKey(lambda e: (int(e["start"], 16), int(e["size"])) if e.name == "memory" else (-1, -1)) + core_child.addSortKey(lambda e: (int(e["start"], 16), int(e["size"], 16)) if e.name == "memory" else (-1, -1)) # for memory in ['flash', 'ram', 'lpram', 'eeprom']: # if memory not in p: continue; From 51fedffd7f243441699caad853e12d985a6e8020 Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Thu, 14 May 2020 14:42:54 +0200 Subject: [PATCH 10/16] make memory size base 10 instead of hexadecimal --- devices/nrf/nrf52810.xml | 6 +++--- devices/nrf/nrf52811.xml | 6 +++--- devices/nrf/nrf52820.xml | 6 +++--- devices/nrf/nrf52832.xml | 12 ++++++------ devices/nrf/nrf52833.xml | 6 +++--- devices/nrf/nrf52840.xml | 8 ++++---- tools/generator/dfg/nrf/nrf_device_tree.py | 6 +++--- 7 files changed, 25 insertions(+), 25 deletions(-) diff --git a/devices/nrf/nrf52810.xml b/devices/nrf/nrf52810.xml index 600e307c..3cee1e74 100644 --- a/devices/nrf/nrf52810.xml +++ b/devices/nrf/nrf52810.xml @@ -31,9 +31,9 @@ - - - + + + diff --git a/devices/nrf/nrf52811.xml b/devices/nrf/nrf52811.xml index bbfa5ec1..f62f2420 100644 --- a/devices/nrf/nrf52811.xml +++ b/devices/nrf/nrf52811.xml @@ -31,9 +31,9 @@ - - - + + + diff --git a/devices/nrf/nrf52820.xml b/devices/nrf/nrf52820.xml index 21458149..c6a3e16b 100644 --- a/devices/nrf/nrf52820.xml +++ b/devices/nrf/nrf52820.xml @@ -30,9 +30,9 @@ - - - + + + diff --git a/devices/nrf/nrf52832.xml b/devices/nrf/nrf52832.xml index 65d1f458..0cc20a52 100644 --- a/devices/nrf/nrf52832.xml +++ b/devices/nrf/nrf52832.xml @@ -41,12 +41,12 @@ - - - - - - + + + + + + diff --git a/devices/nrf/nrf52833.xml b/devices/nrf/nrf52833.xml index 73e89061..df5a8411 100644 --- a/devices/nrf/nrf52833.xml +++ b/devices/nrf/nrf52833.xml @@ -45,9 +45,9 @@ - - - + + + diff --git a/devices/nrf/nrf52840.xml b/devices/nrf/nrf52840.xml index 6a78fd3b..c9be7fa2 100644 --- a/devices/nrf/nrf52840.xml +++ b/devices/nrf/nrf52840.xml @@ -47,10 +47,10 @@ - - - - + + + + diff --git a/tools/generator/dfg/nrf/nrf_device_tree.py b/tools/generator/dfg/nrf/nrf_device_tree.py index 2d5dfa77..7e74d549 100644 --- a/tools/generator/dfg/nrf/nrf_device_tree.py +++ b/tools/generator/dfg/nrf/nrf_device_tree.py @@ -67,7 +67,7 @@ def _properties_from_file(ld_filename): memories.append({ "name": match.group("name").lower(), "access": match.group("access").lower(), - "size": match.group("size").lower(), + "size": str(int(match.group("size").lower(), 16)), "start": match.group("start").lower()}) p["memories"] = memories @@ -170,13 +170,13 @@ def driverOrder(e): core_child = tree.addChild('driver') core_child.setAttributes('name', 'core', 'type', p['core']) core_child.addSortKey(lambda e: (int(e['position']), e['name']) if e.name == 'vector' else (-1, "")) - core_child.addSortKey(lambda e: (e['name'], int(e['size'], 16)) if e.name == 'memory' else ("", -1)) + core_child.addSortKey(lambda e: (e['name'], int(e['size'])) if e.name == 'memory' else ("", -1)) for section in p["memories"]: memory_section = core_child.addChild("memory") memory_section.setAttributes(["name", "access", "start", "size"], section) # sort the node children by start address and size - core_child.addSortKey(lambda e: (int(e["start"], 16), int(e["size"], 16)) if e.name == "memory" else (-1, -1)) + core_child.addSortKey(lambda e: (int(e["start"], 16), int(e["size"])) if e.name == "memory" else (-1, -1)) # for memory in ['flash', 'ram', 'lpram', 'eeprom']: # if memory not in p: continue; From 148b72a1dd541623f4174124e5a7537b1661ae55 Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Fri, 15 May 2020 11:22:31 +0200 Subject: [PATCH 11/16] extract device instances from *.svd --- devices/nrf/nrf52810.xml | 70 +++++++++---- devices/nrf/nrf52811.xml | 76 +++++++++----- devices/nrf/nrf52820.xml | 88 ++++++++++------ devices/nrf/nrf52832.xml | 106 +++++++++++-------- devices/nrf/nrf52833.xml | 112 +++++++++++++-------- devices/nrf/nrf52840.xml | 112 +++++++++++++-------- tools/generator/dfg/nrf/nrf_device_tree.py | 8 +- tools/generator/nrf_generator.py | 2 +- 8 files changed, 365 insertions(+), 209 deletions(-) diff --git a/devices/nrf/nrf52810.xml b/devices/nrf/nrf52810.xml index 3cee1e74..0a2362d0 100644 --- a/devices/nrf/nrf52810.xml +++ b/devices/nrf/nrf52810.xml @@ -41,39 +41,65 @@ - - + + + + - + + + - - + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52811.xml b/devices/nrf/nrf52811.xml index f62f2420..64cd7d3f 100644 --- a/devices/nrf/nrf52811.xml +++ b/devices/nrf/nrf52811.xml @@ -41,42 +41,68 @@ - - + + + + - + + + - - + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52820.xml b/devices/nrf/nrf52820.xml index c6a3e16b..bd3bddcb 100644 --- a/devices/nrf/nrf52820.xml +++ b/devices/nrf/nrf52820.xml @@ -40,12 +40,14 @@ - - - - - - + + + + + + + + @@ -54,33 +56,55 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52832.xml b/devices/nrf/nrf52832.xml index 0cc20a52..04ef668f 100644 --- a/devices/nrf/nrf52832.xml +++ b/devices/nrf/nrf52832.xml @@ -54,12 +54,14 @@ - - - - - - + + + + + + + + @@ -71,45 +73,69 @@ - - - + + + + + - - - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52833.xml b/devices/nrf/nrf52833.xml index df5a8411..acc8c0dd 100644 --- a/devices/nrf/nrf52833.xml +++ b/devices/nrf/nrf52833.xml @@ -55,12 +55,14 @@ - - - - - - + + + + + + + + @@ -72,48 +74,72 @@ - - - - + + + + + + - - - + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52840.xml b/devices/nrf/nrf52840.xml index c9be7fa2..b81aa009 100644 --- a/devices/nrf/nrf52840.xml +++ b/devices/nrf/nrf52840.xml @@ -60,12 +60,14 @@ - - - - - - + + + + + + + + @@ -77,49 +79,73 @@ - - - - + + + + + + - - - + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/generator/dfg/nrf/nrf_device_tree.py b/tools/generator/dfg/nrf/nrf_device_tree.py index 7e74d549..f20aace5 100644 --- a/tools/generator/dfg/nrf/nrf_device_tree.py +++ b/tools/generator/dfg/nrf/nrf_device_tree.py @@ -28,8 +28,6 @@ def _properties_from_file(ld_filename): device_file = XMLReader(xml_filename) p = {} - LOGGER.info("Parsing Device File For '%s'", device_file.query("//device/name")[0]) - partname = ld_filename.split('/')[-1] partname = partname.split('.')[0] partname = partname.replace('_', '-') @@ -37,6 +35,8 @@ def _properties_from_file(ld_filename): did = NRFIdentifier.from_string(partname.lower()) p['id'] = did + LOGGER.info("Parsing '%s'", did.string) + # information about the core and architecture core = device_file.query("//device/cpu/name")[0].text.lower().replace("cm", "cortex-m") if device_file.query("//device/cpu/fpuPresent")[0].text == '1': @@ -92,7 +92,9 @@ def _properties_from_file(ld_filename): gpios.append((modulename, str(i))) else: - modules.append({'module': modulename.lower(), 'instance': modulename.lower()}) + matchString = r"(?P.*\D)(?P\d*$)" + match = re.search(matchString, modulename) + modules.append({'module': match.group("module").lower(), 'instance': modulename.lower()}) p['modules'] = sorted(list(set([(m['module'], m['instance']) for m in modules]))) p['gpios'] = gpios p['signals'] = [] diff --git a/tools/generator/nrf_generator.py b/tools/generator/nrf_generator.py index a70fe08a..bf6e8c1c 100755 --- a/tools/generator/nrf_generator.py +++ b/tools/generator/nrf_generator.py @@ -22,7 +22,7 @@ LOGGER = logging.getLogger('dfg.nrf') if __name__ == "__main__": - loglevel = 'DEBUG' + loglevel = 'INFO' devs = [] device_depth = 1e6 simulate = False From 41358aef0c490e08c317a4b3b182ec31f88defa9 Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Mon, 25 May 2020 12:12:07 +0200 Subject: [PATCH 12/16] WIP extract signals from *.svd --- devices/nrf/nrf52810.xml | 1056 +++- devices/nrf/nrf52811.xml | 1408 ++++- devices/nrf/nrf52820.xml | 1504 +++++- devices/nrf/nrf52832.xml | 1856 ++++++- devices/nrf/nrf52833.xml | 5056 +++++++++++++++++- devices/nrf/nrf52840.xml | 5376 +++++++++++++++++++- tools/generator/dfg/nrf/nrf_device_tree.py | 47 +- 7 files changed, 16039 insertions(+), 264 deletions(-) diff --git a/devices/nrf/nrf52810.xml b/devices/nrf/nrf52810.xml index 0a2362d0..c4a9087b 100644 --- a/devices/nrf/nrf52810.xml +++ b/devices/nrf/nrf52810.xml @@ -103,38 +103,1030 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52811.xml b/devices/nrf/nrf52811.xml index 64cd7d3f..4cf412ef 100644 --- a/devices/nrf/nrf52811.xml +++ b/devices/nrf/nrf52811.xml @@ -106,38 +106,1382 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52820.xml b/devices/nrf/nrf52820.xml index bd3bddcb..4ec7f9c9 100644 --- a/devices/nrf/nrf52820.xml +++ b/devices/nrf/nrf52820.xml @@ -109,38 +109,1478 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52832.xml b/devices/nrf/nrf52832.xml index 04ef668f..810a93a2 100644 --- a/devices/nrf/nrf52832.xml +++ b/devices/nrf/nrf52832.xml @@ -139,38 +139,1830 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52833.xml b/devices/nrf/nrf52833.xml index acc8c0dd..6458d312 100644 --- a/devices/nrf/nrf52833.xml +++ b/devices/nrf/nrf52833.xml @@ -144,70 +144,4998 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52840.xml b/devices/nrf/nrf52840.xml index b81aa009..069af2b0 100644 --- a/devices/nrf/nrf52840.xml +++ b/devices/nrf/nrf52840.xml @@ -150,70 +150,5318 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/generator/dfg/nrf/nrf_device_tree.py b/tools/generator/dfg/nrf/nrf_device_tree.py index f20aace5..8ca28cbd 100644 --- a/tools/generator/dfg/nrf/nrf_device_tree.py +++ b/tools/generator/dfg/nrf/nrf_device_tree.py @@ -73,6 +73,24 @@ def _properties_from_file(ld_filename): p["memories"] = memories + # Signals FIXME continue here, find derived peripherals + signals = {} + raw_signals = device_file.query("//peripherals/peripheral/registers/cluster") + for s in raw_signals: + if s.find('name').text == "PSEL": + + # find parent peripheral + parent_peripheral_instance = s.getparent().getparent().find('name').text.lower() + signals[parent_peripheral_instance] = [] + + # find all signals of peripheral + signal_elements = s.findall('register/name') + for signal_element in signal_elements: + signal_name = signal_element.text.lower() + signals[parent_peripheral_instance].append(signal_name) + + + # drivers and gpios raw_modules = device_file.query("//peripherals/peripheral") modules = [] ports = {} @@ -95,9 +113,21 @@ def _properties_from_file(ld_filename): matchString = r"(?P.*\D)(?P\d*$)" match = re.search(matchString, modulename) modules.append({'module': match.group("module").lower(), 'instance': modulename.lower()}) + + # copy available signals to all derived peripherals + if m.get('derivedFrom') is not None: + if m.get('derivedFrom').lower() in signals: + print(modulename.lower() + " is derived from " + m.get('derivedFrom').lower()) + signals[modulename.lower()] = signals[m.get('derivedFrom').lower()] p['modules'] = sorted(list(set([(m['module'], m['instance']) for m in modules]))) p['gpios'] = gpios p['signals'] = [] + for instance in signals: + for signal in signals[instance]: + matchString = r"(?P.*\D)(?P\d*$)" + match = re.search(matchString, instance) + p['signals'].append({'driver': match.group("module").lower(), 'instance': instance, 'name': signal}) + interrupts = [] raw_interrupt = device_file.query("//peripherals/peripheral/interrupt") @@ -114,12 +144,12 @@ def _properties_from_file(ld_filename): LOGGER.debug("Found GPIOs: [%s]", ", ".join([p.upper() + "." + i for p,i in p['gpios']])) LOGGER.debug("Available Modules are:\n" + NRFDeviceTree._modulesToString(p['modules'])) - # LOGGER.debug("Found Signals:") - # for sig in p['signals']: - # LOGGER.debug(" %s", sig) - # LOGGER.debug("Found Interrupts:") - # for intr in p['interrupts']: - # LOGGER.debug(" %s", intr) + LOGGER.debug("Found Signals:") + for sig in p['signals']: + LOGGER.debug(" %s", sig) + LOGGER.debug("Found Interrupts:") + for intr in p['interrupts']: + LOGGER.debug(" %s", intr) return p @@ -225,8 +255,8 @@ def driverOrder(e): e['instance'] if e['instance'] is not None else '', e['name'] if e['name'] is not None else '')) # add all signals - for s in [s for s in p['signals'] if s['pad'] == ("p" + port + pin)]: - driver, instance, name = s['module'], s['instance'], s['group'] + for s in p['signals']: + driver, instance, name = s['driver'], s['instance'], s['name'] # add the af node pin_signal = {'driver': driver} if instance != driver: @@ -239,6 +269,7 @@ def driverOrder(e): if "name" not in pin_signal: LOGGER.error("%s has no name!", s) continue + af = pin_driver.addChild('signal') af.setAttributes(['driver', 'instance', 'name'], pin_signal) From 747f3c465e670a1492a0ba4382af7f5dfff7c4df Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Mon, 25 May 2020 13:44:01 +0200 Subject: [PATCH 13/16] omit the leading P of the port names --- devices/nrf/nrf52810.xml | 64 +++++------ devices/nrf/nrf52811.xml | 64 +++++------ devices/nrf/nrf52820.xml | 64 +++++------ devices/nrf/nrf52832.xml | 64 +++++------ devices/nrf/nrf52833.xml | 128 ++++++++++----------- devices/nrf/nrf52840.xml | 128 ++++++++++----------- tools/generator/dfg/nrf/nrf_device_tree.py | 8 +- 7 files changed, 261 insertions(+), 259 deletions(-) diff --git a/devices/nrf/nrf52810.xml b/devices/nrf/nrf52810.xml index c4a9087b..94114d1b 100644 --- a/devices/nrf/nrf52810.xml +++ b/devices/nrf/nrf52810.xml @@ -103,7 +103,7 @@ - + @@ -135,7 +135,7 @@ - + @@ -167,7 +167,7 @@ - + @@ -199,7 +199,7 @@ - + @@ -231,7 +231,7 @@ - + @@ -263,7 +263,7 @@ - + @@ -295,7 +295,7 @@ - + @@ -327,7 +327,7 @@ - + @@ -359,7 +359,7 @@ - + @@ -391,7 +391,7 @@ - + @@ -423,7 +423,7 @@ - + @@ -455,7 +455,7 @@ - + @@ -487,7 +487,7 @@ - + @@ -519,7 +519,7 @@ - + @@ -551,7 +551,7 @@ - + @@ -583,7 +583,7 @@ - + @@ -615,7 +615,7 @@ - + @@ -647,7 +647,7 @@ - + @@ -679,7 +679,7 @@ - + @@ -711,7 +711,7 @@ - + @@ -743,7 +743,7 @@ - + @@ -775,7 +775,7 @@ - + @@ -807,7 +807,7 @@ - + @@ -839,7 +839,7 @@ - + @@ -871,7 +871,7 @@ - + @@ -903,7 +903,7 @@ - + @@ -935,7 +935,7 @@ - + @@ -967,7 +967,7 @@ - + @@ -999,7 +999,7 @@ - + @@ -1031,7 +1031,7 @@ - + @@ -1063,7 +1063,7 @@ - + @@ -1095,7 +1095,7 @@ - + diff --git a/devices/nrf/nrf52811.xml b/devices/nrf/nrf52811.xml index 4cf412ef..a5cf3484 100644 --- a/devices/nrf/nrf52811.xml +++ b/devices/nrf/nrf52811.xml @@ -106,7 +106,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -192,7 +192,7 @@ - + @@ -235,7 +235,7 @@ - + @@ -278,7 +278,7 @@ - + @@ -321,7 +321,7 @@ - + @@ -364,7 +364,7 @@ - + @@ -407,7 +407,7 @@ - + @@ -450,7 +450,7 @@ - + @@ -493,7 +493,7 @@ - + @@ -536,7 +536,7 @@ - + @@ -579,7 +579,7 @@ - + @@ -622,7 +622,7 @@ - + @@ -665,7 +665,7 @@ - + @@ -708,7 +708,7 @@ - + @@ -751,7 +751,7 @@ - + @@ -794,7 +794,7 @@ - + @@ -837,7 +837,7 @@ - + @@ -880,7 +880,7 @@ - + @@ -923,7 +923,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -1009,7 +1009,7 @@ - + @@ -1052,7 +1052,7 @@ - + @@ -1095,7 +1095,7 @@ - + @@ -1138,7 +1138,7 @@ - + @@ -1181,7 +1181,7 @@ - + @@ -1224,7 +1224,7 @@ - + @@ -1267,7 +1267,7 @@ - + @@ -1310,7 +1310,7 @@ - + @@ -1353,7 +1353,7 @@ - + @@ -1396,7 +1396,7 @@ - + @@ -1439,7 +1439,7 @@ - + diff --git a/devices/nrf/nrf52820.xml b/devices/nrf/nrf52820.xml index 4ec7f9c9..58fb138b 100644 --- a/devices/nrf/nrf52820.xml +++ b/devices/nrf/nrf52820.xml @@ -109,7 +109,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -201,7 +201,7 @@ - + @@ -247,7 +247,7 @@ - + @@ -293,7 +293,7 @@ - + @@ -339,7 +339,7 @@ - + @@ -385,7 +385,7 @@ - + @@ -431,7 +431,7 @@ - + @@ -477,7 +477,7 @@ - + @@ -523,7 +523,7 @@ - + @@ -569,7 +569,7 @@ - + @@ -615,7 +615,7 @@ - + @@ -661,7 +661,7 @@ - + @@ -707,7 +707,7 @@ - + @@ -753,7 +753,7 @@ - + @@ -799,7 +799,7 @@ - + @@ -845,7 +845,7 @@ - + @@ -891,7 +891,7 @@ - + @@ -937,7 +937,7 @@ - + @@ -983,7 +983,7 @@ - + @@ -1029,7 +1029,7 @@ - + @@ -1075,7 +1075,7 @@ - + @@ -1121,7 +1121,7 @@ - + @@ -1167,7 +1167,7 @@ - + @@ -1213,7 +1213,7 @@ - + @@ -1259,7 +1259,7 @@ - + @@ -1305,7 +1305,7 @@ - + @@ -1351,7 +1351,7 @@ - + @@ -1397,7 +1397,7 @@ - + @@ -1443,7 +1443,7 @@ - + @@ -1489,7 +1489,7 @@ - + @@ -1535,7 +1535,7 @@ - + diff --git a/devices/nrf/nrf52832.xml b/devices/nrf/nrf52832.xml index 810a93a2..9bd7b44c 100644 --- a/devices/nrf/nrf52832.xml +++ b/devices/nrf/nrf52832.xml @@ -139,7 +139,7 @@ - + @@ -196,7 +196,7 @@ - + @@ -253,7 +253,7 @@ - + @@ -310,7 +310,7 @@ - + @@ -367,7 +367,7 @@ - + @@ -424,7 +424,7 @@ - + @@ -481,7 +481,7 @@ - + @@ -538,7 +538,7 @@ - + @@ -595,7 +595,7 @@ - + @@ -652,7 +652,7 @@ - + @@ -709,7 +709,7 @@ - + @@ -766,7 +766,7 @@ - + @@ -823,7 +823,7 @@ - + @@ -880,7 +880,7 @@ - + @@ -937,7 +937,7 @@ - + @@ -994,7 +994,7 @@ - + @@ -1051,7 +1051,7 @@ - + @@ -1108,7 +1108,7 @@ - + @@ -1165,7 +1165,7 @@ - + @@ -1222,7 +1222,7 @@ - + @@ -1279,7 +1279,7 @@ - + @@ -1336,7 +1336,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1450,7 +1450,7 @@ - + @@ -1507,7 +1507,7 @@ - + @@ -1564,7 +1564,7 @@ - + @@ -1621,7 +1621,7 @@ - + @@ -1678,7 +1678,7 @@ - + @@ -1735,7 +1735,7 @@ - + @@ -1792,7 +1792,7 @@ - + @@ -1849,7 +1849,7 @@ - + @@ -1906,7 +1906,7 @@ - + diff --git a/devices/nrf/nrf52833.xml b/devices/nrf/nrf52833.xml index 6458d312..9eea4484 100644 --- a/devices/nrf/nrf52833.xml +++ b/devices/nrf/nrf52833.xml @@ -144,7 +144,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -300,7 +300,7 @@ - + @@ -378,7 +378,7 @@ - + @@ -456,7 +456,7 @@ - + @@ -534,7 +534,7 @@ - + @@ -612,7 +612,7 @@ - + @@ -690,7 +690,7 @@ - + @@ -768,7 +768,7 @@ - + @@ -846,7 +846,7 @@ - + @@ -924,7 +924,7 @@ - + @@ -1002,7 +1002,7 @@ - + @@ -1080,7 +1080,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1236,7 +1236,7 @@ - + @@ -1314,7 +1314,7 @@ - + @@ -1392,7 +1392,7 @@ - + @@ -1470,7 +1470,7 @@ - + @@ -1548,7 +1548,7 @@ - + @@ -1626,7 +1626,7 @@ - + @@ -1704,7 +1704,7 @@ - + @@ -1782,7 +1782,7 @@ - + @@ -1860,7 +1860,7 @@ - + @@ -1938,7 +1938,7 @@ - + @@ -2016,7 +2016,7 @@ - + @@ -2094,7 +2094,7 @@ - + @@ -2172,7 +2172,7 @@ - + @@ -2250,7 +2250,7 @@ - + @@ -2328,7 +2328,7 @@ - + @@ -2406,7 +2406,7 @@ - + @@ -2484,7 +2484,7 @@ - + @@ -2562,7 +2562,7 @@ - + @@ -2640,7 +2640,7 @@ - + @@ -2718,7 +2718,7 @@ - + @@ -2796,7 +2796,7 @@ - + @@ -2874,7 +2874,7 @@ - + @@ -2952,7 +2952,7 @@ - + @@ -3030,7 +3030,7 @@ - + @@ -3108,7 +3108,7 @@ - + @@ -3186,7 +3186,7 @@ - + @@ -3264,7 +3264,7 @@ - + @@ -3342,7 +3342,7 @@ - + @@ -3420,7 +3420,7 @@ - + @@ -3498,7 +3498,7 @@ - + @@ -3576,7 +3576,7 @@ - + @@ -3654,7 +3654,7 @@ - + @@ -3732,7 +3732,7 @@ - + @@ -3810,7 +3810,7 @@ - + @@ -3888,7 +3888,7 @@ - + @@ -3966,7 +3966,7 @@ - + @@ -4044,7 +4044,7 @@ - + @@ -4122,7 +4122,7 @@ - + @@ -4200,7 +4200,7 @@ - + @@ -4278,7 +4278,7 @@ - + @@ -4356,7 +4356,7 @@ - + @@ -4434,7 +4434,7 @@ - + @@ -4512,7 +4512,7 @@ - + @@ -4590,7 +4590,7 @@ - + @@ -4668,7 +4668,7 @@ - + @@ -4746,7 +4746,7 @@ - + @@ -4824,7 +4824,7 @@ - + @@ -4902,7 +4902,7 @@ - + @@ -4980,7 +4980,7 @@ - + @@ -5058,7 +5058,7 @@ - + diff --git a/devices/nrf/nrf52840.xml b/devices/nrf/nrf52840.xml index 069af2b0..4300568b 100644 --- a/devices/nrf/nrf52840.xml +++ b/devices/nrf/nrf52840.xml @@ -150,7 +150,7 @@ - + @@ -233,7 +233,7 @@ - + @@ -316,7 +316,7 @@ - + @@ -399,7 +399,7 @@ - + @@ -482,7 +482,7 @@ - + @@ -565,7 +565,7 @@ - + @@ -648,7 +648,7 @@ - + @@ -731,7 +731,7 @@ - + @@ -814,7 +814,7 @@ - + @@ -897,7 +897,7 @@ - + @@ -980,7 +980,7 @@ - + @@ -1063,7 +1063,7 @@ - + @@ -1146,7 +1146,7 @@ - + @@ -1229,7 +1229,7 @@ - + @@ -1312,7 +1312,7 @@ - + @@ -1395,7 +1395,7 @@ - + @@ -1478,7 +1478,7 @@ - + @@ -1561,7 +1561,7 @@ - + @@ -1644,7 +1644,7 @@ - + @@ -1727,7 +1727,7 @@ - + @@ -1810,7 +1810,7 @@ - + @@ -1893,7 +1893,7 @@ - + @@ -1976,7 +1976,7 @@ - + @@ -2059,7 +2059,7 @@ - + @@ -2142,7 +2142,7 @@ - + @@ -2225,7 +2225,7 @@ - + @@ -2308,7 +2308,7 @@ - + @@ -2391,7 +2391,7 @@ - + @@ -2474,7 +2474,7 @@ - + @@ -2557,7 +2557,7 @@ - + @@ -2640,7 +2640,7 @@ - + @@ -2723,7 +2723,7 @@ - + @@ -2806,7 +2806,7 @@ - + @@ -2889,7 +2889,7 @@ - + @@ -2972,7 +2972,7 @@ - + @@ -3055,7 +3055,7 @@ - + @@ -3138,7 +3138,7 @@ - + @@ -3221,7 +3221,7 @@ - + @@ -3304,7 +3304,7 @@ - + @@ -3387,7 +3387,7 @@ - + @@ -3470,7 +3470,7 @@ - + @@ -3553,7 +3553,7 @@ - + @@ -3636,7 +3636,7 @@ - + @@ -3719,7 +3719,7 @@ - + @@ -3802,7 +3802,7 @@ - + @@ -3885,7 +3885,7 @@ - + @@ -3968,7 +3968,7 @@ - + @@ -4051,7 +4051,7 @@ - + @@ -4134,7 +4134,7 @@ - + @@ -4217,7 +4217,7 @@ - + @@ -4300,7 +4300,7 @@ - + @@ -4383,7 +4383,7 @@ - + @@ -4466,7 +4466,7 @@ - + @@ -4549,7 +4549,7 @@ - + @@ -4632,7 +4632,7 @@ - + @@ -4715,7 +4715,7 @@ - + @@ -4798,7 +4798,7 @@ - + @@ -4881,7 +4881,7 @@ - + @@ -4964,7 +4964,7 @@ - + @@ -5047,7 +5047,7 @@ - + @@ -5130,7 +5130,7 @@ - + @@ -5213,7 +5213,7 @@ - + @@ -5296,7 +5296,7 @@ - + @@ -5379,7 +5379,7 @@ - + diff --git a/tools/generator/dfg/nrf/nrf_device_tree.py b/tools/generator/dfg/nrf/nrf_device_tree.py index 8ca28cbd..3ca956d4 100644 --- a/tools/generator/dfg/nrf/nrf_device_tree.py +++ b/tools/generator/dfg/nrf/nrf_device_tree.py @@ -100,14 +100,16 @@ def _properties_from_file(ld_filename): moduledesc = m.find('description').text if "GPIO Port" in moduledesc: + # omit the leading P of the port names, also of the derived ports + portnumber = modulename[1:] if m.get('derivedFrom') is not None: - portsize = ports[m.get('derivedFrom')] + portsize = ports[m.get('derivedFrom')[1:]] else: portsize = int(m.find('size').text, base=0) - ports[modulename] = portsize + ports[portnumber] = portsize for i in range(portsize): - gpios.append((modulename, str(i))) + gpios.append((portnumber, str(i))) else: matchString = r"(?P.*\D)(?P\d*$)" From ecb1cef3481ab4c579249cc24fcfb470b043aa42 Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Mon, 25 May 2020 14:12:04 +0200 Subject: [PATCH 14/16] use only one signal table which applies to every GPIO --- devices/nrf/nrf52810.xml | 1085 +--- devices/nrf/nrf52811.xml | 1447 +----- devices/nrf/nrf52820.xml | 1547 +----- devices/nrf/nrf52832.xml | 1908 +------ devices/nrf/nrf52833.xml | 5127 +----------------- devices/nrf/nrf52840.xml | 5453 +------------------- tools/generator/dfg/nrf/nrf_device_tree.py | 48 +- 7 files changed, 593 insertions(+), 16022 deletions(-) diff --git a/devices/nrf/nrf52810.xml b/devices/nrf/nrf52810.xml index 94114d1b..3c112449 100644 --- a/devices/nrf/nrf52810.xml +++ b/devices/nrf/nrf52810.xml @@ -103,1030 +103,67 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52811.xml b/devices/nrf/nrf52811.xml index a5cf3484..64966c4d 100644 --- a/devices/nrf/nrf52811.xml +++ b/devices/nrf/nrf52811.xml @@ -106,1382 +106,77 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52820.xml b/devices/nrf/nrf52820.xml index 58fb138b..afba7534 100644 --- a/devices/nrf/nrf52820.xml +++ b/devices/nrf/nrf52820.xml @@ -109,1478 +109,81 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52832.xml b/devices/nrf/nrf52832.xml index 9bd7b44c..669c1000 100644 --- a/devices/nrf/nrf52832.xml +++ b/devices/nrf/nrf52832.xml @@ -139,1830 +139,90 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52833.xml b/devices/nrf/nrf52833.xml index 9eea4484..c9db9516 100644 --- a/devices/nrf/nrf52833.xml +++ b/devices/nrf/nrf52833.xml @@ -144,4998 +144,141 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/devices/nrf/nrf52840.xml b/devices/nrf/nrf52840.xml index 4300568b..9fb4846f 100644 --- a/devices/nrf/nrf52840.xml +++ b/devices/nrf/nrf52840.xml @@ -150,5318 +150,147 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/generator/dfg/nrf/nrf_device_tree.py b/tools/generator/dfg/nrf/nrf_device_tree.py index 3ca956d4..cd83b073 100644 --- a/tools/generator/dfg/nrf/nrf_device_tree.py +++ b/tools/generator/dfg/nrf/nrf_device_tree.py @@ -119,7 +119,7 @@ def _properties_from_file(ld_filename): # copy available signals to all derived peripherals if m.get('derivedFrom') is not None: if m.get('derivedFrom').lower() in signals: - print(modulename.lower() + " is derived from " + m.get('derivedFrom').lower()) + LOGGER.debug(modulename.lower() + " is derived from " + m.get('derivedFrom').lower()) signals[modulename.lower()] = signals[m.get('derivedFrom').lower()] p['modules'] = sorted(list(set([(m['module'], m['instance']) for m in modules]))) p['gpios'] = gpios @@ -128,7 +128,8 @@ def _properties_from_file(ld_filename): for signal in signals[instance]: matchString = r"(?P.*\D)(?P\d*$)" match = re.search(matchString, instance) - p['signals'].append({'driver': match.group("module").lower(), 'instance': instance, 'name': signal}) + if not "[%s]" in signal: # TODO take care of multichannel signals like OUT[%s] of PWM peripheral + p['signals'].append({'driver': match.group("module").lower(), 'instance': instance, 'name': signal}) interrupts = [] @@ -249,31 +250,34 @@ def driverOrder(e): # GPIO driver gpio_driver = tree.addChild('driver') gpio_driver.setAttributes('name', 'gpio', 'type', 'nrf') - gpio_driver.addSortKey(lambda e : (e['port'], int(e['pin']))) + # gpio_driver.addSortKey(lambda e : (e['port'], int(e['pin']))) + + # add all signals + for s in p['signals']: + driver, instance, name = s['driver'], s['instance'], s['name'] + # add the af node + gpio_signal = {'driver': driver} + if instance != driver: + gpio_signal['instance'] = instance.replace(driver, '') + if name != driver and name != 'int': + if 'index' in s: name += s['index']; + gpio_signal['name'] = name + elif 'index' in s: + gpio_signal['name'] = s['index'] + if "name" not in gpio_signal: + LOGGER.error("%s has no name!", s) + continue + + af = gpio_driver.addChild('signal') + af.setAttributes(['driver', 'instance', 'name'], gpio_signal) + + # add all GPIOs for port, pin in p['gpios']: pin_driver = gpio_driver.addChild('gpio') - pin_driver.setAttributes('port', port.upper(), 'pin', pin) + pin_driver.setAttributes('port', port, 'pin', pin) pin_driver.addSortKey(lambda e: (e['driver'], e['instance'] if e['instance'] is not None else '', e['name'] if e['name'] is not None else '')) - # add all signals - for s in p['signals']: - driver, instance, name = s['driver'], s['instance'], s['name'] - # add the af node - pin_signal = {'driver': driver} - if instance != driver: - pin_signal['instance'] = instance.replace(driver, '') - if name != driver and name != 'int': - if 'index' in s: name += s['index']; - pin_signal['name'] = name - elif 'index' in s: - pin_signal['name'] = s['index'] - if "name" not in pin_signal: - LOGGER.error("%s has no name!", s) - continue - - af = pin_driver.addChild('signal') - af.setAttributes(['driver', 'instance', 'name'], pin_signal) return tree From 4805c2b0fb915159399c92fe8ab8de6c4a0b30e8 Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Mon, 25 May 2020 14:14:48 +0200 Subject: [PATCH 15/16] fix type of gpio driver --- devices/nrf/nrf52810.xml | 2 +- devices/nrf/nrf52811.xml | 2 +- devices/nrf/nrf52820.xml | 2 +- devices/nrf/nrf52832.xml | 2 +- devices/nrf/nrf52833.xml | 2 +- devices/nrf/nrf52840.xml | 2 +- tools/generator/dfg/nrf/nrf_device_tree.py | 5 +++-- 7 files changed, 9 insertions(+), 8 deletions(-) diff --git a/devices/nrf/nrf52810.xml b/devices/nrf/nrf52810.xml index 3c112449..956965c9 100644 --- a/devices/nrf/nrf52810.xml +++ b/devices/nrf/nrf52810.xml @@ -102,7 +102,7 @@ - + diff --git a/devices/nrf/nrf52811.xml b/devices/nrf/nrf52811.xml index 64966c4d..e6cbeea4 100644 --- a/devices/nrf/nrf52811.xml +++ b/devices/nrf/nrf52811.xml @@ -105,7 +105,7 @@ - + diff --git a/devices/nrf/nrf52820.xml b/devices/nrf/nrf52820.xml index afba7534..3ed75754 100644 --- a/devices/nrf/nrf52820.xml +++ b/devices/nrf/nrf52820.xml @@ -108,7 +108,7 @@ - + diff --git a/devices/nrf/nrf52832.xml b/devices/nrf/nrf52832.xml index 669c1000..23da70c8 100644 --- a/devices/nrf/nrf52832.xml +++ b/devices/nrf/nrf52832.xml @@ -138,7 +138,7 @@ - + diff --git a/devices/nrf/nrf52833.xml b/devices/nrf/nrf52833.xml index c9db9516..3fef5258 100644 --- a/devices/nrf/nrf52833.xml +++ b/devices/nrf/nrf52833.xml @@ -143,7 +143,7 @@ - + diff --git a/devices/nrf/nrf52840.xml b/devices/nrf/nrf52840.xml index 9fb4846f..dfd73e9a 100644 --- a/devices/nrf/nrf52840.xml +++ b/devices/nrf/nrf52840.xml @@ -149,7 +149,7 @@ - + diff --git a/tools/generator/dfg/nrf/nrf_device_tree.py b/tools/generator/dfg/nrf/nrf_device_tree.py index cd83b073..22fff629 100644 --- a/tools/generator/dfg/nrf/nrf_device_tree.py +++ b/tools/generator/dfg/nrf/nrf_device_tree.py @@ -233,11 +233,12 @@ def driverOrder(e): else: modules[m].append(i) + + compatible = p['id']['platform'] + p['id']['family'] # add all other modules for name, instances in modules.items(): driver = tree.addChild('driver') dtype = name - compatible = p['id']['platform'] + p['id']['family'] driver.setAttributes('name', dtype, 'type', compatible) # Add all instances to this driver @@ -249,7 +250,7 @@ def driverOrder(e): # GPIO driver gpio_driver = tree.addChild('driver') - gpio_driver.setAttributes('name', 'gpio', 'type', 'nrf') + gpio_driver.setAttributes('name', 'gpio', 'type', compatible) # gpio_driver.addSortKey(lambda e : (e['port'], int(e['pin']))) # add all signals From 892eb7282703dcb054f76995b683bf8a60b33416 Mon Sep 17 00:00:00 2001 From: Hannes Ellinger Date: Mon, 25 May 2020 14:17:17 +0200 Subject: [PATCH 16/16] remove a FIXME note that was already fixed --- tools/generator/dfg/nrf/nrf_device_tree.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/generator/dfg/nrf/nrf_device_tree.py b/tools/generator/dfg/nrf/nrf_device_tree.py index 22fff629..58790ffa 100644 --- a/tools/generator/dfg/nrf/nrf_device_tree.py +++ b/tools/generator/dfg/nrf/nrf_device_tree.py @@ -73,7 +73,7 @@ def _properties_from_file(ld_filename): p["memories"] = memories - # Signals FIXME continue here, find derived peripherals + # Signals signals = {} raw_signals = device_file.query("//peripherals/peripheral/registers/cluster") for s in raw_signals: