Added NVM base address extraction for XMega AVR8 targets
This commit is contained in:
@@ -163,6 +163,10 @@ void EdbgAvr8Interface::setTargetParameters(const Avr8Bit::TargetParameters& con
|
||||
throw Exception("Missing required parameter: EEPROM_PAGE_SIZE");
|
||||
}
|
||||
|
||||
if (!config.nvmBaseAddress.has_value()) {
|
||||
throw Exception("Missing required parameter: NVM_BASE");
|
||||
}
|
||||
|
||||
Logger::debug("Setting APPL_BASE_ADDR AVR8 parameter");
|
||||
this->setParameter(Avr8EdbgParameters::DEVICE_XMEGA_APPL_BASE_ADDR, config.appSectionPdiOffset.value());
|
||||
|
||||
@@ -202,8 +206,8 @@ void EdbgAvr8Interface::setTargetParameters(const Avr8Bit::TargetParameters& con
|
||||
Logger::debug("Setting EEPROM_PAGE_SIZE AVR8 parameter");
|
||||
this->setParameter(Avr8EdbgParameters::DEVICE_XMEGA_EEPROM_PAGE_SIZE, static_cast<unsigned char>(config.eepromPageSize.value()));
|
||||
|
||||
this->setParameter(Avr8EdbgParameters::DEVICE_XMEGA_NVM_BASE, static_cast<std::uint16_t>(0x01c0));
|
||||
// this->setParameter(Avr8EdbgParameters::DEVICE_XMEGA_SIGNATURE_OFFSET, static_cast<std::uint16_t>(0x0090));
|
||||
Logger::debug("Setting NVM_BASE AVR8 parameter");
|
||||
this->setParameter(Avr8EdbgParameters::DEVICE_XMEGA_NVM_BASE, config.nvmBaseAddress.value());
|
||||
|
||||
} else {
|
||||
if (config.flashPageSize.has_value()) {
|
||||
|
||||
@@ -357,6 +357,20 @@ TargetParameters& Avr8::getTargetParameters() {
|
||||
this->targetParameters->lockRegistersPdiOffset = pdiInterfaceProperties
|
||||
.at("lock_registers_offset").value.toInt(nullptr, 16);
|
||||
}
|
||||
|
||||
auto& peripheralModules = this->partDescription->getPeripheralModulesMappedByName();
|
||||
|
||||
if (peripheralModules.contains("nvm")) {
|
||||
auto& nvmModule = peripheralModules.at("nvm");
|
||||
|
||||
if (nvmModule.instancesMappedByName.contains("nvm")) {
|
||||
auto& nvmInstance = nvmModule.instancesMappedByName.at("nvm");
|
||||
|
||||
if (nvmInstance.registerGroupsMappedByName.contains("nvm")) {
|
||||
this->targetParameters->nvmBaseAddress = nvmInstance.registerGroupsMappedByName.at("nvm").offset;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace Bloom::Targets::Microchip::Avr::Avr8Bit
|
||||
std::optional<std::uint32_t> lockRegistersPdiOffset;
|
||||
std::optional<std::uint32_t> userSignaturesPdiOffset;
|
||||
std::optional<std::uint32_t> productSignaturesPdiOffset;
|
||||
|
||||
std::optional<std::uint16_t> nvmBaseAddress;
|
||||
|
||||
std::optional<std::uint32_t> ioPortAddressRangeStart;
|
||||
std::optional<std::uint32_t> ioPortAddressRangeEnd;
|
||||
|
||||
Reference in New Issue
Block a user