Massive refactor to accommodate RISC-V targets
- Refactored entire codebase (excluding the Insight component) to accommodate multiple target architectures (no longer specific to AVR) - Deleted 'generate SVD' GDB monitor command - I will eventually move this functionality to the Bloom website - Added unit size property to address spaces - Many other changes which I couldn't be bothered to describe here
This commit is contained in:
@@ -8,16 +8,18 @@ class AddressSpace
|
||||
public ?string $key = null;
|
||||
public ?int $startAddress = null;
|
||||
public ?int $size = null;
|
||||
public ?int $unitSize = null;
|
||||
public ?string $endianness = null;
|
||||
|
||||
/** @var MemorySegment[] */
|
||||
public array $memorySegments = [];
|
||||
|
||||
public function __construct(?string $key, ?int $startAddress, ?int $size, ?string $endianness)
|
||||
public function __construct(?string $key, ?int $startAddress, ?int $size, ?int $unitSize, ?string $endianness)
|
||||
{
|
||||
$this->key = $key;
|
||||
$this->startAddress = $startAddress;
|
||||
$this->size = $size;
|
||||
$this->unitSize = $unitSize;
|
||||
$this->endianness = $endianness;
|
||||
}
|
||||
|
||||
|
||||
@@ -93,10 +93,7 @@ class MemorySegment
|
||||
&& $endAddress !== null
|
||||
&& $other->startAddress !== null
|
||||
&& $otherEndAddress !== null
|
||||
&& (
|
||||
($other->startAddress <= $this->startAddress && $otherEndAddress >= $this->startAddress)
|
||||
|| ($other->startAddress >= $this->startAddress && $other->startAddress <= $endAddress)
|
||||
)
|
||||
&& $this->startAddress <= $otherEndAddress && $other->startAddress <= $endAddress
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
@@ -323,6 +323,7 @@ class AtdfService
|
||||
isset($attributes['id']) ? strtolower($attributes['id']) : null,
|
||||
$this->stringService->tryStringToInt($attributes['start'] ?? null),
|
||||
$this->stringService->tryStringToInt($attributes['size'] ?? null),
|
||||
null,
|
||||
$attributes['endianness'] ?? null,
|
||||
);
|
||||
|
||||
|
||||
@@ -606,7 +606,7 @@ class ValidationService
|
||||
if ($register->size === null) {
|
||||
$failures[] = 'Missing size';
|
||||
|
||||
} elseif ($register->size < 1) {
|
||||
} elseif ($register->size < 1 || $register->size > 8) {
|
||||
$failures[] = 'Invalid size (' . $register->size . ')';
|
||||
}
|
||||
|
||||
|
||||
@@ -116,6 +116,7 @@ class FromXmlService
|
||||
$attributes['key'] ?? null,
|
||||
$this->stringService->tryStringToInt($attributes['start'] ?? null),
|
||||
$this->stringService->tryStringToInt($attributes['size'] ?? null),
|
||||
$this->stringService->tryStringToInt($attributes['unit-size'] ?? null),
|
||||
$attributes['endianness'] ?? null,
|
||||
);
|
||||
|
||||
|
||||
@@ -70,6 +70,10 @@ class ToXmlService
|
||||
$element->setAttribute('start', $this->stringService->tryIntToHex($addressSpace->startAddress, 8));
|
||||
$element->setAttribute('size', $addressSpace->size);
|
||||
|
||||
if (!empty($addressSpace->unitSize)) {
|
||||
$element->setAttribute('unit-size', $addressSpace->unitSize);
|
||||
}
|
||||
|
||||
if (!empty($addressSpace->endianness)) {
|
||||
$element->setAttribute('endianness', strtolower($addressSpace->endianness));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user