300 lines
18 KiB
Text
300 lines
18 KiB
Text
/*********************************************************************
|
||
* (c) SEGGER Microcontroller GmbH *
|
||
* The Embedded Experts *
|
||
* www.segger.com *
|
||
**********************************************************************
|
||
|
||
File :
|
||
Created : 31 Mär 2020 2:33
|
||
Ozone Version : V2.70b
|
||
*/
|
||
|
||
/*********************************************************************
|
||
*
|
||
* OnProjectLoad
|
||
*
|
||
* Function description
|
||
* Project load routine. Required.
|
||
*
|
||
**********************************************************************
|
||
*/
|
||
void OnProjectLoad (void) {
|
||
//
|
||
// Dialog-generated settings
|
||
//
|
||
Project.AddPathSubstitute ("/home/janhenrik/STM32Cube/midi-dials", "$(ProjectDir)");
|
||
Project.AddPathSubstitute ("/home/janhenrik/stm32cube/midi-dials", "$(ProjectDir)");
|
||
Project.SetDevice ("STM32F072CB");
|
||
Project.SetHostIF ("USB", "");
|
||
Project.SetTargetIF ("SWD");
|
||
Project.SetTIFSpeed ("1 MHz");
|
||
Project.AddSvdFile ("$(InstallDir)/Config/CPU/Cortex-M0.svd");
|
||
Project.AddSvdFile ("/home/janhenrik/Downloads/STM32F072x.svd");
|
||
//
|
||
// User settings
|
||
//
|
||
File.Open ("$(ProjectDir)/build/midi-dials.elf");
|
||
}
|
||
|
||
/*********************************************************************
|
||
*
|
||
* OnSnapshotLoad
|
||
*
|
||
* Function description
|
||
* Optional event handler, called upon loading a snapshot.
|
||
*
|
||
* 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
|
||
* Optional event handler, called upon saving a snapshot.
|
||
*
|
||
* 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) {
|
||
//}
|
||
|
||
/*********************************************************************
|
||
*
|
||
* TargetReset
|
||
*
|
||
* Function description
|
||
* Replaces the default target device reset routine. Optional.
|
||
*
|
||
* Notes
|
||
* This example demonstrates the usage when
|
||
* debugging a RAM program on a Cortex-M target device
|
||
*
|
||
**********************************************************************
|
||
*/
|
||
//void TargetReset (void) {
|
||
//
|
||
// unsigned int SP;
|
||
// unsigned int PC;
|
||
// unsigned int VectorTableAddr;
|
||
//
|
||
// VectorTableAddr = Program.GetBaseAddr();
|
||
//
|
||
// if (VectorTableAddr != 0xFFFFFFFF) {
|
||
// SP = Target.ReadU32(VectorTableAddr);
|
||
// Target.SetReg("SP", SP);
|
||
// } else {
|
||
// Util.Log("Project file error: failed to get program base");
|
||
// }
|
||
//
|
||
// PC = Elf.GetEntryPointPC();
|
||
//
|
||
// if (PC != 0xFFFFFFFF) {
|
||
// Target.SetReg("PC", PC);
|
||
// } else if (VectorTableAddr != 0xFFFFFFFF) {
|
||
// PC = Target.ReadU32(VectorTableAddr + 4);
|
||
// Target.SetReg("PC", PC);
|
||
//}
|
||
/*********************************************************************
|
||
*
|
||
* BeforeTargetReset
|
||
*
|
||
* Function description
|
||
* Event handler routine. Optional.
|
||
*
|
||
**********************************************************************
|
||
*/
|
||
//void BeforeTargetReset (void) {
|
||
//}
|
||
|
||
/*********************************************************************
|
||
*
|
||
* AfterTargetReset
|
||
*
|
||
* Function description
|
||
* Event handler routine.
|
||
* - Sets the PC register to program reset value.
|
||
* - Sets the SP register to program reset value on Cortex-M.
|
||
*
|
||
**********************************************************************
|
||
*/
|
||
void AfterTargetReset (void) {
|
||
unsigned int SP;
|
||
unsigned int PC;
|
||
unsigned int VectorTableAddr;
|
||
|
||
VectorTableAddr = Elf.GetBaseAddr();
|
||
|
||
if (VectorTableAddr != 0xFFFFFFFF) {
|
||
SP = Target.ReadU32(VectorTableAddr);
|
||
Target.SetReg("SP", SP);
|
||
} else {
|
||
Util.Log("Project file error: failed to get program base");
|
||
}
|
||
|
||
PC = Elf.GetEntryPointPC();
|
||
|
||
if (PC != 0xFFFFFFFF) {
|
||
Target.SetReg("PC", PC);
|
||
} else if (VectorTableAddr != 0xFFFFFFFF) {
|
||
PC = Target.ReadU32(VectorTableAddr + 4);
|
||
Target.SetReg("PC", PC);
|
||
}
|
||
}
|
||
|
||
/*********************************************************************
|
||
*
|
||
* 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.
|
||
* - Sets the PC register to program reset value.
|
||
* - Sets the SP register to program reset value on Cortex-M.
|
||
*
|
||
**********************************************************************
|
||
*/
|
||
void AfterTargetDownload (void) {
|
||
unsigned int SP;
|
||
unsigned int PC;
|
||
unsigned int VectorTableAddr;
|
||
|
||
VectorTableAddr = Elf.GetBaseAddr();
|
||
|
||
if (VectorTableAddr != 0xFFFFFFFF) {
|
||
SP = Target.ReadU32(VectorTableAddr);
|
||
Target.SetReg("SP", SP);
|
||
} else {
|
||
Util.Log("Project file error: failed to get program base");
|
||
}
|
||
|
||
PC = Elf.GetEntryPointPC();
|
||
|
||
if (PC != 0xFFFFFFFF) {
|
||
Target.SetReg("PC", PC);
|
||
} else if (VectorTableAddr != 0xFFFFFFFF) {
|
||
PC = Target.ReadU32(VectorTableAddr + 4);
|
||
Target.SetReg("PC", PC);
|
||
}
|
||
}
|
||
|
||
/*********************************************************************
|
||
*
|
||
* 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) {
|
||
//}
|