From 0d70a28cf33ab8b5c0412995a8fad3f48c51591d Mon Sep 17 00:00:00 2001 From: Darren Date: Wed, 16 Oct 2024 09:26:01 +0800 Subject: [PATCH] rtt: fix cb not found when the first character of the cb_id was not in the memory of this read (#1729) --- pyocd/debug/rtt.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyocd/debug/rtt.py b/pyocd/debug/rtt.py index cbd40aa15..4d4b83367 100644 --- a/pyocd/debug/rtt.py +++ b/pyocd/debug/rtt.py @@ -426,6 +426,7 @@ def __init__(self, target: SoCTarget, address: int = None, def _find_control_block(self) -> Optional[int]: addr: int = self._cb_search_address & ~0x3 + search_addr: int = addr search_size: int = self._cb_search_size_bytes if search_size < len(self._control_block_id): search_size = len(self._control_block_id) @@ -435,7 +436,7 @@ def _find_control_block(self) -> Optional[int]: while search_size: read_size = min(search_size, 32) - data = self.target.read_memory_block8(addr, read_size) + data = self.target.read_memory_block8(search_addr, read_size) if not data: break @@ -454,6 +455,8 @@ def _find_control_block(self) -> Optional[int]: if offset == id_len: break + search_addr += read_size + return addr if offset == id_len else None def start(self):