From e9929927cb684cadc4d3b52886501cc8eb5e1908 Mon Sep 17 00:00:00 2001 From: Nav Date: Sun, 6 Jun 2021 00:43:18 +0100 Subject: [PATCH] Updated lookup for OSCCAL_ADDR value from TDFs. Included OSCCAL0, OSCCAL1, FOSCCAL0, SOSCCALA register lookups --- .../AVR8/Avr8TargetDescriptionFile.php | 9 +++++++-- .../TargetDescriptionFile.cpp | 18 +++++++++++++++--- .../AVR8/MEGA/ATMEGA406.xml | 2 -- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/build/scripts/TargetDescriptionFiles/AVR8/Avr8TargetDescriptionFile.php b/build/scripts/TargetDescriptionFiles/AVR8/Avr8TargetDescriptionFile.php index 579b90dd..8f0ef13d 100644 --- a/build/scripts/TargetDescriptionFiles/AVR8/Avr8TargetDescriptionFile.php +++ b/build/scripts/TargetDescriptionFiles/AVR8/Avr8TargetDescriptionFile.php @@ -218,8 +218,13 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile } } - if (isset($cpuRegisterGroup->registersMappedByName['osccal'])) { - $osccalRegister = $cpuRegisterGroup->registersMappedByName['osccal']; + $osccalRegister = $cpuRegisterGroup->registersMappedByName['osccal'] + ?? $cpuRegisterGroup->registersMappedByName['osccal0'] + ?? $cpuRegisterGroup->registersMappedByName['osccal1'] + ?? $cpuRegisterGroup->registersMappedByName['fosccal'] + ?? $cpuRegisterGroup->registersMappedByName['sosccala'] ?? null; + + if (!is_null($osccalRegister)) { $this->osccalAddress = $osccalRegister->offset; } } diff --git a/src/Targets/TargetDescription/TargetDescriptionFile.cpp b/src/Targets/TargetDescription/TargetDescriptionFile.cpp index 427ac09d..f41c0305 100644 --- a/src/Targets/TargetDescription/TargetDescriptionFile.cpp +++ b/src/Targets/TargetDescription/TargetDescriptionFile.cpp @@ -584,10 +584,22 @@ std::optional TargetDescriptionFile::getOscillatorCalibrationRegister( auto cpuRegisterGroup = this->getCpuRegisterGroup(); if (cpuRegisterGroup.has_value()) { - auto osccalRegisterIt = cpuRegisterGroup->registersMappedByName.find("osccal"); + auto& cpuRegisters = cpuRegisterGroup->registersMappedByName; - if (osccalRegisterIt != cpuRegisterGroup->registersMappedByName.end()) { - return osccalRegisterIt->second; + if (cpuRegisters.contains("oscall")) { + return cpuRegisters.at("oscall"); + + } else if (cpuRegisters.contains("osccal0")) { + return cpuRegisters.at("osccal0"); + + } else if (cpuRegisters.contains("osccal1")) { + return cpuRegisters.at("osccal1"); + + } else if (cpuRegisters.contains("fosccal")) { + return cpuRegisters.at("fosccal"); + + } else if (cpuRegisters.contains("sosccala")) { + return cpuRegisters.at("sosccala"); } } diff --git a/src/Targets/TargetDescriptionFiles/AVR8/MEGA/ATMEGA406.xml b/src/Targets/TargetDescriptionFiles/AVR8/MEGA/ATMEGA406.xml index 1457acd9..5cace874 100644 --- a/src/Targets/TargetDescriptionFiles/AVR8/MEGA/ATMEGA406.xml +++ b/src/Targets/TargetDescriptionFiles/AVR8/MEGA/ATMEGA406.xml @@ -162,8 +162,6 @@ - -