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