1*225f4ba4SMatthias Ringwald 2*225f4ba4SMatthias Ringwald/********************************************************************* 3*225f4ba4SMatthias Ringwald* 4*225f4ba4SMatthias Ringwald* OnProjectLoad 5*225f4ba4SMatthias Ringwald* 6*225f4ba4SMatthias Ringwald* Function description 7*225f4ba4SMatthias Ringwald* Project load routine. Required. 8*225f4ba4SMatthias Ringwald* 9*225f4ba4SMatthias Ringwald********************************************************************** 10*225f4ba4SMatthias Ringwald*/ 11*225f4ba4SMatthias Ringwaldvoid OnProjectLoad (void) { 12*225f4ba4SMatthias Ringwald // 13*225f4ba4SMatthias Ringwald // Dialog-generated settings 14*225f4ba4SMatthias Ringwald // 15*225f4ba4SMatthias Ringwald Project.SetDevice ("STM32F407VG"); 16*225f4ba4SMatthias Ringwald Project.SetHostIF ("USB", ""); 17*225f4ba4SMatthias Ringwald Project.SetTargetIF ("SWD"); 18*225f4ba4SMatthias Ringwald Project.SetTIFSpeed ("50 MHz"); 19*225f4ba4SMatthias Ringwald Project.AddSvdFile ("$(InstallDir)/Config/CPU/Cortex-M4F.svd"); 20*225f4ba4SMatthias Ringwald Project.AddPathSubstitute ("/Projects/btstack/port/stm32-f4discovery-cc256x/cubemx-f4discovery-cc256x", "$(ProjectDir)"); 21*225f4ba4SMatthias Ringwald Project.AddPathSubstitute ("/projects/btstack/port/stm32-f4discovery-cc256x/cubemx-f4discovery-cc256x", "$(ProjectDir)"); 22*225f4ba4SMatthias Ringwald // 23*225f4ba4SMatthias Ringwald // User settings 24*225f4ba4SMatthias Ringwald // 25*225f4ba4SMatthias Ringwald File.Open ("$(ProjectDir)/EXAMPLE.elf"); 26*225f4ba4SMatthias Ringwald} 27*225f4ba4SMatthias Ringwald 28*225f4ba4SMatthias Ringwald/********************************************************************* 29*225f4ba4SMatthias Ringwald* 30*225f4ba4SMatthias Ringwald* TargetReset 31*225f4ba4SMatthias Ringwald* 32*225f4ba4SMatthias Ringwald* Function description 33*225f4ba4SMatthias Ringwald* Replaces the default target device reset routine. Optional. 34*225f4ba4SMatthias Ringwald* 35*225f4ba4SMatthias Ringwald* Notes 36*225f4ba4SMatthias Ringwald* This example demonstrates the usage when 37*225f4ba4SMatthias Ringwald* debugging a RAM program on a Cortex-M target device 38*225f4ba4SMatthias Ringwald* 39*225f4ba4SMatthias Ringwald********************************************************************** 40*225f4ba4SMatthias Ringwald*/ 41*225f4ba4SMatthias Ringwald//void TargetReset (void) { 42*225f4ba4SMatthias Ringwald// 43*225f4ba4SMatthias Ringwald// unsigned int SP; 44*225f4ba4SMatthias Ringwald// unsigned int PC; 45*225f4ba4SMatthias Ringwald// unsigned int VectorTableAddr; 46*225f4ba4SMatthias Ringwald// 47*225f4ba4SMatthias Ringwald// Exec.Reset(); 48*225f4ba4SMatthias Ringwald// 49*225f4ba4SMatthias Ringwald// VectorTableAddr = Elf.GetBaseAddr(); 50*225f4ba4SMatthias Ringwald// 51*225f4ba4SMatthias Ringwald// if (VectorTableAddr != 0xFFFFFFFF) { 52*225f4ba4SMatthias Ringwald// 53*225f4ba4SMatthias Ringwald// Util.Log("Resetting Program."); 54*225f4ba4SMatthias Ringwald// 55*225f4ba4SMatthias Ringwald// SP = Target.ReadU32(VectorTableAddr); 56*225f4ba4SMatthias Ringwald// Target.SetReg("SP", SP); 57*225f4ba4SMatthias Ringwald// 58*225f4ba4SMatthias Ringwald// PC = Target.ReadU32(VectorTableAddr + 4); 59*225f4ba4SMatthias Ringwald// Target.SetReg("PC", PC); 60*225f4ba4SMatthias Ringwald// } 61*225f4ba4SMatthias Ringwald//} 62*225f4ba4SMatthias Ringwald 63*225f4ba4SMatthias Ringwald/********************************************************************* 64*225f4ba4SMatthias Ringwald* 65*225f4ba4SMatthias Ringwald* BeforeTargetReset 66*225f4ba4SMatthias Ringwald* 67*225f4ba4SMatthias Ringwald* Function description 68*225f4ba4SMatthias Ringwald* Event handler routine. Optional. 69*225f4ba4SMatthias Ringwald* 70*225f4ba4SMatthias Ringwald********************************************************************** 71*225f4ba4SMatthias Ringwald*/ 72*225f4ba4SMatthias Ringwald//void BeforeTargetReset (void) { 73*225f4ba4SMatthias Ringwald//} 74*225f4ba4SMatthias Ringwald 75*225f4ba4SMatthias Ringwald/********************************************************************* 76*225f4ba4SMatthias Ringwald* 77*225f4ba4SMatthias Ringwald* AfterTargetReset 78*225f4ba4SMatthias Ringwald* 79*225f4ba4SMatthias Ringwald* Function description 80*225f4ba4SMatthias Ringwald* Event handler routine. 81*225f4ba4SMatthias Ringwald* - Sets the PC register to program reset value. 82*225f4ba4SMatthias Ringwald* - Sets the SP register to program reset value on Cortex-M. 83*225f4ba4SMatthias Ringwald* 84*225f4ba4SMatthias Ringwald********************************************************************** 85*225f4ba4SMatthias Ringwald*/ 86*225f4ba4SMatthias Ringwaldvoid AfterTargetReset (void) { 87*225f4ba4SMatthias Ringwald unsigned int SP; 88*225f4ba4SMatthias Ringwald unsigned int PC; 89*225f4ba4SMatthias Ringwald unsigned int VectorTableAddr; 90*225f4ba4SMatthias Ringwald 91*225f4ba4SMatthias Ringwald VectorTableAddr = Elf.GetBaseAddr(); 92*225f4ba4SMatthias Ringwald 93*225f4ba4SMatthias Ringwald if (VectorTableAddr == 0xFFFFFFFF) { 94*225f4ba4SMatthias Ringwald Util.Log("Project file error: failed to get program base"); 95*225f4ba4SMatthias Ringwald } else { 96*225f4ba4SMatthias Ringwald SP = Target.ReadU32(VectorTableAddr); 97*225f4ba4SMatthias Ringwald Target.SetReg("SP", SP); 98*225f4ba4SMatthias Ringwald 99*225f4ba4SMatthias Ringwald PC = Target.ReadU32(VectorTableAddr + 4); 100*225f4ba4SMatthias Ringwald Target.SetReg("PC", PC); 101*225f4ba4SMatthias Ringwald } 102*225f4ba4SMatthias Ringwald} 103*225f4ba4SMatthias Ringwald 104*225f4ba4SMatthias Ringwald/********************************************************************* 105*225f4ba4SMatthias Ringwald* 106*225f4ba4SMatthias Ringwald* DebugStart 107*225f4ba4SMatthias Ringwald* 108*225f4ba4SMatthias Ringwald* Function description 109*225f4ba4SMatthias Ringwald* Replaces the default debug session startup routine. Optional. 110*225f4ba4SMatthias Ringwald* 111*225f4ba4SMatthias Ringwald********************************************************************** 112*225f4ba4SMatthias Ringwald*/ 113*225f4ba4SMatthias Ringwald//void DebugStart (void) { 114*225f4ba4SMatthias Ringwald//} 115*225f4ba4SMatthias Ringwald 116*225f4ba4SMatthias Ringwald/********************************************************************* 117*225f4ba4SMatthias Ringwald* 118*225f4ba4SMatthias Ringwald* TargetConnect 119*225f4ba4SMatthias Ringwald* 120*225f4ba4SMatthias Ringwald* Function description 121*225f4ba4SMatthias Ringwald* Replaces the default target IF connection routine. Optional. 122*225f4ba4SMatthias Ringwald* 123*225f4ba4SMatthias Ringwald********************************************************************** 124*225f4ba4SMatthias Ringwald*/ 125*225f4ba4SMatthias Ringwald//void TargetConnect (void) { 126*225f4ba4SMatthias Ringwald//} 127*225f4ba4SMatthias Ringwald 128*225f4ba4SMatthias Ringwald/********************************************************************* 129*225f4ba4SMatthias Ringwald* 130*225f4ba4SMatthias Ringwald* BeforeTargetConnect 131*225f4ba4SMatthias Ringwald* 132*225f4ba4SMatthias Ringwald* Function description 133*225f4ba4SMatthias Ringwald* Event handler routine. Optional. 134*225f4ba4SMatthias Ringwald* 135*225f4ba4SMatthias Ringwald********************************************************************** 136*225f4ba4SMatthias Ringwald*/ 137*225f4ba4SMatthias Ringwald//void BeforeTargetConnect (void) { 138*225f4ba4SMatthias Ringwald//} 139*225f4ba4SMatthias Ringwald 140*225f4ba4SMatthias Ringwald/********************************************************************* 141*225f4ba4SMatthias Ringwald* 142*225f4ba4SMatthias Ringwald* AfterTargetConnect 143*225f4ba4SMatthias Ringwald* 144*225f4ba4SMatthias Ringwald* Function description 145*225f4ba4SMatthias Ringwald* Event handler routine. Optional. 146*225f4ba4SMatthias Ringwald* 147*225f4ba4SMatthias Ringwald********************************************************************** 148*225f4ba4SMatthias Ringwald*/ 149*225f4ba4SMatthias Ringwald//void AfterTargetConnect (void) { 150*225f4ba4SMatthias Ringwald//} 151*225f4ba4SMatthias Ringwald 152*225f4ba4SMatthias Ringwald/********************************************************************* 153*225f4ba4SMatthias Ringwald* 154*225f4ba4SMatthias Ringwald* TargetDownload 155*225f4ba4SMatthias Ringwald* 156*225f4ba4SMatthias Ringwald* Function description 157*225f4ba4SMatthias Ringwald* Replaces the default program download routine. Optional. 158*225f4ba4SMatthias Ringwald* 159*225f4ba4SMatthias Ringwald********************************************************************** 160*225f4ba4SMatthias Ringwald*/ 161*225f4ba4SMatthias Ringwald//void TargetDownload (void) { 162*225f4ba4SMatthias Ringwald//} 163*225f4ba4SMatthias Ringwald 164*225f4ba4SMatthias Ringwald/********************************************************************* 165*225f4ba4SMatthias Ringwald* 166*225f4ba4SMatthias Ringwald* BeforeTargetDownload 167*225f4ba4SMatthias Ringwald* 168*225f4ba4SMatthias Ringwald* Function description 169*225f4ba4SMatthias Ringwald* Event handler routine. Optional. 170*225f4ba4SMatthias Ringwald* 171*225f4ba4SMatthias Ringwald********************************************************************** 172*225f4ba4SMatthias Ringwald*/ 173*225f4ba4SMatthias Ringwald//void BeforeTargetDownload (void) { 174*225f4ba4SMatthias Ringwald//} 175*225f4ba4SMatthias Ringwald 176*225f4ba4SMatthias Ringwald/********************************************************************* 177*225f4ba4SMatthias Ringwald* 178*225f4ba4SMatthias Ringwald* AfterTargetDownload 179*225f4ba4SMatthias Ringwald* 180*225f4ba4SMatthias Ringwald* Function description 181*225f4ba4SMatthias Ringwald* Event handler routine. 182*225f4ba4SMatthias Ringwald* - Sets the PC register to program reset value. 183*225f4ba4SMatthias Ringwald* - Sets the SP register to program reset value on Cortex-M. 184*225f4ba4SMatthias Ringwald* 185*225f4ba4SMatthias Ringwald********************************************************************** 186*225f4ba4SMatthias Ringwald*/ 187*225f4ba4SMatthias Ringwaldvoid AfterTargetDownload (void) { 188*225f4ba4SMatthias Ringwald unsigned int SP; 189*225f4ba4SMatthias Ringwald unsigned int PC; 190*225f4ba4SMatthias Ringwald unsigned int VectorTableAddr; 191*225f4ba4SMatthias Ringwald 192*225f4ba4SMatthias Ringwald VectorTableAddr = Elf.GetBaseAddr(); 193*225f4ba4SMatthias Ringwald 194*225f4ba4SMatthias Ringwald if (VectorTableAddr == 0xFFFFFFFF) { 195*225f4ba4SMatthias Ringwald Util.Log("Project file error: failed to get program base"); 196*225f4ba4SMatthias Ringwald } else { 197*225f4ba4SMatthias Ringwald SP = Target.ReadU32(VectorTableAddr); 198*225f4ba4SMatthias Ringwald Target.SetReg("SP", SP); 199*225f4ba4SMatthias Ringwald 200*225f4ba4SMatthias Ringwald PC = Target.ReadU32(VectorTableAddr + 4); 201*225f4ba4SMatthias Ringwald Target.SetReg("PC", PC); 202*225f4ba4SMatthias Ringwald } 203*225f4ba4SMatthias Ringwald} 204*225f4ba4SMatthias Ringwald 205*225f4ba4SMatthias Ringwald/********************************************************************* 206*225f4ba4SMatthias Ringwald* 207*225f4ba4SMatthias Ringwald* BeforeTargetDisconnect 208*225f4ba4SMatthias Ringwald* 209*225f4ba4SMatthias Ringwald* Function description 210*225f4ba4SMatthias Ringwald* Event handler routine. Optional. 211*225f4ba4SMatthias Ringwald* 212*225f4ba4SMatthias Ringwald********************************************************************** 213*225f4ba4SMatthias Ringwald*/ 214*225f4ba4SMatthias Ringwald//void BeforeTargetDisconnect (void) { 215*225f4ba4SMatthias Ringwald//} 216*225f4ba4SMatthias Ringwald 217*225f4ba4SMatthias Ringwald/********************************************************************* 218*225f4ba4SMatthias Ringwald* 219*225f4ba4SMatthias Ringwald* AfterTargetDisconnect 220*225f4ba4SMatthias Ringwald* 221*225f4ba4SMatthias Ringwald* Function description 222*225f4ba4SMatthias Ringwald* Event handler routine. Optional. 223*225f4ba4SMatthias Ringwald* 224*225f4ba4SMatthias Ringwald********************************************************************** 225*225f4ba4SMatthias Ringwald*/ 226*225f4ba4SMatthias Ringwald//void AfterTargetDisconnect (void) { 227*225f4ba4SMatthias Ringwald//} 228*225f4ba4SMatthias Ringwald 229*225f4ba4SMatthias Ringwald/********************************************************************* 230*225f4ba4SMatthias Ringwald* 231*225f4ba4SMatthias Ringwald* AfterTargetHalt 232*225f4ba4SMatthias Ringwald* 233*225f4ba4SMatthias Ringwald* Function description 234*225f4ba4SMatthias Ringwald* Event handler routine. Optional. 235*225f4ba4SMatthias Ringwald* 236*225f4ba4SMatthias Ringwald********************************************************************** 237*225f4ba4SMatthias Ringwald*/ 238*225f4ba4SMatthias Ringwald//void AfterTargetHalt (void) { 239*225f4ba4SMatthias Ringwald//} 240