RISC-V TDF Validation
This commit is contained in:
@@ -0,0 +1,63 @@
|
|||||||
|
<?php
|
||||||
|
namespace Targets\TargetDescriptionFiles\RiscV\Services;
|
||||||
|
|
||||||
|
use Targets\TargetDescriptionFiles\TargetDescriptionFile;
|
||||||
|
|
||||||
|
require_once __DIR__ . '/../../Services/ValidationService.php';
|
||||||
|
require_once __DIR__ . '/../../TargetDescriptionFile.php';
|
||||||
|
|
||||||
|
class ValidationService extends \Targets\TargetDescriptionFiles\Services\ValidationService
|
||||||
|
{
|
||||||
|
public function validateRiscVTdf(TargetDescriptionFile $tdf): array
|
||||||
|
{
|
||||||
|
$failures = parent::validateTdf($tdf);
|
||||||
|
|
||||||
|
if ($tdf->getAddressSpace('system') === null) {
|
||||||
|
$failures[] = 'Missing system address space';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($tdf->getAddressSpace('csr') === null) {
|
||||||
|
$failures[] = 'Missing CSR address space';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($tdf->getAddressSpace('gpr') === null) {
|
||||||
|
$failures[] = 'Missing GPR address space';
|
||||||
|
}
|
||||||
|
|
||||||
|
$mainProgramSegment = $tdf->getMemorySegment('system', 'main_program');
|
||||||
|
if ($mainProgramSegment === null) {
|
||||||
|
$failures[] = 'Missing main program memory segment';
|
||||||
|
}
|
||||||
|
|
||||||
|
$bootProgramSegment = $tdf->getMemorySegment('system', 'boot_program');
|
||||||
|
if ($bootProgramSegment === null) {
|
||||||
|
$failures[] = 'Missing boot program memory segment';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
$mainProgramSegment !== null
|
||||||
|
&& $bootProgramSegment !== null
|
||||||
|
&& $mainProgramSegment->size() <= $bootProgramSegment->size()
|
||||||
|
) {
|
||||||
|
$failures[] = 'Main program segment size is not greater than the boot segment size';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($tdf->getMemorySegment('system', 'internal_ram') === null) {
|
||||||
|
$failures[] = 'Missing internal ram memory segment';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($tdf->getProperty('wch_link_interface', 'programming_opcode_key') === null) {
|
||||||
|
$failures[] = 'Missing "programming_opcode_key" property';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($tdf->getProperty('wch_link_interface', 'programming_block_size') === null) {
|
||||||
|
$failures[] = 'Missing "programming_block_size" property';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($tdf->getProperty('riscv_debug_module', 'trigger_count') === null) {
|
||||||
|
$failures[] = 'Missing "trigger_count" property';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
use Targets\TargetDescriptionFiles\Services\DiscoveryService;
|
use Targets\TargetDescriptionFiles\Services\DiscoveryService;
|
||||||
use Targets\TargetDescriptionFiles\Services\Xml\XmlService;
|
use Targets\TargetDescriptionFiles\Services\Xml\XmlService;
|
||||||
use Targets\TargetDescriptionFiles\Services\ValidationService;
|
|
||||||
use Targets\TargetDescriptionFiles\Avr8\Avr8TargetDescriptionFile;
|
use Targets\TargetDescriptionFiles\Avr8\Avr8TargetDescriptionFile;
|
||||||
|
|
||||||
define('TDF_PATH', $argv[1] ?? null);
|
define('TDF_PATH', $argv[1] ?? null);
|
||||||
@@ -21,11 +20,12 @@ require_once __DIR__ . '/Targets/TargetDescriptionFiles/Services/DiscoveryServic
|
|||||||
require_once __DIR__ . '/Targets/TargetDescriptionFiles/Services/Xml/XmlService.php';
|
require_once __DIR__ . '/Targets/TargetDescriptionFiles/Services/Xml/XmlService.php';
|
||||||
require_once __DIR__ . '/Targets/TargetDescriptionFiles/Services/ValidationService.php';
|
require_once __DIR__ . '/Targets/TargetDescriptionFiles/Services/ValidationService.php';
|
||||||
require_once __DIR__ . '/Targets/TargetDescriptionFiles/AVR8/Services/ValidationService.php';
|
require_once __DIR__ . '/Targets/TargetDescriptionFiles/AVR8/Services/ValidationService.php';
|
||||||
|
require_once __DIR__ . '/Targets/TargetDescriptionFiles/RiscV/Services/ValidationService.php';
|
||||||
|
|
||||||
$xmlService = new XmlService();
|
$xmlService = new XmlService();
|
||||||
|
|
||||||
$validationService = new ValidationService();
|
|
||||||
$avrValidationService = new \Targets\TargetDescriptionFiles\AVR8\Services\ValidationService();
|
$avrValidationService = new \Targets\TargetDescriptionFiles\AVR8\Services\ValidationService();
|
||||||
|
$rvValidationService = new \Targets\TargetDescriptionFiles\RiscV\Services\ValidationService();
|
||||||
|
|
||||||
$xmlFiles = [];
|
$xmlFiles = [];
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ foreach ($xmlFiles as $xmlFile) {
|
|||||||
|
|
||||||
$validationFailures = $targetDescriptionFile instanceof Avr8TargetDescriptionFile
|
$validationFailures = $targetDescriptionFile instanceof Avr8TargetDescriptionFile
|
||||||
? $avrValidationService->validateAvr8Tdf($targetDescriptionFile)
|
? $avrValidationService->validateAvr8Tdf($targetDescriptionFile)
|
||||||
: $validationService->validateTdf($targetDescriptionFile);
|
: $rvValidationService->validateRiscVTdf($targetDescriptionFile);
|
||||||
|
|
||||||
if (in_array($targetDescriptionFile->getConfigurationValue(), $processedTargetConfigValues)) {
|
if (in_array($targetDescriptionFile->getConfigurationValue(), $processedTargetConfigValues)) {
|
||||||
$validationFailures[] = 'Duplicate target configuration value ("'
|
$validationFailures[] = 'Duplicate target configuration value ("'
|
||||||
|
|||||||
Reference in New Issue
Block a user