xref: /btstack/port/stm32-f4discovery-usb/ozone.jdebug (revision 4317f7c8072dba908e7d1d7e286aac469abc38f7)
1*4317f7c8SMatthias Ringwald/*********************************************************************
2*4317f7c8SMatthias Ringwald*                 (c) SEGGER Microcontroller GmbH                    *
3*4317f7c8SMatthias Ringwald*                      The Embedded Experts                          *
4*4317f7c8SMatthias Ringwald*                         www.segger.com                             *
5*4317f7c8SMatthias Ringwald**********************************************************************
6*4317f7c8SMatthias Ringwald
7*4317f7c8SMatthias RingwaldFile          : /Users/mringwal/Projects/btstack/port/stm32-f4discovery-usb/stm32-f4discovery-usb.jdebug
8*4317f7c8SMatthias RingwaldCreated       : 22 Dec 2020 17:47
9*4317f7c8SMatthias RingwaldOzone Version : V3.20e
10*4317f7c8SMatthias Ringwald*/
11*4317f7c8SMatthias Ringwald
12*4317f7c8SMatthias Ringwald/*********************************************************************
13*4317f7c8SMatthias Ringwald*
14*4317f7c8SMatthias Ringwald*       OnProjectLoad
15*4317f7c8SMatthias Ringwald*
16*4317f7c8SMatthias Ringwald* Function description
17*4317f7c8SMatthias Ringwald*   Project load routine. Required.
18*4317f7c8SMatthias Ringwald*
19*4317f7c8SMatthias Ringwald**********************************************************************
20*4317f7c8SMatthias Ringwald*/
21*4317f7c8SMatthias Ringwaldvoid OnProjectLoad (void) {
22*4317f7c8SMatthias Ringwald  //
23*4317f7c8SMatthias Ringwald  // Dialog-generated settings
24*4317f7c8SMatthias Ringwald  //
25*4317f7c8SMatthias Ringwald  Project.SetDevice ("STM32F407VG");
26*4317f7c8SMatthias Ringwald  Project.SetHostIF ("USB", "");
27*4317f7c8SMatthias Ringwald  Project.SetTargetIF ("SWD");
28*4317f7c8SMatthias Ringwald  Project.SetTIFSpeed ("50 MHz");
29*4317f7c8SMatthias Ringwald  Project.AddPathSubstitute ("/Users/mringwal/Projects/btstack/port/stm32-f4discovery-usb", "$(ProjectDir)");
30*4317f7c8SMatthias Ringwald  Project.AddPathSubstitute ("/users/mringwal/projects/btstack/port/stm32-f4discovery-usb", "$(ProjectDir)");
31*4317f7c8SMatthias Ringwald  Project.AddSvdFile ("$(InstallDir)/Config/CPU/Cortex-M4F.svd");
32*4317f7c8SMatthias Ringwald  //
33*4317f7c8SMatthias Ringwald  // User settings
34*4317f7c8SMatthias Ringwald  //
35*4317f7c8SMatthias Ringwald  File.Open ("$(ProjectDir)/EXAMPLE.elf");
36*4317f7c8SMatthias Ringwald}
37*4317f7c8SMatthias Ringwald
38*4317f7c8SMatthias Ringwald/*********************************************************************
39*4317f7c8SMatthias Ringwald*
40*4317f7c8SMatthias Ringwald*       OnStartupComplete
41*4317f7c8SMatthias Ringwald*
42*4317f7c8SMatthias Ringwald* Function description
43*4317f7c8SMatthias Ringwald*   Called when program execution has reached/passed
44*4317f7c8SMatthias Ringwald*   the startup completion point. Optional.
45*4317f7c8SMatthias Ringwald*
46*4317f7c8SMatthias Ringwald**********************************************************************
47*4317f7c8SMatthias Ringwald*/
48*4317f7c8SMatthias Ringwald//void OnStartupComplete (void) {
49*4317f7c8SMatthias Ringwald//}
50*4317f7c8SMatthias Ringwald
51*4317f7c8SMatthias Ringwald/*********************************************************************
52*4317f7c8SMatthias Ringwald*
53*4317f7c8SMatthias Ringwald*      TargetReset
54*4317f7c8SMatthias Ringwald*
55*4317f7c8SMatthias Ringwald* Function description
56*4317f7c8SMatthias Ringwald*   Replaces the default target device reset routine. Optional.
57*4317f7c8SMatthias Ringwald*
58*4317f7c8SMatthias Ringwald* Notes
59*4317f7c8SMatthias Ringwald*   This example demonstrates the usage when
60*4317f7c8SMatthias Ringwald*   debugging a RAM program on a Cortex-M target device
61*4317f7c8SMatthias Ringwald*
62*4317f7c8SMatthias Ringwald**********************************************************************
63*4317f7c8SMatthias Ringwald*/
64*4317f7c8SMatthias Ringwald//void TargetReset (void) {
65*4317f7c8SMatthias Ringwald//
66*4317f7c8SMatthias Ringwald//  unsigned int SP;
67*4317f7c8SMatthias Ringwald//  unsigned int PC;
68*4317f7c8SMatthias Ringwald//  unsigned int VectorTableAddr;
69*4317f7c8SMatthias Ringwald//
70*4317f7c8SMatthias Ringwald//  VectorTableAddr = Program.GetBaseAddr();
71*4317f7c8SMatthias Ringwald//
72*4317f7c8SMatthias Ringwald//  if (VectorTableAddr != 0xFFFFFFFF) {
73*4317f7c8SMatthias Ringwald//    SP = Target.ReadU32(VectorTableAddr);
74*4317f7c8SMatthias Ringwald//    Target.SetReg("SP", SP);
75*4317f7c8SMatthias Ringwald//  } else {
76*4317f7c8SMatthias Ringwald//    Util.Log("Project file error: failed to get program base");
77*4317f7c8SMatthias Ringwald//  }
78*4317f7c8SMatthias Ringwald//
79*4317f7c8SMatthias Ringwald//  PC = Elf.GetEntryPointPC();
80*4317f7c8SMatthias Ringwald//
81*4317f7c8SMatthias Ringwald//  if (PC != 0xFFFFFFFF) {
82*4317f7c8SMatthias Ringwald//    Target.SetReg("PC", PC);
83*4317f7c8SMatthias Ringwald//  } else if (VectorTableAddr != 0xFFFFFFFF) {
84*4317f7c8SMatthias Ringwald//    PC = Target.ReadU32(VectorTableAddr + 4);
85*4317f7c8SMatthias Ringwald//    Target.SetReg("PC", PC);
86*4317f7c8SMatthias Ringwald//}
87*4317f7c8SMatthias Ringwald
88*4317f7c8SMatthias Ringwald/*********************************************************************
89*4317f7c8SMatthias Ringwald*
90*4317f7c8SMatthias Ringwald*       BeforeTargetReset
91*4317f7c8SMatthias Ringwald*
92*4317f7c8SMatthias Ringwald* Function description
93*4317f7c8SMatthias Ringwald*   Event handler routine. Optional.
94*4317f7c8SMatthias Ringwald*
95*4317f7c8SMatthias Ringwald**********************************************************************
96*4317f7c8SMatthias Ringwald*/
97*4317f7c8SMatthias Ringwald//void BeforeTargetReset (void) {
98*4317f7c8SMatthias Ringwald//}
99*4317f7c8SMatthias Ringwald
100*4317f7c8SMatthias Ringwald/*********************************************************************
101*4317f7c8SMatthias Ringwald*
102*4317f7c8SMatthias Ringwald*       AfterTargetReset
103*4317f7c8SMatthias Ringwald*
104*4317f7c8SMatthias Ringwald* Function description
105*4317f7c8SMatthias Ringwald*   Event handler routine. Optional.
106*4317f7c8SMatthias Ringwald*    - Sets the PC register to program reset value.
107*4317f7c8SMatthias Ringwald*    - Sets the SP register to program reset value on Cortex-M.
108*4317f7c8SMatthias Ringwald*
109*4317f7c8SMatthias Ringwald**********************************************************************
110*4317f7c8SMatthias Ringwald*/
111*4317f7c8SMatthias Ringwaldvoid AfterTargetReset (void) {
112*4317f7c8SMatthias Ringwald  unsigned int SP;
113*4317f7c8SMatthias Ringwald  unsigned int PC;
114*4317f7c8SMatthias Ringwald  unsigned int VectorTableAddr;
115*4317f7c8SMatthias Ringwald
116*4317f7c8SMatthias Ringwald  VectorTableAddr = Elf.GetBaseAddr();
117*4317f7c8SMatthias Ringwald
118*4317f7c8SMatthias Ringwald  if (VectorTableAddr != 0xFFFFFFFF) {
119*4317f7c8SMatthias Ringwald    SP = Target.ReadU32(VectorTableAddr);
120*4317f7c8SMatthias Ringwald    Target.SetReg("SP", SP);
121*4317f7c8SMatthias Ringwald  } else {
122*4317f7c8SMatthias Ringwald    Util.Log("Project file error: failed to get program base");
123*4317f7c8SMatthias Ringwald  }
124*4317f7c8SMatthias Ringwald
125*4317f7c8SMatthias Ringwald  PC = Elf.GetEntryPointPC();
126*4317f7c8SMatthias Ringwald
127*4317f7c8SMatthias Ringwald  if (PC != 0xFFFFFFFF) {
128*4317f7c8SMatthias Ringwald    Target.SetReg("PC", PC);
129*4317f7c8SMatthias Ringwald  } else if (VectorTableAddr != 0xFFFFFFFF) {
130*4317f7c8SMatthias Ringwald    PC = Target.ReadU32(VectorTableAddr + 4);
131*4317f7c8SMatthias Ringwald    Target.SetReg("PC", PC);
132*4317f7c8SMatthias Ringwald  }
133*4317f7c8SMatthias Ringwald}
134*4317f7c8SMatthias Ringwald
135*4317f7c8SMatthias Ringwald/*********************************************************************
136*4317f7c8SMatthias Ringwald*
137*4317f7c8SMatthias Ringwald*       DebugStart
138*4317f7c8SMatthias Ringwald*
139*4317f7c8SMatthias Ringwald* Function description
140*4317f7c8SMatthias Ringwald*   Replaces the default debug session startup routine. Optional.
141*4317f7c8SMatthias Ringwald*
142*4317f7c8SMatthias Ringwald**********************************************************************
143*4317f7c8SMatthias Ringwald*/
144*4317f7c8SMatthias Ringwald//void DebugStart (void) {
145*4317f7c8SMatthias Ringwald//}
146*4317f7c8SMatthias Ringwald
147*4317f7c8SMatthias Ringwald/*********************************************************************
148*4317f7c8SMatthias Ringwald*
149*4317f7c8SMatthias Ringwald*       TargetConnect
150*4317f7c8SMatthias Ringwald*
151*4317f7c8SMatthias Ringwald* Function description
152*4317f7c8SMatthias Ringwald*   Replaces the default target IF connection routine. Optional.
153*4317f7c8SMatthias Ringwald*
154*4317f7c8SMatthias Ringwald**********************************************************************
155*4317f7c8SMatthias Ringwald*/
156*4317f7c8SMatthias Ringwald//void TargetConnect (void) {
157*4317f7c8SMatthias Ringwald//}
158*4317f7c8SMatthias Ringwald
159*4317f7c8SMatthias Ringwald/*********************************************************************
160*4317f7c8SMatthias Ringwald*
161*4317f7c8SMatthias Ringwald*       BeforeTargetConnect
162*4317f7c8SMatthias Ringwald*
163*4317f7c8SMatthias Ringwald* Function description
164*4317f7c8SMatthias Ringwald*   Event handler routine. Optional.
165*4317f7c8SMatthias Ringwald*
166*4317f7c8SMatthias Ringwald**********************************************************************
167*4317f7c8SMatthias Ringwald*/
168*4317f7c8SMatthias Ringwald//void BeforeTargetConnect (void) {
169*4317f7c8SMatthias Ringwald//}
170*4317f7c8SMatthias Ringwald
171*4317f7c8SMatthias Ringwald/*********************************************************************
172*4317f7c8SMatthias Ringwald*
173*4317f7c8SMatthias Ringwald*       AfterTargetConnect
174*4317f7c8SMatthias Ringwald*
175*4317f7c8SMatthias Ringwald* Function description
176*4317f7c8SMatthias Ringwald*   Event handler routine. Optional.
177*4317f7c8SMatthias Ringwald*
178*4317f7c8SMatthias Ringwald**********************************************************************
179*4317f7c8SMatthias Ringwald*/
180*4317f7c8SMatthias Ringwald//void AfterTargetConnect (void) {
181*4317f7c8SMatthias Ringwald//}
182*4317f7c8SMatthias Ringwald
183*4317f7c8SMatthias Ringwald/*********************************************************************
184*4317f7c8SMatthias Ringwald*
185*4317f7c8SMatthias Ringwald*       TargetDownload
186*4317f7c8SMatthias Ringwald*
187*4317f7c8SMatthias Ringwald* Function description
188*4317f7c8SMatthias Ringwald*   Replaces the default program download routine. Optional.
189*4317f7c8SMatthias Ringwald*
190*4317f7c8SMatthias Ringwald**********************************************************************
191*4317f7c8SMatthias Ringwald*/
192*4317f7c8SMatthias Ringwald//void TargetDownload (void) {
193*4317f7c8SMatthias Ringwald//}
194*4317f7c8SMatthias Ringwald
195*4317f7c8SMatthias Ringwald/*********************************************************************
196*4317f7c8SMatthias Ringwald*
197*4317f7c8SMatthias Ringwald*       BeforeTargetDownload
198*4317f7c8SMatthias Ringwald*
199*4317f7c8SMatthias Ringwald* Function description
200*4317f7c8SMatthias Ringwald*   Event handler routine. Optional.
201*4317f7c8SMatthias Ringwald*
202*4317f7c8SMatthias Ringwald**********************************************************************
203*4317f7c8SMatthias Ringwald*/
204*4317f7c8SMatthias Ringwald//void BeforeTargetDownload (void) {
205*4317f7c8SMatthias Ringwald//}
206*4317f7c8SMatthias Ringwald
207*4317f7c8SMatthias Ringwald/*********************************************************************
208*4317f7c8SMatthias Ringwald*
209*4317f7c8SMatthias Ringwald*      AfterTargetDownload
210*4317f7c8SMatthias Ringwald*
211*4317f7c8SMatthias Ringwald* Function description
212*4317f7c8SMatthias Ringwald*   Event handler routine. Optional.
213*4317f7c8SMatthias Ringwald*    - Sets the PC register to program reset value.
214*4317f7c8SMatthias Ringwald*    - Sets the SP register to program reset value on Cortex-M.
215*4317f7c8SMatthias Ringwald*
216*4317f7c8SMatthias Ringwald**********************************************************************
217*4317f7c8SMatthias Ringwald*/
218*4317f7c8SMatthias Ringwaldvoid AfterTargetDownload (void) {
219*4317f7c8SMatthias Ringwald  unsigned int SP;
220*4317f7c8SMatthias Ringwald  unsigned int PC;
221*4317f7c8SMatthias Ringwald  unsigned int VectorTableAddr;
222*4317f7c8SMatthias Ringwald
223*4317f7c8SMatthias Ringwald  VectorTableAddr = Elf.GetBaseAddr();
224*4317f7c8SMatthias Ringwald
225*4317f7c8SMatthias Ringwald  if (VectorTableAddr != 0xFFFFFFFF) {
226*4317f7c8SMatthias Ringwald    SP = Target.ReadU32(VectorTableAddr);
227*4317f7c8SMatthias Ringwald    Target.SetReg("SP", SP);
228*4317f7c8SMatthias Ringwald  } else {
229*4317f7c8SMatthias Ringwald    Util.Log("Project file error: failed to get program base");
230*4317f7c8SMatthias Ringwald  }
231*4317f7c8SMatthias Ringwald
232*4317f7c8SMatthias Ringwald  PC = Elf.GetEntryPointPC();
233*4317f7c8SMatthias Ringwald
234*4317f7c8SMatthias Ringwald  if (PC != 0xFFFFFFFF) {
235*4317f7c8SMatthias Ringwald    Target.SetReg("PC", PC);
236*4317f7c8SMatthias Ringwald  } else if (VectorTableAddr != 0xFFFFFFFF) {
237*4317f7c8SMatthias Ringwald    PC = Target.ReadU32(VectorTableAddr + 4);
238*4317f7c8SMatthias Ringwald    Target.SetReg("PC", PC);
239*4317f7c8SMatthias Ringwald  }
240*4317f7c8SMatthias Ringwald}
241*4317f7c8SMatthias Ringwald
242*4317f7c8SMatthias Ringwald/*********************************************************************
243*4317f7c8SMatthias Ringwald*
244*4317f7c8SMatthias Ringwald*       BeforeTargetDisconnect
245*4317f7c8SMatthias Ringwald*
246*4317f7c8SMatthias Ringwald* Function description
247*4317f7c8SMatthias Ringwald*   Event handler routine. Optional.
248*4317f7c8SMatthias Ringwald*
249*4317f7c8SMatthias Ringwald**********************************************************************
250*4317f7c8SMatthias Ringwald*/
251*4317f7c8SMatthias Ringwald//void BeforeTargetDisconnect (void) {
252*4317f7c8SMatthias Ringwald//}
253*4317f7c8SMatthias Ringwald
254*4317f7c8SMatthias Ringwald/*********************************************************************
255*4317f7c8SMatthias Ringwald*
256*4317f7c8SMatthias Ringwald*       AfterTargetDisconnect
257*4317f7c8SMatthias Ringwald*
258*4317f7c8SMatthias Ringwald* Function description
259*4317f7c8SMatthias Ringwald*   Event handler routine. Optional.
260*4317f7c8SMatthias Ringwald*
261*4317f7c8SMatthias Ringwald**********************************************************************
262*4317f7c8SMatthias Ringwald*/
263*4317f7c8SMatthias Ringwald//void AfterTargetDisconnect (void) {
264*4317f7c8SMatthias Ringwald//}
265*4317f7c8SMatthias Ringwald
266*4317f7c8SMatthias Ringwald/*********************************************************************
267*4317f7c8SMatthias Ringwald*
268*4317f7c8SMatthias Ringwald*       AfterTargetHalt
269*4317f7c8SMatthias Ringwald*
270*4317f7c8SMatthias Ringwald* Function description
271*4317f7c8SMatthias Ringwald*   Event handler routine. Optional.
272*4317f7c8SMatthias Ringwald*
273*4317f7c8SMatthias Ringwald**********************************************************************
274*4317f7c8SMatthias Ringwald*/
275*4317f7c8SMatthias Ringwald//void AfterTargetHalt (void) {
276*4317f7c8SMatthias Ringwald//}
277*4317f7c8SMatthias Ringwald
278*4317f7c8SMatthias Ringwald/*********************************************************************
279*4317f7c8SMatthias Ringwald*
280*4317f7c8SMatthias Ringwald*       BeforeTargetResume
281*4317f7c8SMatthias Ringwald*
282*4317f7c8SMatthias Ringwald* Function description
283*4317f7c8SMatthias Ringwald*   Event handler routine. Optional.
284*4317f7c8SMatthias Ringwald*
285*4317f7c8SMatthias Ringwald**********************************************************************
286*4317f7c8SMatthias Ringwald*/
287*4317f7c8SMatthias Ringwald//void BeforeTargetResume (void) {
288*4317f7c8SMatthias Ringwald//}
289*4317f7c8SMatthias Ringwald
290*4317f7c8SMatthias Ringwald/*********************************************************************
291*4317f7c8SMatthias Ringwald*
292*4317f7c8SMatthias Ringwald*       OnSnapshotLoad
293*4317f7c8SMatthias Ringwald*
294*4317f7c8SMatthias Ringwald* Function description
295*4317f7c8SMatthias Ringwald*   Called upon loading a snapshot. Optional.
296*4317f7c8SMatthias Ringwald*
297*4317f7c8SMatthias Ringwald* Additional information
298*4317f7c8SMatthias Ringwald*   This function is used to restore the target state in cases
299*4317f7c8SMatthias Ringwald*   where values cannot simply be written to the target.
300*4317f7c8SMatthias Ringwald*   Typical use: GPIO clock needs to be enabled, before
301*4317f7c8SMatthias Ringwald*   GPIO is configured.
302*4317f7c8SMatthias Ringwald*
303*4317f7c8SMatthias Ringwald**********************************************************************
304*4317f7c8SMatthias Ringwald*/
305*4317f7c8SMatthias Ringwald//void OnSnapshotLoad (void) {
306*4317f7c8SMatthias Ringwald//}
307*4317f7c8SMatthias Ringwald
308*4317f7c8SMatthias Ringwald/*********************************************************************
309*4317f7c8SMatthias Ringwald*
310*4317f7c8SMatthias Ringwald*       OnSnapshotSave
311*4317f7c8SMatthias Ringwald*
312*4317f7c8SMatthias Ringwald* Function description
313*4317f7c8SMatthias Ringwald*   Called upon saving a snapshot. Optional.
314*4317f7c8SMatthias Ringwald*
315*4317f7c8SMatthias Ringwald* Additional information
316*4317f7c8SMatthias Ringwald*   This function is usually used to save values of the target
317*4317f7c8SMatthias Ringwald*   state which can either not be trivially read,
318*4317f7c8SMatthias Ringwald*   or need to be restored in a specific way or order.
319*4317f7c8SMatthias Ringwald*   Typically use: Memory Mapped Registers,
320*4317f7c8SMatthias Ringwald*   such as PLL and GPIO configuration.
321*4317f7c8SMatthias Ringwald*
322*4317f7c8SMatthias Ringwald**********************************************************************
323*4317f7c8SMatthias Ringwald*/
324*4317f7c8SMatthias Ringwald//void OnSnapshotSave (void) {
325*4317f7c8SMatthias Ringwald//}
326*4317f7c8SMatthias Ringwald
327*4317f7c8SMatthias Ringwald/*********************************************************************
328*4317f7c8SMatthias Ringwald*
329*4317f7c8SMatthias Ringwald*       OnError
330*4317f7c8SMatthias Ringwald*
331*4317f7c8SMatthias Ringwald* Function description
332*4317f7c8SMatthias Ringwald*   Called when an error ocurred. Optional.
333*4317f7c8SMatthias Ringwald*
334*4317f7c8SMatthias Ringwald**********************************************************************
335*4317f7c8SMatthias Ringwald*/
336*4317f7c8SMatthias Ringwald//void OnError (const char* sErrorMsg) {
337*4317f7c8SMatthias Ringwald//}
338