Files
beyon-motion/TMC2209/lib/tmc/hal/Landungsbruecke/freescale/startup.S
2026-03-31 13:10:37 +02:00

79 lines
2.3 KiB
ArmAsm

/********************************************************************************
* \file startup.s
* \brief Startup file for Kinetis L (KL25Z).
* This module performs:
* - Set the initial SP
* - Set the initial PC == __thumb_startup,
* - Branches to main in the C library (which eventually
* calls main()).
******************************************************************************/
.syntax unified
.cpu cortex-m4
.thumb
.global g_pfnVectors
.global Default_Handler
/* start address for the initialization values of the .data section. defined in linker script */
.word ___ROM_AT
/* start address for the .data section. defined in linker script */
.word _sdata
/* end address for the .data section. defined in linker script */
.word _edata
/* start address for the .bss section. defined in linker script */
.word __START_BSS
/* end address for the .bss section. defined in linker script */
.word __END_BSS
/**
* \brief This is the code that gets called when the processor first
* starts execution following a reset event. Only the absolutely
* necessary set is performed, after which the application
* supplied main() routine is called.
* \param None
* \retval : None
*/
.section .text.__thumb_startup
.weak __thumb_startup
.type __thumb_startup, %function
__thumb_startup:
/* Call the C hardware init function (which also has to switch off the watchdog) */
bl __init_hardware
/* Copy the data segment initializers from flash to SRAM: */
movs r1, #0
b LoopCopyDataInit
CopyDataInit:
ldr r3, =___ROM_AT
ldr r3, [r3, r1]
str r3, [r0, r1]
adds r1, r1, #4
LoopCopyDataInit:
ldr r0, =_sdata
ldr r3, =_edata
adds r2, r0, r1
cmp r2, r3
bcc CopyDataInit
ldr r2, =__START_BSS
b LoopFillZerobss
/* Zero fill the bss segment: */
FillZerobss:
movs r3, #0
str r3, [r2]
adds r2, r2, #4
LoopFillZerobss:
ldr r3, = __END_BSS
cmp r2, r3
bcc FillZerobss
/* Call the application's entry point: */
bl main
blx r0 /*Call the startup code of the application (address returned by the main() function of the boot loader)*/
bx lr
.size __thumb_startup, .-__thumb_startup
/****END OF FILE****/