336 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			336 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*********************************************************************
 | 
						|
*                 (c) SEGGER Microcontroller GmbH                    *
 | 
						|
*                      The Embedded Experts                          *
 | 
						|
*                         www.segger.com                             *
 | 
						|
**********************************************************************
 | 
						|
 | 
						|
File          :
 | 
						|
Created       : 30 Jun 2021 13:37
 | 
						|
Ozone Version : V3.24a
 | 
						|
*/
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       OnProjectLoad
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Project load routine. Required.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
void OnProjectLoad (void) {
 | 
						|
  // Dialog-generated settings
 | 
						|
  Project.AddSvdFile ("$(InstallDir)/Config/CPU/Cortex-M33F.svd");
 | 
						|
  Project.AddSvdFile ("./nrf5340_application.svd");
 | 
						|
  Project.SetDevice ("nRF5340_xxAA_APP");
 | 
						|
  Project.SetHostIF ("USB", "");
 | 
						|
  Project.SetTargetIF ("SWD");
 | 
						|
  Project.SetTIFSpeed ("16 MHz");
 | 
						|
 | 
						|
  Project.SetTraceSource ("Trace Pins");
 | 
						|
  Project.SetTracePortWidth (4);
 | 
						|
 | 
						|
  // User settings
 | 
						|
  File.Open ("../../../../../../examples/device/cdc_msc/cmake-build-pca10095/cdc_msc.elf");
 | 
						|
}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       OnStartupComplete
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Called when program execution has reached/passed
 | 
						|
*   the startup completion point. Optional.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void OnStartupComplete (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*      TargetReset
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Replaces the default target device reset routine. Optional.
 | 
						|
*
 | 
						|
* Notes
 | 
						|
*   This example demonstrates the usage when
 | 
						|
*   debugging an application in RAM on a Cortex-M target device.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void TargetReset (void) {
 | 
						|
//
 | 
						|
//  unsigned int SP;
 | 
						|
//  unsigned int PC;
 | 
						|
//  unsigned int VectorTableAddr;
 | 
						|
//
 | 
						|
//  VectorTableAddr = Elf.GetBaseAddr();
 | 
						|
//  //
 | 
						|
//  // Set up initial stack pointer
 | 
						|
//  //
 | 
						|
//  if (VectorTableAddr != 0xFFFFFFFF) {
 | 
						|
//    SP = Target.ReadU32(VectorTableAddr);
 | 
						|
//    Target.SetReg("SP", SP);
 | 
						|
//  }
 | 
						|
//  //
 | 
						|
//  // Set up entry point PC
 | 
						|
//  //
 | 
						|
//  PC = Elf.GetEntryPointPC();
 | 
						|
//
 | 
						|
//  if (PC != 0xFFFFFFFF) {
 | 
						|
//    Target.SetReg("PC", PC);
 | 
						|
//  } else if (VectorTableAddr != 0xFFFFFFFF) {
 | 
						|
//    PC = Target.ReadU32(VectorTableAddr + 4);
 | 
						|
//    Target.SetReg("PC", PC);
 | 
						|
//  } else {
 | 
						|
//    Util.Error("Project file error: failed to set entry point PC", 1);
 | 
						|
//  }
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       BeforeTargetReset
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Event handler routine. Optional.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void BeforeTargetReset (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       AfterTargetReset
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Event handler routine. Optional.
 | 
						|
*   The default implementation initializes SP and PC to reset values.
 | 
						|
**
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
void AfterTargetReset (void) {
 | 
						|
  _SetupTarget();
 | 
						|
}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       DebugStart
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Replaces the default debug session startup routine. Optional.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void DebugStart (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       TargetConnect
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Replaces the default target IF connection routine. Optional.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void TargetConnect (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       BeforeTargetConnect
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Event handler routine. Optional.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
void BeforeTargetConnect (void) {
 | 
						|
}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       AfterTargetConnect
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Event handler routine. Optional.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void AfterTargetConnect (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       TargetDownload
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Replaces the default program download routine. Optional.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void TargetDownload (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       BeforeTargetDownload
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Event handler routine. Optional.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void BeforeTargetDownload (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*      AfterTargetDownload
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Event handler routine. Optional.
 | 
						|
*   The default implementation initializes SP and PC to reset values.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
void AfterTargetDownload (void) {
 | 
						|
  _SetupTarget();
 | 
						|
}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       BeforeTargetDisconnect
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Event handler routine. Optional.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void BeforeTargetDisconnect (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       AfterTargetDisconnect
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Event handler routine. Optional.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void AfterTargetDisconnect (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       AfterTargetHalt
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Event handler routine. Optional.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void AfterTargetHalt (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       BeforeTargetResume
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Event handler routine. Optional.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void BeforeTargetResume (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       OnSnapshotLoad
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Called upon loading a snapshot. Optional.
 | 
						|
*
 | 
						|
* Additional information
 | 
						|
*   This function is used to restore the target state in cases
 | 
						|
*   where values cannot simply be written to the target.
 | 
						|
*   Typical use: GPIO clock needs to be enabled, before
 | 
						|
*   GPIO is configured.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void OnSnapshotLoad (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       OnSnapshotSave
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Called upon saving a snapshot. Optional.
 | 
						|
*
 | 
						|
* Additional information
 | 
						|
*   This function is usually used to save values of the target
 | 
						|
*   state which can either not be trivially read,
 | 
						|
*   or need to be restored in a specific way or order.
 | 
						|
*   Typically use: Memory Mapped Registers,
 | 
						|
*   such as PLL and GPIO configuration.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void OnSnapshotSave (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       OnError
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Called when an error occurred. Optional.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
//void OnError (void) {
 | 
						|
//}
 | 
						|
 | 
						|
/*********************************************************************
 | 
						|
*
 | 
						|
*       _SetupTarget
 | 
						|
*
 | 
						|
* Function description
 | 
						|
*   Setup the target.
 | 
						|
*   Called by AfterTargetReset() and AfterTargetDownload().
 | 
						|
*
 | 
						|
*   Auto-generated function. May be overridden by Ozone.
 | 
						|
*
 | 
						|
**********************************************************************
 | 
						|
*/
 | 
						|
void _SetupTarget(void) {
 | 
						|
  unsigned int SP;
 | 
						|
  unsigned int PC;
 | 
						|
  unsigned int VectorTableAddr;
 | 
						|
 | 
						|
  VectorTableAddr = Elf.GetBaseAddr();
 | 
						|
  //
 | 
						|
  // Set up initial stack pointer
 | 
						|
  //
 | 
						|
  SP = Target.ReadU32(VectorTableAddr);
 | 
						|
  if (SP != 0xFFFFFFFF) {
 | 
						|
    Target.SetReg("SP", SP);
 | 
						|
  }
 | 
						|
  //
 | 
						|
  // Set up entry point PC
 | 
						|
  //
 | 
						|
  PC = Elf.GetEntryPointPC();
 | 
						|
  if (PC != 0xFFFFFFFF) {
 | 
						|
    Target.SetReg("PC", PC);
 | 
						|
  } else {
 | 
						|
    Util.Error("Project script error: failed to set up entry point PC", 1);
 | 
						|
  }
 | 
						|
}
 |