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