2024-07-23 21:14:22 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <cstdint>
|
|
|
|
|
#include <string>
|
|
|
|
|
|
2024-11-18 21:11:54 +00:00
|
|
|
#include "Common.hpp"
|
2024-07-23 21:14:22 +01:00
|
|
|
#include "DebugModule/DebugModule.hpp"
|
|
|
|
|
#include "DebugModule/Registers/RegisterAddresses.hpp"
|
|
|
|
|
|
2025-02-02 13:32:25 +00:00
|
|
|
namespace DebugToolDrivers::Protocols::RiscVDebug
|
2024-07-23 21:14:22 +01:00
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* Provides access to the RISC-V target's debug transport module (DTM).
|
|
|
|
|
*/
|
|
|
|
|
class DebugTransportModuleInterface
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
/**
|
|
|
|
|
* Should read the value of a debug module register.
|
|
|
|
|
*
|
|
|
|
|
* @param address
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
virtual DebugModule::RegisterValue readDebugModuleRegister(DebugModule::RegisterAddress address) = 0;
|
|
|
|
|
|
|
|
|
|
DebugModule::RegisterValue readDebugModuleRegister(DebugModule::Registers::RegisterAddress address) {
|
|
|
|
|
return this->readDebugModuleRegister(static_cast<DebugModule::RegisterAddress>(address));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Should write a value to a debug module register.
|
|
|
|
|
*
|
|
|
|
|
* @param address
|
|
|
|
|
* @param value
|
|
|
|
|
*/
|
|
|
|
|
virtual void writeDebugModuleRegister(
|
|
|
|
|
DebugModule::RegisterAddress address,
|
|
|
|
|
DebugModule::RegisterValue value
|
|
|
|
|
) = 0;
|
|
|
|
|
|
|
|
|
|
void writeDebugModuleRegister(
|
|
|
|
|
DebugModule::Registers::RegisterAddress address,
|
|
|
|
|
DebugModule::RegisterValue value
|
|
|
|
|
) {
|
|
|
|
|
return this->writeDebugModuleRegister(
|
|
|
|
|
static_cast<DebugModule::RegisterAddress>(address),
|
|
|
|
|
value
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
}
|