From 38037ab647c165eb6f0f72337f8f2f2b6e2f5d84 Mon Sep 17 00:00:00 2001 From: Andreas Fritiofson Date: Wed, 12 Jun 2024 18:27:37 +0200 Subject: [PATCH] Fix sector size and RDP check on STM32H743 and H723 --- pyocd/target/builtin/target_STM32H723xx.py | 6 +++--- pyocd/target/builtin/target_STM32H743xx.py | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pyocd/target/builtin/target_STM32H723xx.py b/pyocd/target/builtin/target_STM32H723xx.py index afcf6e874..0c94c1ca4 100644 --- a/pyocd/target/builtin/target_STM32H723xx.py +++ b/pyocd/target/builtin/target_STM32H723xx.py @@ -120,7 +120,7 @@ class STM32H723xx(CoreSightTarget): VENDOR = "STMicroelectronics" MEMORY_MAP = MemoryMap( - FlashRegion( start=0x08000000, length=0x100000, sector_size=0x8000, + FlashRegion( start=0x08000000, length=0x100000, sector_size=0x20000, page_size=0x400, is_boot_memory=True, algo=FLASH_ALGO), @@ -232,9 +232,9 @@ def is_locked(self): bank = FlashPeripheral() optsr = self.read32(bank.flash_optsr_prg) rdp = optsr & 0x0000_ff00 - if rdp == 0xaa: + if rdp == 0xaa00: return False; - if rdp == 0xcc: + if rdp == 0xcc00: LOG.warning("MCU permanently locked. No unlock possible") return True diff --git a/pyocd/target/builtin/target_STM32H743xx.py b/pyocd/target/builtin/target_STM32H743xx.py index 841c4c734..9379b4358 100644 --- a/pyocd/target/builtin/target_STM32H743xx.py +++ b/pyocd/target/builtin/target_STM32H743xx.py @@ -142,7 +142,7 @@ def __init__(self, bank=0): 'flash_start': 0x8000000, 'flash_size': 0x200000, 'sector_sizes': ( - (0x0, 0x2000), + (0x0, 0x20000), ) } @@ -152,12 +152,12 @@ class STM32H743xx(CoreSightTarget): VENDOR = "STMicroelectronics" MEMORY_MAP = MemoryMap( - FlashRegion( start=0x0800_0000, length=0x10_0000, sector_size=0x8000, + FlashRegion( start=0x0800_0000, length=0x10_0000, sector_size=0x2_0000, page_size=0x400, is_boot_memory=True, algo=FLASH_ALGO), - FlashRegion( start=0x0810_0000, length=0x10_0000, sector_size=0x8000, + FlashRegion( start=0x0810_0000, length=0x10_0000, sector_size=0x2_0000, page_size=0x400, algo=FLASH_ALGO), #ITCM @@ -278,9 +278,9 @@ def is_locked(self, flash_banks=[0,1]): for bank in banks: optsr = self.read32(bank.flash_optsr_prg) rdp = optsr & 0x0000_ff00 - if rdp == 0xcc: + if rdp == 0xcc00: LOG.warning(f"BANK {bank.bank} permanently locked. No unlock possible") - if rdp != 0xaa: + if rdp != 0xaa00: return True return False