Corrected potential issue with delta programming on some AVR8 debugWIRE targets
This commit is contained in:
@@ -36,6 +36,7 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr
|
||||
static constexpr Avr8EdbgParameter DEVICE_FLASH_PAGE_SIZE = {0x02, 0x00};
|
||||
static constexpr Avr8EdbgParameter DEVICE_FLASH_SIZE = {0x02, 0x02};
|
||||
static constexpr Avr8EdbgParameter DEVICE_OCD_REVISION = {0x02, 0x13};
|
||||
static constexpr Avr8EdbgParameter DEVICE_PAGE_BUFFERS_PER_FLASH_BLOCK = {0x02, 0x14};
|
||||
static constexpr Avr8EdbgParameter DEVICE_OCD_DATA_REGISTER = {0x02, 0x18};
|
||||
static constexpr Avr8EdbgParameter DEVICE_SPMCR_REGISTER = {0x02, 0x1D};
|
||||
static constexpr Avr8EdbgParameter DEVICE_OSCCAL_ADDR = {0x02, 0x1E};
|
||||
|
||||
@@ -999,6 +999,12 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr
|
||||
Logger::debug("Setting OCD_REVISION AVR8 device parameter");
|
||||
this->setParameter(Avr8EdbgParameters::DEVICE_OCD_REVISION, parameters.ocdRevision);
|
||||
|
||||
Logger::debug("Setting DEVICE_PAGE_BUFFERS_PER_FLASH_BLOCK AVR8 device parameter");
|
||||
this->setParameter(
|
||||
Avr8EdbgParameters::DEVICE_PAGE_BUFFERS_PER_FLASH_BLOCK,
|
||||
parameters.buffersPerFlashPage.value_or(0x01)
|
||||
);
|
||||
|
||||
Logger::debug("Setting OCD_DATA_REGISTER AVR8 device parameter");
|
||||
this->setParameter(Avr8EdbgParameters::DEVICE_OCD_DATA_REGISTER, parameters.ocdDataRegisterAddress);
|
||||
|
||||
|
||||
@@ -22,9 +22,9 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen
|
||||
"boot_section_options.boot_section_1"
|
||||
);
|
||||
if (firstBootSectionOptionGroup.has_value()) {
|
||||
this->bootSectionStartWordAddress = static_cast<std::uint32_t>(
|
||||
StringService::toUint32(firstBootSectionOptionGroup->get().getProperty("start_address").value) / 2
|
||||
);
|
||||
this->bootSectionStartWordAddress = StringService::toUint32(
|
||||
firstBootSectionOptionGroup->get().getProperty("start_address").value
|
||||
) / 2;
|
||||
}
|
||||
|
||||
this->ramStartAddress = static_cast<std::uint16_t>(ramMemorySegment.startAddress);
|
||||
@@ -35,6 +35,11 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen
|
||||
this->ocdRevision = StringService::toUint8(ocdPropertyGroup.getProperty("ocd_revision").value);
|
||||
this->ocdDataRegisterAddress = StringService::toUint8(ocdPropertyGroup.getProperty("ocd_datareg").value);
|
||||
|
||||
const auto buffersPerFlashPageProperty = ocdPropertyGroup.tryGetProperty("buffers_per_flash_page");
|
||||
if (buffersPerFlashPageProperty.has_value()) {
|
||||
this->buffersPerFlashPage = StringService::toUint8(buffersPerFlashPageProperty->get().value);
|
||||
}
|
||||
|
||||
const auto eepromPeripheralDescriptor = targetDescriptionFile.getTargetPeripheralDescriptor("eeprom");
|
||||
const auto& eepromRegisterGroupDescriptor = eepromPeripheralDescriptor.getRegisterGroupDescriptor("eeprom");
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen
|
||||
std::uint8_t eepromPageSize;
|
||||
std::uint8_t ocdRevision;
|
||||
std::uint8_t ocdDataRegisterAddress;
|
||||
std::optional<std::uint8_t> buffersPerFlashPage;
|
||||
std::uint8_t eearAddressHigh;
|
||||
std::uint8_t eearAddressLow;
|
||||
std::uint8_t eedrAddress;
|
||||
|
||||
Reference in New Issue
Block a user