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");
|
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");
|
Logger::debug("Setting APPL_BASE_ADDR AVR8 parameter");
|
||||||
this->setParameter(Avr8EdbgParameters::DEVICE_XMEGA_APPL_BASE_ADDR, config.appSectionPdiOffset.value());
|
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");
|
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_EEPROM_PAGE_SIZE, static_cast<unsigned char>(config.eepromPageSize.value()));
|
||||||
|
|
||||||
this->setParameter(Avr8EdbgParameters::DEVICE_XMEGA_NVM_BASE, static_cast<std::uint16_t>(0x01c0));
|
Logger::debug("Setting NVM_BASE AVR8 parameter");
|
||||||
// this->setParameter(Avr8EdbgParameters::DEVICE_XMEGA_SIGNATURE_OFFSET, static_cast<std::uint16_t>(0x0090));
|
this->setParameter(Avr8EdbgParameters::DEVICE_XMEGA_NVM_BASE, config.nvmBaseAddress.value());
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (config.flashPageSize.has_value()) {
|
if (config.flashPageSize.has_value()) {
|
||||||
|
|||||||
@@ -357,6 +357,20 @@ TargetParameters& Avr8::getTargetParameters() {
|
|||||||
this->targetParameters->lockRegistersPdiOffset = pdiInterfaceProperties
|
this->targetParameters->lockRegistersPdiOffset = pdiInterfaceProperties
|
||||||
.at("lock_registers_offset").value.toInt(nullptr, 16);
|
.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> lockRegistersPdiOffset;
|
||||||
std::optional<std::uint32_t> userSignaturesPdiOffset;
|
std::optional<std::uint32_t> userSignaturesPdiOffset;
|
||||||
std::optional<std::uint32_t> productSignaturesPdiOffset;
|
std::optional<std::uint32_t> productSignaturesPdiOffset;
|
||||||
|
std::optional<std::uint16_t> nvmBaseAddress;
|
||||||
|
|
||||||
std::optional<std::uint32_t> ioPortAddressRangeStart;
|
std::optional<std::uint32_t> ioPortAddressRangeStart;
|
||||||
std::optional<std::uint32_t> ioPortAddressRangeEnd;
|
std::optional<std::uint32_t> ioPortAddressRangeEnd;
|
||||||
|
|||||||
Reference in New Issue
Block a user