Added PORT peripheral validation for AVR8 TDFs
This commit is contained in:
@@ -484,6 +484,18 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$portPeripheralModule = $this->peripheralModulesByName['port'] ?? null;
|
||||||
|
if (empty($portPeripheralModule)) {
|
||||||
|
$failures[] = 'PORT peripheral module not found.';
|
||||||
|
|
||||||
|
} else {
|
||||||
|
foreach ($portPeripheralModule->instancesMappedByName as $portInstance) {
|
||||||
|
if (empty($portInstance->signals)) {
|
||||||
|
$failures[] = 'No signals defined for port ' . $portInstance->name . ' in PORT peripheral module.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $failures;
|
return $failures;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
namespace Bloom\BuildScripts\TargetDescriptionFiles;
|
namespace Bloom\BuildScripts\TargetDescriptionFiles;
|
||||||
|
|
||||||
require_once __DIR__ . "/RegisterGroup.php";
|
require_once __DIR__ . "/RegisterGroup.php";
|
||||||
|
require_once __DIR__ . "/Signal.php";
|
||||||
|
|
||||||
class ModuleInstance
|
class ModuleInstance
|
||||||
{
|
{
|
||||||
@@ -9,4 +10,7 @@ class ModuleInstance
|
|||||||
|
|
||||||
/** @var RegisterGroup[] */
|
/** @var RegisterGroup[] */
|
||||||
public array $registerGroupsMappedByName = [];
|
public array $registerGroupsMappedByName = [];
|
||||||
|
|
||||||
|
/** @var Signal[] */
|
||||||
|
public array $signals = [];
|
||||||
}
|
}
|
||||||
|
|||||||
9
build/scripts/TargetDescriptionFiles/Signal.php
Normal file
9
build/scripts/TargetDescriptionFiles/Signal.php
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<?php
|
||||||
|
namespace Bloom\BuildScripts\TargetDescriptionFiles;
|
||||||
|
|
||||||
|
class Signal
|
||||||
|
{
|
||||||
|
public ?string $padName = null;
|
||||||
|
public ?string $function = null;
|
||||||
|
public ?int $index = null;
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ require_once __DIR__ . "/AddressSpace.php";
|
|||||||
require_once __DIR__ . "/PropertyGroup.php";
|
require_once __DIR__ . "/PropertyGroup.php";
|
||||||
require_once __DIR__ . "/Module.php";
|
require_once __DIR__ . "/Module.php";
|
||||||
require_once __DIR__ . "/PhysicalInterface.php";
|
require_once __DIR__ . "/PhysicalInterface.php";
|
||||||
|
require_once __DIR__ . "/Signal.php";
|
||||||
|
|
||||||
class TargetDescriptionFile
|
class TargetDescriptionFile
|
||||||
{
|
{
|
||||||
@@ -256,6 +257,18 @@ class TargetDescriptionFile
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$signalElements = $instanceElement->xpath('signals/signal');
|
||||||
|
foreach ($signalElements as $signalElement) {
|
||||||
|
$signalAttrs = $signalElement->attributes();
|
||||||
|
$signal = new Signal();
|
||||||
|
|
||||||
|
$signal->padName = isset($signalAttrs['pad']) ? $signalAttrs['pad'] : null;
|
||||||
|
$signal->function = isset($signalAttrs['function']) ? $signalAttrs['function'] : null;
|
||||||
|
$signal->index = isset($signalAttrs['index']) ? $this->rawValueToInt($signalAttrs['index']) : null;
|
||||||
|
|
||||||
|
$moduleInstance->signals[] = $signal;
|
||||||
|
}
|
||||||
|
|
||||||
$module->instancesMappedByName[strtolower($moduleInstance->name)] = $moduleInstance;
|
$module->instancesMappedByName[strtolower($moduleInstance->name)] = $moduleInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user