From 74895885645c494b243c0b315ee10662c65e9d2f Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen Date: Mon, 16 Aug 2021 12:38:33 +0200 Subject: [PATCH 1/3] Give different names to secure and non-secure cores --- parse.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/parse.py b/parse.py index 91ef4a1..7372222 100755 --- a/parse.py +++ b/parse.py @@ -48,10 +48,13 @@ def removeprefix(value: str, prefix: str, /) -> str: def corename(d): - if m := re.match('.*Cortex-M(\d+)(\+?)', d): + #print("CHECKING CORENAME", d) + if m := re.match('.*Cortex-M(\d+)(\+?)\s*(.*)', d): name = "cm" + str(m.group(1)) if m.group(2) == "+": name += "p" + if m.group(3) == "secure": + name += "s" return name From a84e7d8b8c5b1117706385d0cd6751036b29136f Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen Date: Mon, 16 Aug 2021 13:01:25 +0200 Subject: [PATCH 2/3] Add ability to override peripheral address if bug in header sources --- parse.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/parse.py b/parse.py index 7372222..b58e36f 100755 --- a/parse.py +++ b/parse.py @@ -395,6 +395,20 @@ perimap = [ ('.*:DMA', 'bdma_v1/DMA'), ] +# Device address overrides, in case of missing from headers +address_overrides = { + 'STM32F412VE:GPIOF_BASE': 0x40021400, + 'STM32F412VE:GPIOG_BASE': 0x40021800, + 'STM32F412VG:GPIOF_BASE': 0x40021400, + 'STM32F412VG:GPIOG_BASE': 0x40021800, +} + +def lookup_address(defines, name, d): + if addr := defines.get(d): + return addr + elif addr := address_overrides.get(name + ':' + d): + return addr + def match_peri(peri): for r, block in perimap: @@ -825,7 +839,7 @@ def parse_chips(): # Handle GPIO specially. for p in range(20): port = 'GPIO' + chr(ord('A') + p) - if addr := defines.get(port + '_BASE'): + if addr := lookup_address(defines, chip['name'], port + '_BASE'): block = 'gpio_v2/GPIO' if chip['family'] == 'STM32F1': block = 'gpio_v1/GPIO' From 154d226f7a41439418cf2a05d4b74d16ff1f2617 Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen Date: Thu, 12 Aug 2021 13:36:15 +0200 Subject: [PATCH 3/3] Handle shared USART IRQs --- parse.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/parse.py b/parse.py index b58e36f..8a9895b 100755 --- a/parse.py +++ b/parse.py @@ -1297,6 +1297,8 @@ def remap_interrupt_signals(peri_name, irq_name): return expand_all_irq_signals(peri_name, irq_name) if (peri_name.startswith('DMA') or peri_name.startswith('BDMA')) and irq_name.startswith(peri_name): return {irq_name: irq_name} + if peri_name.startswith('USART') and irq_name.startswith(peri_name): + return {'GLOBAL': irq_name} if peri_name in irq_name: signals = {} start = irq_name.index(peri_name)