Fixed issue with AVR8 EEPROM address register loading from TDFs
This commit is contained in:
@@ -378,6 +378,20 @@ TargetParameters& Avr8::getTargetParameters() {
|
|||||||
this->targetParameters->eepromAddressRegisterLow = eepromAddressRegister->offset;
|
this->targetParameters->eepromAddressRegisterLow = eepromAddressRegister->offset;
|
||||||
this->targetParameters->eepromAddressRegisterHigh = (eepromAddressRegister->size == 2)
|
this->targetParameters->eepromAddressRegisterHigh = (eepromAddressRegister->size == 2)
|
||||||
? eepromAddressRegister->offset + 1 : eepromAddressRegister->offset;
|
? eepromAddressRegister->offset + 1 : eepromAddressRegister->offset;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
auto eepromAddressLowRegister = this->targetDescriptionFile->getEepromAddressLowRegister();
|
||||||
|
if (eepromAddressLowRegister.has_value()) {
|
||||||
|
this->targetParameters->eepromAddressRegisterLow = eepromAddressLowRegister->offset;
|
||||||
|
auto eepromAddressHighRegister = this->targetDescriptionFile->getEepromAddressHighRegister();
|
||||||
|
|
||||||
|
if (eepromAddressHighRegister.has_value()) {
|
||||||
|
this->targetParameters->eepromAddressRegisterHigh = eepromAddressHighRegister->offset;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this->targetParameters->eepromAddressRegisterHigh = eepromAddressLowRegister->offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto eepromDataRegister = this->targetDescriptionFile->getEepromDataRegister();
|
auto eepromDataRegister = this->targetDescriptionFile->getEepromDataRegister();
|
||||||
|
|||||||
@@ -634,6 +634,34 @@ std::optional<Register> TargetDescriptionFile::getEepromAddressRegister() const
|
|||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::optional<Register> TargetDescriptionFile::getEepromAddressLowRegister() const {
|
||||||
|
auto eepromRegisterGroup = this->getEepromRegisterGroup();
|
||||||
|
|
||||||
|
if (eepromRegisterGroup.has_value()) {
|
||||||
|
auto eepromAddressRegisterIt = eepromRegisterGroup->registersMappedByName.find("eearl");
|
||||||
|
|
||||||
|
if (eepromAddressRegisterIt != eepromRegisterGroup->registersMappedByName.end()) {
|
||||||
|
return eepromAddressRegisterIt->second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::optional<Register> TargetDescriptionFile::getEepromAddressHighRegister() const {
|
||||||
|
auto eepromRegisterGroup = this->getEepromRegisterGroup();
|
||||||
|
|
||||||
|
if (eepromRegisterGroup.has_value()) {
|
||||||
|
auto eepromAddressRegisterIt = eepromRegisterGroup->registersMappedByName.find("eearh");
|
||||||
|
|
||||||
|
if (eepromAddressRegisterIt != eepromRegisterGroup->registersMappedByName.end()) {
|
||||||
|
return eepromAddressRegisterIt->second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
std::optional<Register> TargetDescriptionFile::getEepromDataRegister() const {
|
std::optional<Register> TargetDescriptionFile::getEepromDataRegister() const {
|
||||||
auto eepromRegisterGroup = this->getEepromRegisterGroup();
|
auto eepromRegisterGroup = this->getEepromRegisterGroup();
|
||||||
|
|
||||||
|
|||||||
@@ -121,6 +121,8 @@ namespace Bloom::Targets::TargetDescription
|
|||||||
std::optional<Register> getSpmcsRegister() const;
|
std::optional<Register> getSpmcsRegister() const;
|
||||||
std::optional<Register> getSpmcRegister() const;
|
std::optional<Register> getSpmcRegister() const;
|
||||||
std::optional<Register> getEepromAddressRegister() const;
|
std::optional<Register> getEepromAddressRegister() const;
|
||||||
|
std::optional<Register> getEepromAddressLowRegister() const;
|
||||||
|
std::optional<Register> getEepromAddressHighRegister() const;
|
||||||
std::optional<Register> getEepromDataRegister() const;
|
std::optional<Register> getEepromDataRegister() const;
|
||||||
std::optional<Register> getEepromControlRegister() const;
|
std::optional<Register> getEepromControlRegister() const;
|
||||||
std::vector<Variant> getVariants() const;
|
std::vector<Variant> getVariants() const;
|
||||||
|
|||||||
Reference in New Issue
Block a user