2021-07-26 17:17:04 +08:00
|
|
|
/*********************************************************************
|
|
|
|
* (c) SEGGER Microcontroller GmbH *
|
|
|
|
* The Embedded Experts *
|
|
|
|
* www.segger.com *
|
|
|
|
**********************************************************************
|
|
|
|
|
2021-08-31 17:38:28 +08:00
|
|
|
File : /home/geekzjk/m-labs/SW/Syrostan-MCU-C/Syrostan-C.jdebug
|
|
|
|
Created : 30 Sep 2021 09:52
|
|
|
|
Ozone Version : V3.24b
|
2021-07-26 17:17:04 +08:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*********************************************************************
|
|
|
|
*
|
|
|
|
* OnProjectLoad
|
|
|
|
*
|
|
|
|
* Function description
|
|
|
|
* Project load routine. Required.
|
|
|
|
*
|
|
|
|
**********************************************************************
|
|
|
|
*/
|
|
|
|
void OnProjectLoad (void) {
|
|
|
|
//
|
|
|
|
// Dialog-generated settings
|
|
|
|
//
|
|
|
|
Project.AddPathSubstitute ("/home/geekzjk/m-labs/SW/Syrostan-MCU-C", "$(ProjectDir)");
|
|
|
|
Project.AddPathSubstitute ("/home/geekzjk/m-labs/sw/syrostan-mcu-c", "$(ProjectDir)");
|
2021-08-31 17:38:28 +08:00
|
|
|
Project.SetDevice ("STM32F103VF");
|
|
|
|
Project.SetHostIF ("USB", "");
|
2021-07-26 17:17:04 +08:00
|
|
|
Project.SetTargetIF ("SWD");
|
|
|
|
Project.SetTIFSpeed ("4 MHz");
|
|
|
|
Project.AddSvdFile ("$(InstallDir)/Config/CPU/Cortex-M3.svd");
|
|
|
|
//
|
|
|
|
// User settings
|
|
|
|
//
|
|
|
|
File.Open ("$(ProjectDir)/build/Syrostan-MCU-C.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 ocurred. 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
|
|
|
|
//
|
2021-08-31 17:38:28 +08:00
|
|
|
PC = Target.ReadU32(VectorTableAddr + 4);
|
2021-07-26 17:17:04 +08:00
|
|
|
if (PC != 0xFFFFFFFF) {
|
|
|
|
Target.SetReg("PC", PC);
|
|
|
|
} else {
|
|
|
|
Util.Error("Project script error: failed to set up entry point PC", 1);
|
|
|
|
}
|
|
|
|
}
|