From 5255ffcc9a90c0f9eef81ab8587c462d58d7b8f7 Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Mon, 27 Jun 2022 02:09:18 +0200 Subject: [PATCH] Fix missing chips in cubeprogdb. --- stm32data/memory.py | 63 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 5 deletions(-) diff --git a/stm32data/memory.py b/stm32data/memory.py index 4ef8cf3..cfcb5cf 100644 --- a/stm32data/memory.py +++ b/stm32data/memory.py @@ -109,14 +109,60 @@ def parse(): memories.append(chunk) + # The chips below are missing from cubeprogdb + memories.append({ + 'device-id': 0, + 'names': ['STM32F302xD'], + 'ram': { + 'address': 0x20000000, + 'bytes': 64*1024, + }, + 'flash': { + 'address': 0x08000000, + 'bytes': 384*1024, + 'erase_value': 0xFF, + 'write_size': 8, + 'erase_size': 2048, + } + }) + memories.append({ + 'device-id': 0, + 'names': ['STM32F303xD'], + 'ram': { + 'address': 0x20000000, + 'bytes': 80*1024, + }, + 'flash': { + 'address': 0x08000000, + 'bytes': 384*1024, + 'erase_value': 0xFF, + 'write_size': 8, + 'erase_size': 2048, + } + }) + memories.append({ + 'device-id': 0, + 'names': ['STM32L100x6'], + 'ram': { + 'address': 0x20000000, + 'bytes': 32*1024, + }, + 'flash': { + 'address': 0x08000000, + 'bytes': 4*1024, + 'erase_value': 0xFF, + 'write_size': 4, + 'erase_size': 256, + } + }) + def determine_ram_size(chip_name): for each in memories: for name in each['names']: if is_chip_name_match(name, chip_name): return each['ram']['bytes'] - - return None + raise Exception(f'could not find ram size for {chip_name}') def determine_flash_size(chip_name): @@ -124,8 +170,8 @@ def determine_flash_size(chip_name): for name in each['names']: if is_chip_name_match(name, chip_name): return each['flash']['bytes'] + raise Exception(f'could not find flash size for {chip_name}') - return None def determine_flash_settings(chip_name): for each in memories: @@ -136,8 +182,7 @@ def determine_flash_settings(chip_name): 'write_size': each['flash']['write_size'], 'erase_value': each['flash']['erase_value'], } - - return None + raise Exception(f'could not find flash settings for {chip_name}') def determine_device_id(chip_name): @@ -149,5 +194,13 @@ def determine_device_id(chip_name): def is_chip_name_match(pattern, chip_name): + chip_name = chip_name.replace("STM32F479", "STM32F469") # F479 is missing, it's the same as F469. + chip_name = chip_name.replace("STM32G050", "STM32G051") # same... + chip_name = chip_name.replace("STM32G060", "STM32G061") # same... + chip_name = chip_name.replace("STM32G070", "STM32G071") # same... + chip_name = chip_name.replace("STM32G0B0", "STM32G0B1") # same... + chip_name = chip_name.replace("STM32G4A", "STM32G49") # same... + chip_name = chip_name.replace("STM32L422", "STM32L412") # same... + chip_name = chip_name.replace("STM32WB30", "STM32WB35") # same... pattern = pattern.replace('x', '.') return re.match(pattern + ".*", chip_name)