-
Notifications
You must be signed in to change notification settings - Fork 3
/
jlinkarm.pas
301 lines (271 loc) · 8.4 KB
/
jlinkarm.pas
1
2
3
4
5
6
7
8
9
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
unit jlinkarm;
interface
uses
SysUtils, Windows;
(*
RegIndex RegName
0 R0
1 R1
2 R2
3 R3
4 R4
5 R5
6 R6
7 R7
8 R8
9 R9
10 R10
11 R11
12 R12
13 R13
14 R14
15 R15
16 XPSR
17 MSP
18 PSP
19 RAZ
20 CFBP
21 APSR
22 EPSR
23 IPSR
24 PRIMASK
25 BASEPRI
26 FAULTMASK
27 CONTROL
28 BASEPRI_MAX
29 IAPSR
30 EAPSR
31 IEPSR
32 FPSCR
33 FPS0
34 FPS1
35 FPS2
36 FPS3
37 FPS4
38 FPS5
39 FPS6
40 FPS7
41 FPS8
42 FPS9
43 FPS10
44 FPS11
45 FPS12
46 FPS13
47 FPS14
48 FPS15
49 FPS16
50 FPS17
51 FPS18
52 FPS19
53 FPS20
54 FPS21
55 FPS22
56 FPS23
57 FPS24
58 FPS25
59 FPS26
60 FPS27
61 FPS28
62 FPS29
63 FPS30
64 FPS31
*)
const CM3_Registers : array[0..64] of string =
(
' CM3_R0',
' CM3_R1',
' CM3_R2',
' CM3_R3',
' CM3_R4',
' CM3_R5',
' CM3_R6',
' CM3_R7',
' CM3_R8',
' CM3_R9',
' CM3_R10',
' CM3_R11',
' CM3_R12',
' CM3_R13',
' CM3_R14',
' CM3_R15',
' CM3_XPSR',
' CM3_MSP',
' CM3_PSP',
' CM3_RAZ',
' CM3_CFBP',
' CM3_APSR',
' CM3_EPSR',
' CM3_IPSR',
' CM3_PRIMASK',
' CM3_BASEPRI',
' CM3_FAULTMASK',
' CM3_CONTROL',
'CM3_BASEPRI_MAX',
' CM3_IAPSR',
' CM3_EAPSR',
' CM3_IEPSR',
' CM3_FPSCR',
' CM3_FPS0',
' CM3_FPS1',
' CM3_FPS2',
' CM3_FPS3',
' CM3_FPS4',
' CM3_FPS5',
' CM3_FPS6',
' CM3_FPS7',
' CM3_FPS8',
' CM3_FPS9',
' CM3_FPS10',
' CM3_FPS11',
' CM3_FPS12',
' CM3_FPS13',
' CM3_FPS14',
' CM3_FPS15',
' CM3_FPS16',
' CM3_FPS17',
' CM3_FPS18',
' CM3_FPS19',
' CM3_FPS20',
' CM3_FPS21',
' CM3_FPS22',
' CM3_FPS23',
' CM3_FPS24',
' CM3_FPS25',
' CM3_FPS26',
' CM3_FPS27',
' CM3_FPS28',
' CM3_FPS29',
' CM3_FPS30',
' CM3_FPS31'
);
const CM3_R0 = $00;
const CM3_R1 = $01;
const CM3_R2 = $02;
const CM3_R3 = $03;
const CM3_R4 = $04;
const CM3_R5 = $05;
const CM3_R6 = $06;
const CM3_R7 = $07;
const CM3_R8 = $08;
const CM3_R9 = $09;
const CM3_R10 = $0A;
const CM3_R11 = $0B;
const CM3_R12 = $0C;
const CM3_R13 = $0D;
const CM3_R14 = $0E;
const CM3_R15 = $0F;
const CM3_XPSR = $10;
const CM3_MSP = $11;
const CM3_PSP = $12;
const CM3_RAZ = $13;
const CM3_CFBP = $14;
const CM3_APSR = $15;
const CM3_EPSR = $16;
const CM3_IPSR = $17;
const CM3_PRIMASK = $18;
const CM3_BASEPRI = $19;
const CM3_FAULTMASK = $1A;
const CM3_CONTROL = $1B;
const CM3_BASEPRI_MAX = $1C;
const CM3_IAPSR = $1D;
const CM3_EAPSR = $1E;
const CM3_IEPSR = $1F;
const CM3_FPSCR = $20;
const CM3_FPS0 = $21;
const CM3_FPS1 = $22;
const CM3_FPS2 = $23;
const CM3_FPS3 = $24;
const CM3_FPS4 = $25;
const CM3_FPS5 = $26;
const CM3_FPS6 = $27;
const CM3_FPS7 = $28;
const CM3_FPS8 = $29;
const CM3_FPS9 = $2A;
const CM3_FPS10 = $2B;
const CM3_FPS11 = $2C;
const CM3_FPS12 = $2D;
const CM3_FPS13 = $2E;
const CM3_FPS14 = $2F;
const CM3_FPS15 = $30;
const CM3_FPS16 = $31;
const CM3_FPS17 = $32;
const CM3_FPS18 = $33;
const CM3_FPS19 = $34;
const CM3_FPS20 = $35;
const CM3_FPS21 = $36;
const CM3_FPS22 = $37;
const CM3_FPS23 = $38;
const CM3_FPS24 = $39;
const CM3_FPS25 = $3A;
const CM3_FPS26 = $3B;
const CM3_FPS27 = $3C;
const CM3_FPS28 = $3D;
const CM3_FPS29 = $3E;
const CM3_FPS30 = $3F;
const CM3_FPS31 = $40;
function JLINKARM_IsConnected() : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_IsConnected';
function JLINKARM_Open() : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_Open';
function JLINKARM_IsOpen() : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_IsOpen';
function JLINKARM_Close() : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_Close';
function JLINKARM_Test() : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_Test';
function JLINKARM_Go() : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_Go';
function JLINKARM_GoEx(param1 : integer; param2 : integer) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_GoEx';
function JLINKARM_GoHalt() : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_GoHalt';
function JLINKARM_Halt() : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_Halt';
function JLINKARM_IsHalted() : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_IsHalted';
function JLINKARM_SetResetType(ResetType : DWORD) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_SetResetType';
function JLINKARM_SetResetDelay(ResetDelay : DWORD) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_SetResetDelay';
function JLINKARM_Reset() : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_Reset';
function JLINKARM_ResetNoHalt() : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_ResetNoHalt';
// JLINKARM_ResetNoHalt
// JLINKARM_Reset then JLINKARM_Go
function JLINKARM_TIF_Select(is_swd_intf : DWORD) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_TIF_Select';
function JLINKARM_TIF_GetAvailable(param : DWORD) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_TIF_GetAvailable';
function JLINKARM_SetSpeed(jlink_speed : DWORD) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_SetSpeed';
function JLINKARM_SetMaxSpeed() : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_SetMaxSpeed';
function JLINKARM_GetSpeed() : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_GetSpeed';
function JLINKARM_ReadMem(memaddr : DWORD; size : DWORD; var buff : array of BYTE) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_ReadMem';
function JLINKARM_ReadMemU8(memaddr : DWORD; size : DWORD; var buff : array of BYTE; flag : DWORD) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_ReadMemU8';
function JLINKARM_ReadMemU16(memaddr : DWORD; size : DWORD; var buff : array of WORD; flag : DWORD) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_ReadMemU16';
function JLINKARM_ReadMemU32(memaddr : DWORD; size : DWORD; var buff : array of DWORD; flag : DWORD) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_ReadMemU32';
function JLINKARM_WriteMem(memaddr : DWORD; size : DWORD; buff : array of BYTE) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_WriteMem';
function JLINKARM_WriteU8(memaddr : DWORD; data : BYTE) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_WriteU8';
function JLINKARM_WriteU16(memaddr : DWORD; data : WORD) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_WriteU16';
function JLINKARM_WriteU32(memaddr : DWORD; data : DWORD) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_WriteU32';
function JLINKARM_WriteU64(memaddr : DWORD; data : INT64) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_WriteU64';
function JLINKARM_ReadReg(RegIndex : DWORD) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_ReadReg';
function JLINKARM_WriteReg(RegIndex : DWORD; RegValue : DWORD) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_WriteReg';
function JLINKARM_ExecCommand(pbCommand : pAnsichar; param1 : integer; param2 : integer) : integer;
cdecl; external 'jlinkarm.dll' name 'JLINKARM_ExecCommand';
implementation
end.