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 88fd9d1d..2e7cb264 100644 --- a/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/EdbgAvr8Interface.cpp +++ b/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/EdbgAvr8Interface.cpp @@ -78,17 +78,6 @@ namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr throw DeviceInitializationFailure("Failed to find status register size"); } - if (config.flashPageSize.has_value() && this->maximumMemoryAccessSizePerRequest.has_value() - && config.flashPageSize > this->maximumMemoryAccessSizePerRequest - ) { - throw DeviceInitializationFailure("Flash page size for target (" - + std::to_string(config.flashPageSize.value()) - + " bytes) exceeds maximum memory access size for EdbgAvr8Interface (" - + std::to_string(this->maximumMemoryAccessSizePerRequest.value()) - + " bytes)." - ); - } - if (this->configVariant == Avr8ConfigVariant::NONE) { auto configVariant = this->resolveConfigVariant(); @@ -102,6 +91,20 @@ namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr this->configVariant = configVariant.value(); } + if ( + this->configVariant != Avr8ConfigVariant::XMEGA + && this->configVariant != Avr8ConfigVariant::UPDI + && config.flashPageSize.has_value() && this->maximumMemoryAccessSizePerRequest.has_value() + && config.flashPageSize > this->maximumMemoryAccessSizePerRequest + ) { + throw DeviceInitializationFailure("Flash page size for target (" + + std::to_string(config.flashPageSize.value()) + + " bytes) exceeds maximum memory access size for EdbgAvr8Interface (" + + std::to_string(this->maximumMemoryAccessSizePerRequest.value()) + + " bytes)." + ); + } + switch (this->configVariant) { case Avr8ConfigVariant::DEBUG_WIRE: case Avr8ConfigVariant::MEGAJTAG: {