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); | ||
|  |   } | ||
|  | } |