Refined OCD data register address exclusion from memory reads, when reading register values in the AVR8 EDBG driver

This commit is contained in:
Nav
2021-08-31 19:43:35 +01:00
parent 9ac2b2617b
commit ff820d8983

View File

@@ -1215,8 +1215,11 @@ TargetRegisters EdbgAvr8Interface::readRegisters(const TargetRegisterDescriptors
* See CommandFrames::Avr8Generic::ReadMemory(); and the Microchip EDBG documentation for more.
*/
auto excludedAddresses = std::set<std::uint32_t>();
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(