5#include "libxr_def.hpp"
36enum class CommandId : std::uint8_t
43 TRANSFER_CONFIGURE = 0x04,
45 TRANSFER_BLOCK = 0x06,
46 TRANSFER_ABORT = 0x07,
57 JTAG_CONFIGURE = 0x15,
72 QUEUE_COMMANDS = 0x7E,
73 EXECUTE_COMMANDS = 0x7F,
82enum class InfoId : std::uint8_t
87 FIRMWARE_VERSION = 0x04,
93 PRODUCT_FIRMWARE_VERSION = 0x09,
96 TIMESTAMP_CLOCK = 0xF1,
97 SWO_BUFFER_SIZE = 0xFD,
114enum class Status : std::uint8_t
120enum class Port : std::uint8_t
127enum class DebugPort : std::uint8_t
138static constexpr std::uint8_t DAP_TRANSFER_APNDP = (1u << 0);
139static constexpr std::uint8_t DAP_TRANSFER_RNW = (1u << 1);
140static constexpr std::uint8_t DAP_TRANSFER_A2 = (1u << 2);
141static constexpr std::uint8_t DAP_TRANSFER_A3 = (1u << 3);
142static constexpr std::uint8_t DAP_TRANSFER_MATCH_VALUE = (1u << 4);
143static constexpr std::uint8_t DAP_TRANSFER_MATCH_MASK = (1u << 5);
147static constexpr std::uint8_t DAP_TRANSFER_OK = (1u << 0);
148static constexpr std::uint8_t DAP_TRANSFER_WAIT = (1u << 1);
149static constexpr std::uint8_t DAP_TRANSFER_FAULT = (1u << 2);
150static constexpr std::uint8_t DAP_TRANSFER_ERROR = (1u << 3);
151static constexpr std::uint8_t DAP_TRANSFER_MISMATCH = (1u << 4);
158static constexpr std::uint8_t DAP_SWJ_SWCLK_TCK = (1u << 0);
159static constexpr std::uint8_t DAP_SWJ_SWDIO_TMS = (1u << 1);
160static constexpr std::uint8_t DAP_SWJ_TDI = (1u << 2);
161static constexpr std::uint8_t DAP_SWJ_TDO = (1u << 3);
162static constexpr std::uint8_t DAP_SWJ_NTRST = (1u << 5);
163static constexpr std::uint8_t DAP_SWJ_NRESET = (1u << 7);
169static constexpr std::uint8_t SWD_SEQUENCE_CLK = 0x3Fu;
170static constexpr std::uint8_t SWD_SEQUENCE_DIN = (1u << 7);
172static constexpr std::uint8_t JTAG_SEQUENCE_TCK = 0x3Fu;
173static constexpr std::uint8_t JTAG_SEQUENCE_TMS = (1u << 6);
174static constexpr std::uint8_t JTAG_SEQUENCE_TDO = (1u << 7);
182static inline constexpr std::uint8_t
req_addr2b(std::uint8_t req)
184 return static_cast<std::uint8_t
>(((req & DAP_TRANSFER_A2) ? 1u : 0u) |
185 ((req & DAP_TRANSFER_A3) ? 2u : 0u));
191 return (req & DAP_TRANSFER_APNDP) != 0u;
197 return (req & DAP_TRANSFER_RNW) != 0u;
static constexpr std::uint8_t DAP_CAP_SWO
支持 SWO。Supports SWO.
static constexpr bool req_is_read(std::uint8_t req)
判断是否为读操作。Check if request is read (RnW=1).
static constexpr std::uint16_t MAX_RESPONSE_SIZE
最大响应长度。Max response size.
static constexpr std::uint8_t DAP_TRANSFER_TIMESTAMP
v2
static constexpr std::uint16_t MAX_REQUEST_SIZE
最大请求长度。Max request size.
static constexpr std::uint8_t DAP_TRANSFER_NO_TARGET
v2
static constexpr std::uint8_t DAP_CAP_SWD
支持 SWD。Supports SWD.
static constexpr std::uint8_t DAP_CAP_JTAG
支持 JTAG。Supports JTAG.
static constexpr std::uint8_t req_addr2b(std::uint8_t req)
static constexpr bool req_is_ap(std::uint8_t req)
判断是否为 AP 访问。Check if request targets AP.
static constexpr bool req_need_timestamp(std::uint8_t req)
判断是否需要 timestamp。Check if request needs timestamp.
@ OK
操作成功 | Operation successful
std::uint16_t response_generated
已生成响应字节数。Response bytes generated.
std::uint16_t request_consumed
已消耗请求字节数。Request bytes consumed.
volatile bool transfer_abort
传输中止标志。Transfer abort flag.
SwdConfig swd_cfg
SWD 配置。SWD configuration.
DebugPort debug_port
当前调试端口。Current debug port.
TransferConfig transfer_cfg
Transfer 配置。Transfer configuration.
bool data_phase
Data phase 标志。Data phase flag.
std::uint8_t turnaround
Turnaround 周期。Turnaround cycles.
std::uint16_t retry_count
WAIT 重试次数。WAIT retry count.
std::uint8_t idle_cycles
空闲时钟插入。Idle cycles insertion.
std::uint32_t match_mask
MATCH 掩码。MATCH mask.
std::uint16_t match_retry
MATCH 重试次数。MATCH retry count.