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 22ba34f7..c6174b52 100644 --- a/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/EdbgAvr8Interface.cpp +++ b/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/EdbgAvr8Interface.cpp @@ -106,6 +106,16 @@ void EdbgAvr8Interface::setTargetParameters(const Avr8Bit::TargetParameters& con 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();