1
2
3
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
53
54
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/* ... */
#ifndef OPENOCD_JTAG_HLA_HLA_LAYOUT_H
#define OPENOCD_JTAG_HLA_HLA_LAYOUT_H
#include <target/armv7m_trace.h>
#include <target/arm_tpiu_swo.h>
struct hl_interface;
struct hl_interface_param;
extern struct hl_layout_api stlink_usb_layout_api;
extern struct hl_layout_api icdi_usb_layout_api;
extern struct hl_layout_api nulink_usb_layout_api;
struct hl_layout_api {
int (*open)(struct hl_interface_param *param, void **handle);
int (*close)(void *handle);
int (*reset)(void *handle);
int (*assert_srst)(void *handle, int srst);
int (*run)(void *handle);
int (*halt)(void *handle);
int (*step)(void *handle);
int (*read_regs)(void *handle);
/* ... */
int (*read_reg)(void *handle, unsigned int regsel, uint32_t *val);
/* ... */
int (*write_reg)(void *handle, unsigned int regsel, uint32_t val);
int (*read_mem)(void *handle, uint32_t addr, uint32_t size,
uint32_t count, uint8_t *buffer);
int (*write_mem)(void *handle, uint32_t addr, uint32_t size,
uint32_t count, const uint8_t *buffer);
int (*write_debug_reg)(void *handle, uint32_t addr, uint32_t val);
/* ... */
int (*idcode)(void *handle, uint32_t *idcode);
int (*override_target)(const char *targetname);
int (*custom_command)(void *handle, const char *command);
int (*speed)(void *handle, int khz, bool query);
/* ... */
int (*config_trace)(void *handle, bool enabled,
enum tpiu_pin_protocol pin_protocol, uint32_t port_size,
unsigned int *trace_freq, unsigned int traceclkin_freq,
uint16_t *prescaler);
/* ... */
int (*poll_trace)(void *handle, uint8_t *buf, size_t *size);
enum target_state (*state)(void *fd);
...};
struct hl_layout {
char *name;
int (*open)(struct hl_interface *adapter);
int (*close)(struct hl_interface *adapter);
struct hl_layout_api *api;
...};
const struct hl_layout *hl_layout_get_list(void);
int hl_layout_init(struct hl_interface *adapter);
/* ... */
#endif