Corrected bug in RISC-V debug translator where a reset wasn't always keeping the target halted

This commit is contained in:
Nav
2024-10-19 14:22:12 +01:00
parent 1bb2214721
commit 00d6f5fb71

View File

@@ -204,20 +204,20 @@ namespace DebugToolDrivers::Protocols::RiscVDebugSpec
}
void DebugTranslator::reset() {
auto controlRegister = ControlRegister{
this->writeDebugModuleControlRegister(ControlRegister{
.debugModuleActive = true,
.ndmReset = true,
.setResetHaltRequest = true,
.selectedHartIndex = this->selectedHartIndex,
.haltRequest = true,
};
});
this->writeDebugModuleControlRegister(ControlRegister{
.debugModuleActive = true,
.selectedHartIndex = this->selectedHartIndex,
.haltRequest = true,
});
this->writeDebugModuleControlRegister(controlRegister);
controlRegister.ndmReset = false;
this->writeDebugModuleControlRegister(controlRegister);
auto statusRegister = this->readDebugModuleStatusRegister();
for (
auto attempts = 0;
!statusRegister.allHaveReset
@@ -233,6 +233,7 @@ namespace DebugToolDrivers::Protocols::RiscVDebugSpec
.clearResetHaltRequest = true,
.selectedHartIndex = this->selectedHartIndex,
.acknowledgeHaveReset = true,
.haltRequest = true,
});
if (!statusRegister.allHaveReset) {