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