libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
jtag.hpp
1#pragma once
2
3#include <cstdint>
4
5#include "libxr_def.hpp"
6
7namespace LibXR::Debug
8{
12enum class TapState : uint8_t
13{
14 TEST_LOGIC_RESET = 0,
15 RUN_TEST_IDLE,
16 SELECT_DR_SCAN,
17 CAPTURE_DR,
18 SHIFT_DR,
19 EXIT1_DR,
20 PAUSE_DR,
21 EXIT2_DR,
22 UPDATE_DR,
23 SELECT_IR_SCAN,
24 CAPTURE_IR,
25 SHIFT_IR,
26 EXIT1_IR,
27 PAUSE_IR,
28 EXIT2_IR,
29 UPDATE_IR,
30};
31
36class Jtag
37{
38 public:
39 virtual ~Jtag() = default;
40
41 Jtag(const Jtag&) = delete;
42 Jtag& operator=(const Jtag&) = delete;
43
49 virtual ErrorCode SetClockHz(uint32_t hz) = 0;
50
54 virtual void Close() = 0;
55
60 virtual ErrorCode ResetTap() = 0;
61
67 virtual ErrorCode GotoState(TapState target) = 0;
68
76 virtual ErrorCode ShiftIR(uint32_t bits, const uint8_t* in_lsb_first,
77 uint8_t* out_lsb_first) = 0;
78
86 virtual ErrorCode ShiftDR(uint32_t bits, const uint8_t* in_lsb_first,
87 uint8_t* out_lsb_first) = 0;
88
97 virtual ErrorCode Sequence(uint32_t cycles, bool tms, const uint8_t* tdi_lsb_first,
98 uint8_t* tdo_lsb_first) = 0;
99
104 virtual void IdleClocks(uint32_t cycles) = 0;
105
106 protected:
107 Jtag() = default;
108};
109
110} // namespace LibXR::Debug
Abstract JTAG base class providing TAP control and IR/DR shifting.
Definition jtag.hpp:37
virtual void Close()=0
Close JTAG and release resources.
virtual ErrorCode ShiftDR(uint32_t bits, const uint8_t *in_lsb_first, uint8_t *out_lsb_first)=0
Shift DR, LSB first.
virtual ErrorCode ResetTap()=0
Reset TAP to Test-Logic-Reset.
virtual ErrorCode ShiftIR(uint32_t bits, const uint8_t *in_lsb_first, uint8_t *out_lsb_first)=0
Shift IR, LSB first.
virtual ErrorCode Sequence(uint32_t cycles, bool tms, const uint8_t *tdi_lsb_first, uint8_t *tdo_lsb_first)=0
Shift a fixed-TMS sequence, LSB first.
virtual ErrorCode SetClockHz(uint32_t hz)=0
Set TCK frequency, if supported.
virtual void IdleClocks(uint32_t cycles)=0
Insert idle clock cycles in Run-Test/Idle.
virtual ErrorCode GotoState(TapState target)=0
Move to the requested TAP state.
ErrorCode
定义错误码枚举