Corrected EEARL/H register address extraction from AVR8 TDFs.
Some other bits of tidying
This commit is contained in:
@@ -121,7 +121,7 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
$output->ocdRevision = $this->stringService->tryStringToInt(
|
$output->ocdRevision = $this->stringService->tryStringToInt(
|
||||||
$this->getPropertyValue('ocd', 'ocd_revision')
|
$this->getPropertyValue('ocd', 'ocd_revision')
|
||||||
);
|
);
|
||||||
$output->ocdDataRegister = $this->stringService->tryStringToInt(
|
$output->ocdDataRegisterAddress = $this->stringService->tryStringToInt(
|
||||||
$this->getPropertyValue('ocd', 'ocd_datareg')
|
$this->getPropertyValue('ocd', 'ocd_datareg')
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -131,40 +131,40 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
$eepromAddressRegister = $eepromPeripheral->getRegister('eeprom', 'eear');
|
$eepromAddressRegister = $eepromPeripheral->getRegister('eeprom', 'eear');
|
||||||
|
|
||||||
if ($eepromAddressRegister instanceof TargetRegister) {
|
if ($eepromAddressRegister instanceof TargetRegister) {
|
||||||
$output->eepromAddressRegisterLow = $eepromAddressRegister->address;
|
$output->eearAddressLow = $eepromAddressRegister->address;
|
||||||
$output->eepromAddressRegisterHigh = $eepromAddressRegister->size > 1
|
$output->eearAddressHigh = $eepromAddressRegister->size > 1
|
||||||
? $eepromAddressRegister->address !== null
|
? $eepromAddressRegister->address !== null
|
||||||
? $eepromAddressRegister->address >> 2
|
? $eepromAddressRegister->address >> 8
|
||||||
: null
|
: null
|
||||||
: $eepromAddressRegister->address
|
: $eepromAddressRegister->address
|
||||||
;
|
;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$eepromAddressRegisterLow = $eepromPeripheral->getRegister('eeprom', 'eearl');
|
$eearAddressLow = $eepromPeripheral->getRegister('eeprom', 'eearl');
|
||||||
$eepromAddressRegisterHigh = $eepromPeripheral->getRegister('eeprom', 'eearh');
|
$eearAddressHigh = $eepromPeripheral->getRegister('eeprom', 'eearh');
|
||||||
|
|
||||||
if ($eepromAddressRegisterLow instanceof TargetRegister) {
|
if ($eearAddressLow instanceof TargetRegister) {
|
||||||
$output->eepromAddressRegisterLow = $eepromAddressRegisterLow->address;
|
$output->eearAddressLow = $eearAddressLow->address;
|
||||||
$output->eepromAddressRegisterHigh = $eepromAddressRegisterLow->size > 1
|
$output->eearAddressHigh = $eearAddressLow->size > 1
|
||||||
? $eepromAddressRegisterLow->address !== null
|
? $eearAddressLow->address !== null
|
||||||
? $eepromAddressRegisterLow->address >> 2
|
? $eearAddressLow->address >> 8
|
||||||
: null
|
: null
|
||||||
: $eepromAddressRegisterLow->address;
|
: $eearAddressLow->address;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($eepromAddressRegisterHigh instanceof TargetRegister) {
|
if ($eearAddressHigh instanceof TargetRegister) {
|
||||||
$output->eepromAddressRegisterHigh = $eepromAddressRegisterHigh->address;
|
$output->eearAddressHigh = $eearAddressHigh->address;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$eepromDataRegister = $eepromPeripheral->getRegister('eeprom', 'eedr');
|
$eepromDataRegister = $eepromPeripheral->getRegister('eeprom', 'eedr');
|
||||||
if ($eepromDataRegister instanceof TargetRegister) {
|
if ($eepromDataRegister instanceof TargetRegister) {
|
||||||
$output->eepromDataRegisterAddress = $eepromDataRegister->address;
|
$output->eedrAddress = $eepromDataRegister->address;
|
||||||
}
|
}
|
||||||
|
|
||||||
$eepromControlRegister = $eepromPeripheral->getRegister('eeprom', 'eecr');
|
$eepromControlRegister = $eepromPeripheral->getRegister('eeprom', 'eecr');
|
||||||
if ($eepromControlRegister instanceof TargetRegister) {
|
if ($eepromControlRegister instanceof TargetRegister) {
|
||||||
$output->eepromControlRegisterAddress = $eepromControlRegister->address;
|
$output->eecrAddress = $eepromControlRegister->address;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,7 +175,7 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
?? $cpuPeripheral->getRegister('cpu', 'spmcr');
|
?? $cpuPeripheral->getRegister('cpu', 'spmcr');
|
||||||
|
|
||||||
if ($spmcsRegister instanceof TargetRegister) {
|
if ($spmcsRegister instanceof TargetRegister) {
|
||||||
$output->spmcRegisterStartAddress = $spmcsRegister->address;
|
$output->spmcrAddress = $spmcsRegister->address;
|
||||||
}
|
}
|
||||||
|
|
||||||
$osccalRegister = $cpuPeripheral->getRegister('cpu', 'osccal')
|
$osccalRegister = $cpuPeripheral->getRegister('cpu', 'osccal')
|
||||||
@@ -189,7 +189,7 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($output->spmcRegisterStartAddress === null) {
|
if ($output->spmcrAddress === null) {
|
||||||
$bootLoaderPeripheral = $this->getTargetPeripheral('boot_load');
|
$bootLoaderPeripheral = $this->getTargetPeripheral('boot_load');
|
||||||
|
|
||||||
if ($bootLoaderPeripheral instanceof TargetPeripheral) {
|
if ($bootLoaderPeripheral instanceof TargetPeripheral) {
|
||||||
@@ -197,7 +197,7 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
?? $bootLoaderPeripheral->getRegister('boot_load', 'spmcsr');
|
?? $bootLoaderPeripheral->getRegister('boot_load', 'spmcsr');
|
||||||
|
|
||||||
if ($spmcsRegister instanceof TargetRegister) {
|
if ($spmcsRegister instanceof TargetRegister) {
|
||||||
$output->spmcRegisterStartAddress = $spmcsRegister->address;
|
$output->spmcrAddress = $spmcsRegister->address;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -274,7 +274,7 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
}
|
}
|
||||||
|
|
||||||
$output->ocdRevision = $this->stringService->tryStringToInt($this->getPropertyValue('ocd', 'ocd_revision'));
|
$output->ocdRevision = $this->stringService->tryStringToInt($this->getPropertyValue('ocd', 'ocd_revision'));
|
||||||
$output->ocdDataRegister = $this->stringService->tryStringToInt($this->getPropertyValue('ocd', 'ocd_datareg'));
|
$output->ocdDataRegisterAddress = $this->stringService->tryStringToInt($this->getPropertyValue('ocd', 'ocd_datareg'));
|
||||||
|
|
||||||
$eepromPeripheral = $this->getTargetPeripheral('eeprom');
|
$eepromPeripheral = $this->getTargetPeripheral('eeprom');
|
||||||
|
|
||||||
@@ -282,8 +282,8 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
$eepromAddressRegister = $eepromPeripheral->getRegister('eeprom', 'eear');
|
$eepromAddressRegister = $eepromPeripheral->getRegister('eeprom', 'eear');
|
||||||
|
|
||||||
if ($eepromAddressRegister instanceof TargetRegister) {
|
if ($eepromAddressRegister instanceof TargetRegister) {
|
||||||
$output->eepromAddressRegisterLow = $eepromAddressRegister->address;
|
$output->eearAddressLow = $eepromAddressRegister->address;
|
||||||
$output->eepromAddressRegisterHigh = $eepromAddressRegister->size > 1
|
$output->eearAddressHigh = $eepromAddressRegister->size > 1
|
||||||
? $eepromAddressRegister->address !== null
|
? $eepromAddressRegister->address !== null
|
||||||
? $eepromAddressRegister->address >> 2
|
? $eepromAddressRegister->address >> 2
|
||||||
: null
|
: null
|
||||||
@@ -291,26 +291,26 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
;
|
;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$eepromAddressRegisterLow = $eepromPeripheral->getRegister('eeprom', 'eearl');
|
$eearAddressLow = $eepromPeripheral->getRegister('eeprom', 'eearl');
|
||||||
$eepromAddressRegisterHigh = $eepromPeripheral->getRegister('eeprom', 'eearh');
|
$eearAddressHigh = $eepromPeripheral->getRegister('eeprom', 'eearh');
|
||||||
|
|
||||||
if ($eepromAddressRegisterLow instanceof TargetRegister) {
|
if ($eearAddressLow instanceof TargetRegister) {
|
||||||
$output->eepromAddressRegisterLow = $eepromAddressRegisterLow->address;
|
$output->eearAddressLow = $eearAddressLow->address;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($eepromAddressRegisterHigh instanceof TargetRegister) {
|
if ($eearAddressHigh instanceof TargetRegister) {
|
||||||
$output->eepromAddressRegisterHigh = $eepromAddressRegisterHigh->address;
|
$output->eearAddressHigh = $eearAddressHigh->address;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$eepromDataRegister = $eepromPeripheral->getRegister('eeprom', 'eedr');
|
$eepromDataRegister = $eepromPeripheral->getRegister('eeprom', 'eedr');
|
||||||
if ($eepromDataRegister instanceof TargetRegister) {
|
if ($eepromDataRegister instanceof TargetRegister) {
|
||||||
$output->eepromDataRegisterAddress = $eepromDataRegister->address;
|
$output->eedrAddress = $eepromDataRegister->address;
|
||||||
}
|
}
|
||||||
|
|
||||||
$eepromControlRegister = $eepromPeripheral->getRegister('eeprom', 'eecr');
|
$eepromControlRegister = $eepromPeripheral->getRegister('eeprom', 'eecr');
|
||||||
if ($eepromControlRegister instanceof TargetRegister) {
|
if ($eepromControlRegister instanceof TargetRegister) {
|
||||||
$output->eepromControlRegisterAddress = $eepromControlRegister->address;
|
$output->eecrAddress = $eepromControlRegister->address;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,7 +321,7 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
?? $cpuPeripheral->getRegister('cpu', 'spmcr');
|
?? $cpuPeripheral->getRegister('cpu', 'spmcr');
|
||||||
|
|
||||||
if ($spmcsRegister instanceof TargetRegister) {
|
if ($spmcsRegister instanceof TargetRegister) {
|
||||||
$output->spmcRegisterStartAddress = $spmcsRegister->address;
|
$output->spmcrAddress = $spmcsRegister->address;
|
||||||
}
|
}
|
||||||
|
|
||||||
$osccalRegister = $cpuPeripheral->getRegister('cpu', 'osccal')
|
$osccalRegister = $cpuPeripheral->getRegister('cpu', 'osccal')
|
||||||
@@ -335,7 +335,7 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($output->spmcRegisterStartAddress === null) {
|
if ($output->spmcrAddress === null) {
|
||||||
$bootLoaderPeripheral = $this->getTargetPeripheral('boot_load');
|
$bootLoaderPeripheral = $this->getTargetPeripheral('boot_load');
|
||||||
|
|
||||||
if ($bootLoaderPeripheral instanceof TargetPeripheral) {
|
if ($bootLoaderPeripheral instanceof TargetPeripheral) {
|
||||||
@@ -343,7 +343,7 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
?? $bootLoaderPeripheral->getRegister('boot_load', 'spmcsr');
|
?? $bootLoaderPeripheral->getRegister('boot_load', 'spmcsr');
|
||||||
|
|
||||||
if ($spmcsRegister instanceof TargetRegister) {
|
if ($spmcsRegister instanceof TargetRegister) {
|
||||||
$output->spmcRegisterStartAddress = $spmcsRegister->address;
|
$output->spmcrAddress = $spmcsRegister->address;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ class DebugWireParameters
|
|||||||
public ?int $eepromSize = null;
|
public ?int $eepromSize = null;
|
||||||
public ?int $eepromPageSize = null;
|
public ?int $eepromPageSize = null;
|
||||||
public ?int $ocdRevision = null;
|
public ?int $ocdRevision = null;
|
||||||
public ?int $ocdDataRegister = null;
|
public ?int $ocdDataRegisterAddress = null;
|
||||||
public ?int $eepromAddressRegisterHigh = null;
|
public ?int $eearAddressHigh = null;
|
||||||
public ?int $eepromAddressRegisterLow = null;
|
public ?int $eearAddressLow = null;
|
||||||
public ?int $eepromControlRegisterAddress = null;
|
public ?int $eecrAddress = null;
|
||||||
public ?int $eepromDataRegisterAddress = null;
|
public ?int $eedrAddress = null;
|
||||||
public ?int $spmcRegisterStartAddress = null;
|
public ?int $spmcrAddress = null;
|
||||||
public ?int $osccalAddress = null;
|
public ?int $osccalAddress = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ class JtagParameters
|
|||||||
public ?int $eepromSize = null;
|
public ?int $eepromSize = null;
|
||||||
public ?int $eepromPageSize = null;
|
public ?int $eepromPageSize = null;
|
||||||
public ?int $ocdRevision = null;
|
public ?int $ocdRevision = null;
|
||||||
public ?int $ocdDataRegister = null;
|
public ?int $ocdDataRegisterAddress = null;
|
||||||
public ?int $eepromAddressRegisterHigh = null;
|
public ?int $eearAddressHigh = null;
|
||||||
public ?int $eepromAddressRegisterLow = null;
|
public ?int $eearAddressLow = null;
|
||||||
public ?int $eepromControlRegisterAddress = null;
|
public ?int $eecrAddress = null;
|
||||||
public ?int $eepromDataRegisterAddress = null;
|
public ?int $eedrAddress = null;
|
||||||
public ?int $spmcRegisterStartAddress = null;
|
public ?int $spmcrAddress = null;
|
||||||
public ?int $osccalAddress = null;
|
public ?int $osccalAddress = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -207,31 +207,31 @@ class ValidationService extends \Targets\TargetDescriptionFiles\Services\Validat
|
|||||||
$failures[] = 'EEPROM page size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'EEPROM page size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($parameters->eepromAddressRegisterHigh === null) {
|
if ($parameters->eearAddressHigh === null) {
|
||||||
$failures[] = 'Missing EEARH address';
|
$failures[] = 'Missing EEARH address';
|
||||||
|
|
||||||
} elseif ($parameters->eepromAddressRegisterHigh > 0xFF) {
|
} elseif ($parameters->eearAddressHigh > 0xFF) {
|
||||||
$failures[] = 'EEARH address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'EEARH address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($parameters->eepromAddressRegisterLow === null) {
|
if ($parameters->eearAddressLow === null) {
|
||||||
$failures[] = 'Missing EEARL address';
|
$failures[] = 'Missing EEARL address';
|
||||||
|
|
||||||
} elseif ($parameters->eepromAddressRegisterLow > 0xFF) {
|
} elseif ($parameters->eearAddressLow > 0xFF) {
|
||||||
$failures[] = 'EEARL address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'EEARL address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($parameters->eepromControlRegisterAddress === null) {
|
if ($parameters->eecrAddress === null) {
|
||||||
$failures[] = 'Missing EECR address';
|
$failures[] = 'Missing EECR address';
|
||||||
|
|
||||||
} elseif ($parameters->eepromControlRegisterAddress > 0xFF) {
|
} elseif ($parameters->eecrAddress > 0xFF) {
|
||||||
$failures[] = 'EECR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'EECR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($parameters->eepromDataRegisterAddress === null) {
|
if ($parameters->eedrAddress === null) {
|
||||||
$failures[] = 'Missing EEDR address';
|
$failures[] = 'Missing EEDR address';
|
||||||
|
|
||||||
} elseif ($parameters->eepromDataRegisterAddress > 0xFF) {
|
} elseif ($parameters->eedrAddress > 0xFF) {
|
||||||
$failures[] = 'EEDR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'EEDR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -242,17 +242,17 @@ class ValidationService extends \Targets\TargetDescriptionFiles\Services\Validat
|
|||||||
$failures[] = 'OCD revision size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'OCD revision size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($parameters->ocdDataRegister === null) {
|
if ($parameters->ocdDataRegisterAddress === null) {
|
||||||
$failures[] = 'Missing OCDR address';
|
$failures[] = 'Missing OCDR address';
|
||||||
|
|
||||||
} elseif ($parameters->ocdDataRegister > 0xFF) {
|
} elseif ($parameters->ocdDataRegisterAddress > 0xFF) {
|
||||||
$failures[] = 'OCDR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'OCDR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($parameters->spmcRegisterStartAddress === null) {
|
if ($parameters->spmcrAddress === null) {
|
||||||
$failures[] = 'Missing SPMCR start address';
|
$failures[] = 'Missing SPMCR start address';
|
||||||
|
|
||||||
} elseif ($parameters->spmcRegisterStartAddress > 0xFF) {
|
} elseif ($parameters->spmcrAddress > 0xFF) {
|
||||||
$failures[] = 'SPMCR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'SPMCR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -368,31 +368,31 @@ class ValidationService extends \Targets\TargetDescriptionFiles\Services\Validat
|
|||||||
$failures[] = 'EEPROM page size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'EEPROM page size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($parameters->eepromAddressRegisterHigh === null) {
|
if ($parameters->eearAddressHigh === null) {
|
||||||
$failures[] = 'Missing EEARH address';
|
$failures[] = 'Missing EEARH address';
|
||||||
|
|
||||||
} elseif ($parameters->eepromAddressRegisterHigh > 0xFF) {
|
} elseif ($parameters->eearAddressHigh > 0xFF) {
|
||||||
$failures[] = 'EEARH address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'EEARH address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($parameters->eepromAddressRegisterLow === null) {
|
if ($parameters->eearAddressLow === null) {
|
||||||
$failures[] = 'Missing EEARL address';
|
$failures[] = 'Missing EEARL address';
|
||||||
|
|
||||||
} elseif ($parameters->eepromAddressRegisterLow > 0xFF) {
|
} elseif ($parameters->eearAddressLow > 0xFF) {
|
||||||
$failures[] = 'EEARL address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'EEARL address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($parameters->eepromControlRegisterAddress === null) {
|
if ($parameters->eecrAddress === null) {
|
||||||
$failures[] = 'Missing EECR address';
|
$failures[] = 'Missing EECR address';
|
||||||
|
|
||||||
} elseif ($parameters->eepromControlRegisterAddress > 0xFF) {
|
} elseif ($parameters->eecrAddress > 0xFF) {
|
||||||
$failures[] = 'EECR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'EECR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($parameters->eepromDataRegisterAddress === null) {
|
if ($parameters->eedrAddress === null) {
|
||||||
$failures[] = 'Missing EEDR address';
|
$failures[] = 'Missing EEDR address';
|
||||||
|
|
||||||
} elseif ($parameters->eepromDataRegisterAddress > 0xFF) {
|
} elseif ($parameters->eedrAddress > 0xFF) {
|
||||||
$failures[] = 'EEDR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'EEDR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -403,17 +403,17 @@ class ValidationService extends \Targets\TargetDescriptionFiles\Services\Validat
|
|||||||
$failures[] = 'OCD revision size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'OCD revision size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($parameters->ocdDataRegister === null) {
|
if ($parameters->ocdDataRegisterAddress === null) {
|
||||||
$failures[] = 'Missing OCDR address';
|
$failures[] = 'Missing OCDR address';
|
||||||
|
|
||||||
} elseif ($parameters->ocdDataRegister > 0xFF) {
|
} elseif ($parameters->ocdDataRegisterAddress > 0xFF) {
|
||||||
$failures[] = 'OCDR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'OCDR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($parameters->spmcRegisterStartAddress === null) {
|
if ($parameters->spmcrAddress === null) {
|
||||||
$failures[] = 'Missing SPMCR start address';
|
$failures[] = 'Missing SPMCR start address';
|
||||||
|
|
||||||
} elseif ($parameters->spmcRegisterStartAddress > 0xFF) {
|
} elseif ($parameters->spmcrAddress > 0xFF) {
|
||||||
$failures[] = 'SPMCR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
$failures[] = 'SPMCR address size exceeds 0xFF - corresponding EDBG device parameter size is 8 bits';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -990,22 +990,22 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr
|
|||||||
this->setParameter(Avr8EdbgParameters::DEVICE_OCD_REVISION, parameters.ocdRevision);
|
this->setParameter(Avr8EdbgParameters::DEVICE_OCD_REVISION, parameters.ocdRevision);
|
||||||
|
|
||||||
Logger::debug("Setting OCD_DATA_REGISTER AVR8 device parameter");
|
Logger::debug("Setting OCD_DATA_REGISTER AVR8 device parameter");
|
||||||
this->setParameter(Avr8EdbgParameters::DEVICE_OCD_DATA_REGISTER, parameters.ocdDataRegister);
|
this->setParameter(Avr8EdbgParameters::DEVICE_OCD_DATA_REGISTER, parameters.ocdDataRegisterAddress);
|
||||||
|
|
||||||
Logger::debug("Setting EEARL_ADDR AVR8 device parameter");
|
Logger::debug("Setting EEARL_ADDR AVR8 device parameter");
|
||||||
this->setParameter(Avr8EdbgParameters::DEVICE_EEARL_ADDR, parameters.eepromAddressRegisterLow);
|
this->setParameter(Avr8EdbgParameters::DEVICE_EEARL_ADDR, parameters.eearAddressLow);
|
||||||
|
|
||||||
Logger::debug("Setting EEARH_ADDR AVR8 device parameter");
|
Logger::debug("Setting EEARH_ADDR AVR8 device parameter");
|
||||||
this->setParameter(Avr8EdbgParameters::DEVICE_EEARH_ADDR, parameters.eepromAddressRegisterHigh);
|
this->setParameter(Avr8EdbgParameters::DEVICE_EEARH_ADDR, parameters.eearAddressHigh);
|
||||||
|
|
||||||
Logger::debug("Setting EECR_ADDR AVR8 device parameter");
|
Logger::debug("Setting EECR_ADDR AVR8 device parameter");
|
||||||
this->setParameter(Avr8EdbgParameters::DEVICE_EECR_ADDR, parameters.eepromControlRegisterAddress);
|
this->setParameter(Avr8EdbgParameters::DEVICE_EECR_ADDR, parameters.eecrAddress);
|
||||||
|
|
||||||
Logger::debug("Setting EEDR_ADDR AVR8 device parameter");
|
Logger::debug("Setting EEDR_ADDR AVR8 device parameter");
|
||||||
this->setParameter(Avr8EdbgParameters::DEVICE_EEDR_ADDR, parameters.eepromDataRegisterAddress);
|
this->setParameter(Avr8EdbgParameters::DEVICE_EEDR_ADDR, parameters.eedrAddress);
|
||||||
|
|
||||||
Logger::debug("Setting SPMCR_REGISTER AVR8 device parameter");
|
Logger::debug("Setting SPMCR_REGISTER AVR8 device parameter");
|
||||||
this->setParameter(Avr8EdbgParameters::DEVICE_SPMCR_REGISTER, parameters.spmcRegisterStartAddress);
|
this->setParameter(Avr8EdbgParameters::DEVICE_SPMCR_REGISTER, parameters.spmcrAddress);
|
||||||
|
|
||||||
Logger::debug("Setting OSCCAL_ADDR AVR8 device parameter");
|
Logger::debug("Setting OSCCAL_ADDR AVR8 device parameter");
|
||||||
this->setParameter(Avr8EdbgParameters::DEVICE_OSCCAL_ADDR, parameters.osccalAddress);
|
this->setParameter(Avr8EdbgParameters::DEVICE_OSCCAL_ADDR, parameters.osccalAddress);
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen
|
|||||||
|
|
||||||
const auto& ocdPropertyGroup = targetDescriptionFile.getPropertyGroup("ocd");
|
const auto& ocdPropertyGroup = targetDescriptionFile.getPropertyGroup("ocd");
|
||||||
this->ocdRevision = StringService::toUint8(ocdPropertyGroup.getProperty("ocd_revision").value);
|
this->ocdRevision = StringService::toUint8(ocdPropertyGroup.getProperty("ocd_revision").value);
|
||||||
this->ocdDataRegister = StringService::toUint8(ocdPropertyGroup.getProperty("ocd_datareg").value);
|
this->ocdDataRegisterAddress = StringService::toUint8(ocdPropertyGroup.getProperty("ocd_datareg").value);
|
||||||
|
|
||||||
const auto& eepromRegisterGroupDescriptor = targetDescriptionFile.getTargetPeripheralDescriptor("eeprom")
|
const auto& eepromRegisterGroupDescriptor = targetDescriptionFile.getTargetPeripheralDescriptor("eeprom")
|
||||||
.getRegisterGroupDescriptor("eeprom");
|
.getRegisterGroupDescriptor("eeprom");
|
||||||
@@ -42,29 +42,38 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen
|
|||||||
const auto& eearDescriptor = eepromRegisterGroupDescriptor.tryGetRegisterDescriptor("eear");
|
const auto& eearDescriptor = eepromRegisterGroupDescriptor.tryGetRegisterDescriptor("eear");
|
||||||
if (eearDescriptor.has_value()) {
|
if (eearDescriptor.has_value()) {
|
||||||
const auto startAddress = eearDescriptor->get().startAddress;
|
const auto startAddress = eearDescriptor->get().startAddress;
|
||||||
this->eepromAddressRegisterLow = static_cast<std::uint8_t>(startAddress);
|
this->eearAddressLow = static_cast<std::uint8_t>(startAddress);
|
||||||
this->eepromAddressRegisterHigh = static_cast<std::uint8_t>(
|
|
||||||
eearDescriptor->get().size > 1 ? startAddress >> 2 : startAddress
|
/*
|
||||||
|
* If the target doesn't have a high byte in the `EEAR` address, the `eearAddressHigh` parameter should be
|
||||||
|
* equal to the `eearAddressLow` parameter, as stated in the "EDBG-based Tools Protocols" document.
|
||||||
|
*/
|
||||||
|
this->eearAddressHigh = static_cast<std::uint8_t>(
|
||||||
|
eearDescriptor->get().size > 1 ? startAddress >> 8 : startAddress
|
||||||
);
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
const auto& eearlDescriptor = eepromRegisterGroupDescriptor.getRegisterDescriptor("eearl");
|
const auto& eearlDescriptor = eepromRegisterGroupDescriptor.getRegisterDescriptor("eearl");
|
||||||
this->eepromAddressRegisterLow = static_cast<std::uint8_t>(eearlDescriptor.startAddress);
|
this->eearAddressLow = static_cast<std::uint8_t>(eearlDescriptor.startAddress);
|
||||||
this->eepromAddressRegisterHigh = static_cast<std::uint8_t>(
|
|
||||||
eearlDescriptor.size > 1 ? eearlDescriptor.startAddress >> 2 : eearlDescriptor.startAddress
|
|
||||||
);
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some debugWire targets only have a single-byte `EEARL` register. In the absence of an `EEARH` register,
|
||||||
|
* and if there is no high byte in the `EEARL` register, the `eearAddressHigh` parameter should be equal
|
||||||
|
* to the `eearAddressLow` parameter, as stated in the "EDBG-based Tools Protocols" document.
|
||||||
|
*/
|
||||||
const auto eearhDescriptor = eepromRegisterGroupDescriptor.tryGetRegisterDescriptor("eearh");
|
const auto eearhDescriptor = eepromRegisterGroupDescriptor.tryGetRegisterDescriptor("eearh");
|
||||||
if (eearhDescriptor.has_value()) {
|
this->eearAddressHigh = static_cast<std::uint8_t>(
|
||||||
this->eepromAddressRegisterHigh = static_cast<std::uint8_t>(eearhDescriptor->get().startAddress);
|
eearhDescriptor.has_value()
|
||||||
}
|
? eearhDescriptor->get().startAddress
|
||||||
|
: eearlDescriptor.size > 1 ? eearlDescriptor.startAddress >> 8 : eearlDescriptor.startAddress
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
this->eepromDataRegisterAddress = static_cast<std::uint8_t>(
|
this->eedrAddress = static_cast<std::uint8_t>(
|
||||||
eepromRegisterGroupDescriptor.getRegisterDescriptor("eedr").startAddress
|
eepromRegisterGroupDescriptor.getRegisterDescriptor("eedr").startAddress
|
||||||
);
|
);
|
||||||
|
|
||||||
this->eepromControlRegisterAddress = static_cast<std::uint8_t>(
|
this->eecrAddress = static_cast<std::uint8_t>(
|
||||||
eepromRegisterGroupDescriptor.getRegisterDescriptor("eecr").startAddress
|
eepromRegisterGroupDescriptor.getRegisterDescriptor("eecr").startAddress
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -75,7 +84,7 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen
|
|||||||
?: cpuRegisterGroupDescriptor.tryGetRegisterDescriptor("spmcr");
|
?: cpuRegisterGroupDescriptor.tryGetRegisterDescriptor("spmcr");
|
||||||
|
|
||||||
if (spmcsrDescriptor.has_value()) {
|
if (spmcsrDescriptor.has_value()) {
|
||||||
this->spmcRegisterStartAddress = static_cast<std::uint8_t>(spmcsrDescriptor->get().startAddress);
|
this->spmcrAddress = static_cast<std::uint8_t>(spmcsrDescriptor->get().startAddress);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
const auto& bootLoaderRegisterGroupDescriptor = targetDescriptionFile.getTargetPeripheralDescriptor(
|
const auto& bootLoaderRegisterGroupDescriptor = targetDescriptionFile.getTargetPeripheralDescriptor(
|
||||||
@@ -89,7 +98,7 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen
|
|||||||
throw Exceptions::InternalFatalErrorException("Could not extract SPMCS register from TDF");
|
throw Exceptions::InternalFatalErrorException("Could not extract SPMCS register from TDF");
|
||||||
}
|
}
|
||||||
|
|
||||||
this->spmcRegisterStartAddress = static_cast<std::uint8_t>(spmcsrDescriptor->get().startAddress);
|
this->spmcrAddress = static_cast<std::uint8_t>(spmcsrDescriptor->get().startAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto osccalDescriptor = cpuRegisterGroupDescriptor.tryGetRegisterDescriptor("osccal")
|
const auto osccalDescriptor = cpuRegisterGroupDescriptor.tryGetRegisterDescriptor("osccal")
|
||||||
@@ -122,9 +131,9 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen
|
|||||||
const auto& ioMemorySegment = targetDescriptionFile.getIoMemorySegment();
|
const auto& ioMemorySegment = targetDescriptionFile.getIoMemorySegment();
|
||||||
|
|
||||||
this->osccalAddress -= ioMemorySegment.startAddress;
|
this->osccalAddress -= ioMemorySegment.startAddress;
|
||||||
this->eepromAddressRegisterLow -= ioMemorySegment.startAddress;
|
this->eearAddressLow -= ioMemorySegment.startAddress;
|
||||||
this->eepromAddressRegisterHigh -= ioMemorySegment.startAddress;
|
this->eearAddressHigh -= ioMemorySegment.startAddress;
|
||||||
this->eepromControlRegisterAddress -= ioMemorySegment.startAddress;
|
this->eecrAddress -= ioMemorySegment.startAddress;
|
||||||
this->eepromDataRegisterAddress -= ioMemorySegment.startAddress;
|
this->eedrAddress -= ioMemorySegment.startAddress;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,12 +22,12 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen
|
|||||||
std::uint16_t eepromSize;
|
std::uint16_t eepromSize;
|
||||||
std::uint8_t eepromPageSize;
|
std::uint8_t eepromPageSize;
|
||||||
std::uint8_t ocdRevision;
|
std::uint8_t ocdRevision;
|
||||||
std::uint8_t ocdDataRegister;
|
std::uint8_t ocdDataRegisterAddress;
|
||||||
std::uint8_t eepromAddressRegisterHigh;
|
std::uint8_t eearAddressHigh;
|
||||||
std::uint8_t eepromAddressRegisterLow;
|
std::uint8_t eearAddressLow;
|
||||||
std::uint8_t eepromDataRegisterAddress;
|
std::uint8_t eedrAddress;
|
||||||
std::uint8_t eepromControlRegisterAddress;
|
std::uint8_t eecrAddress;
|
||||||
std::uint8_t spmcRegisterStartAddress;
|
std::uint8_t spmcrAddress;
|
||||||
std::uint8_t osccalAddress;
|
std::uint8_t osccalAddress;
|
||||||
|
|
||||||
DebugWireJtagParameters(const Targets::Microchip::Avr::Avr8Bit::TargetDescriptionFile& targetDescriptionFile);
|
DebugWireJtagParameters(const Targets::Microchip::Avr::Avr8Bit::TargetDescriptionFile& targetDescriptionFile);
|
||||||
|
|||||||
Reference in New Issue
Block a user