From ff820d8983ab73aa5dc3244113d8989edeb7d281 Mon Sep 17 00:00:00 2001 From: Nav Date: Tue, 31 Aug 2021 19:43:35 +0100 Subject: [PATCH] Refined OCD data register address exclusion from memory reads, when reading register values in the AVR8 EDBG driver --- .../VendorSpecific/EDBG/AVR/EdbgAvr8Interface.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/EdbgAvr8Interface.cpp b/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/EdbgAvr8Interface.cpp index bcd609c5..ddf3d830 100644 --- a/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/EdbgAvr8Interface.cpp +++ b/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/EdbgAvr8Interface.cpp @@ -1215,8 +1215,11 @@ TargetRegisters EdbgAvr8Interface::readRegisters(const TargetRegisterDescriptors * See CommandFrames::Avr8Generic::ReadMemory(); and the Microchip EDBG documentation for more. */ auto excludedAddresses = std::set(); - if (this->targetParameters.ocdDataRegister.has_value()) { - excludedAddresses.insert(this->targetParameters.ocdDataRegister.value()); + if (memoryType == Avr8MemoryType::SRAM && this->targetParameters.ocdDataRegister.has_value()) { + excludedAddresses.insert( + this->targetParameters.ocdDataRegister.value() + + this->targetParameters.mappedIoSegmentStartAddress.value_or(0) + ); } auto flatMemoryBuffer = this->readMemory(