diff --git a/build/scripts/Targets/TargetDescriptionFiles/RiscV/Services/ValidationService.php b/build/scripts/Targets/TargetDescriptionFiles/RiscV/Services/ValidationService.php new file mode 100644 index 00000000..c78cd54a --- /dev/null +++ b/build/scripts/Targets/TargetDescriptionFiles/RiscV/Services/ValidationService.php @@ -0,0 +1,63 @@ +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; + } +} diff --git a/build/scripts/ValidateTargetDescriptionFiles.php b/build/scripts/ValidateTargetDescriptionFiles.php index 84776691..9bca12d1 100644 --- a/build/scripts/ValidateTargetDescriptionFiles.php +++ b/build/scripts/ValidateTargetDescriptionFiles.php @@ -2,7 +2,6 @@ use Targets\TargetDescriptionFiles\Services\DiscoveryService; use Targets\TargetDescriptionFiles\Services\Xml\XmlService; -use Targets\TargetDescriptionFiles\Services\ValidationService; use Targets\TargetDescriptionFiles\Avr8\Avr8TargetDescriptionFile; 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/ValidationService.php'; require_once __DIR__ . '/Targets/TargetDescriptionFiles/AVR8/Services/ValidationService.php'; +require_once __DIR__ . '/Targets/TargetDescriptionFiles/RiscV/Services/ValidationService.php'; $xmlService = new XmlService(); -$validationService = new ValidationService(); $avrValidationService = new \Targets\TargetDescriptionFiles\AVR8\Services\ValidationService(); +$rvValidationService = new \Targets\TargetDescriptionFiles\RiscV\Services\ValidationService(); $xmlFiles = []; @@ -53,7 +53,7 @@ foreach ($xmlFiles as $xmlFile) { $validationFailures = $targetDescriptionFile instanceof Avr8TargetDescriptionFile ? $avrValidationService->validateAvr8Tdf($targetDescriptionFile) - : $validationService->validateTdf($targetDescriptionFile); + : $rvValidationService->validateRiscVTdf($targetDescriptionFile); if (in_array($targetDescriptionFile->getConfigurationValue(), $processedTargetConfigValues)) { $validationFailures[] = 'Duplicate target configuration value ("'