ISP parameter extraction in AVR8 TDF validation script

This commit is contained in:
Nav
2022-03-07 15:10:58 +00:00
parent 494729a285
commit 29d1a340ad

View File

@@ -70,6 +70,20 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
public ?int $fuseSegmentSize = null;
public ?int $lockbitsSegmentStartAddress = null;
// ISP parameters
public ?int $ispProgramModeTimeout = null;
public ?int $ispProgramModeStabilizationDelay = null;
public ?int $ispProgramModeCommandExecutionDelay = null;
public ?int $ispProgramModeSyncLoops = null;
public ?int $ispProgramModeByteDelay = null;
public ?int $ispProgramModePollValue = null;
public ?int $ispProgramModePollIndex = null;
public ?int $ispProgramModePreDelay = null;
public ?int $ispProgramModePostDelay = null;
public ?int $ispReadSignaturePollIndex = null;
public ?int $ispReadFusePollIndex = null;
public ?int $ispReadLockPollIndex = null;
protected function init()
{
parent::init();
@@ -143,6 +157,79 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
}
}
$ispParamPropertyGroup = $this->propertyGroupsByName['isp_interface'] ?? null;
if (!empty($ispParamPropertyGroup)) {
if (isset($ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_timeout'])) {
$this->ispProgramModeTimeout = $this->rawValueToInt(
$ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_timeout']->value
);
}
if (isset($ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_stabdelay'])) {
$this->ispProgramModeStabilizationDelay = $this->rawValueToInt(
$ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_stabdelay']->value
);
}
if (isset($ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_cmdexedelay'])) {
$this->ispProgramModeCommandExecutionDelay = $this->rawValueToInt(
$ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_cmdexedelay']->value
);
}
if (isset($ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_synchloops'])) {
$this->ispProgramModeSyncLoops = $this->rawValueToInt(
$ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_synchloops']->value
);
}
if (isset($ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_bytedelay'])) {
$this->ispProgramModeByteDelay = $this->rawValueToInt(
$ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_bytedelay']->value
);
}
if (isset($ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_pollvalue'])) {
$this->ispProgramModePollValue = $this->rawValueToInt(
$ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_pollvalue']->value
);
}
if (isset($ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_pollindex'])) {
$this->ispProgramModePollIndex = $this->rawValueToInt(
$ispParamPropertyGroup->propertiesMappedByName['ispenterprogmode_pollindex']->value
);
}
if (isset($ispParamPropertyGroup->propertiesMappedByName['ispleaveprogmode_predelay'])) {
$this->ispProgramModePreDelay = $this->rawValueToInt(
$ispParamPropertyGroup->propertiesMappedByName['ispleaveprogmode_predelay']->value
);
}
if (isset($ispParamPropertyGroup->propertiesMappedByName['ispleaveprogmode_postdelay'])) {
$this->ispProgramModePostDelay = $this->rawValueToInt(
$ispParamPropertyGroup->propertiesMappedByName['ispleaveprogmode_postdelay']->value
);
}
if (isset($ispParamPropertyGroup->propertiesMappedByName['ispreadsign_pollindex'])) {
$this->ispReadSignaturePollIndex = $this->rawValueToInt(
$ispParamPropertyGroup->propertiesMappedByName['ispreadsign_pollindex']->value
);
}
if (isset($ispParamPropertyGroup->propertiesMappedByName['ispreadfuse_pollindex'])) {
$this->ispReadFusePollIndex = $this->rawValueToInt(
$ispParamPropertyGroup->propertiesMappedByName['ispreadfuse_pollindex']->value
);
}
if (isset($ispParamPropertyGroup->propertiesMappedByName['ispreadlock_pollindex'])) {
$this->ispReadLockPollIndex = $this->rawValueToInt(
$ispParamPropertyGroup->propertiesMappedByName['ispreadlock_pollindex']->value
);
}
}
$progAddressSpace = $this->addressSpacesById['prog'] ?? null;
if (!empty($progAddressSpace)) {
$flashMemorySegment = $progAddressSpace->memorySegmentsByTypeAndName['flash']['flash']