diff --git a/src/DebugToolDrivers/TargetInterfaces/RiscV/RiscVDebugInterface.hpp b/src/DebugToolDrivers/TargetInterfaces/RiscV/RiscVDebugInterface.hpp index 0a5682a8..e16796ea 100644 --- a/src/DebugToolDrivers/TargetInterfaces/RiscV/RiscVDebugInterface.hpp +++ b/src/DebugToolDrivers/TargetInterfaces/RiscV/RiscVDebugInterface.hpp @@ -2,6 +2,7 @@ #include +#include "src/Targets/RiscV/RiscVGeneric.hpp" #include "src/Targets/RiscV/DebugModule/DebugModule.hpp" #include "src/Targets/RiscV/DebugModule/Registers/RegisterAddresses.hpp" diff --git a/src/Targets/RiscV/RiscV.cpp b/src/Targets/RiscV/RiscV.cpp index 48e97944..6d5e55e8 100644 --- a/src/Targets/RiscV/RiscV.cpp +++ b/src/Targets/RiscV/RiscV.cpp @@ -11,6 +11,7 @@ #include "DebugModule/Registers/MemoryAccessControlField.hpp" #include "src/Exceptions/Exception.hpp" +#include "src/Exceptions/InvalidConfig.hpp" #include "src/TargetController/Exceptions/TargetOperationFailure.hpp" #include "src/Services/StringService.hpp" @@ -60,6 +61,15 @@ namespace Targets::RiscV void RiscV::activate() { this->riscVDebugInterface->activate({}); + const auto deviceId = this->riscVDebugInterface->getDeviceId(); + const auto tdfDeviceId = this->targetDescriptionFile.getTargetId(); + if (deviceId != tdfDeviceId) { + throw Exceptions::InvalidConfig( + "RISC-V target ID mismatch - expected " + tdfDeviceId + " but got " + deviceId + + ". Please check target configuration." + ); + } + this->hartIndices = this->discoverHartIndices(); if (this->hartIndices.empty()) {