//***************************************************************************** // //! 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 entry() routine is called. Any fancy //! actions (such as making decisions based on the reset cause register, and //! resetting the bits in that register) are left solely in the hands of the //! application. // //***************************************************************************** void ResetISR(void) { // // Final trim of device // trimDevice(); // // Jump to IAR initialization routine // __iar_program_start(); // // If we ever return signal Error // FaultISR(); }
//***************************************************************************** // //! 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 entry() routine is called. Any fancy //! actions (such as making decisions based on the reset cause register, and //! resetting the bits in that register) are left solely in the hands of the //! application. // //***************************************************************************** void ResetISR(void) { uint32_t *pui32Src, *pui32Dest; // // Final trim of device // trimDevice(); // // Copy the data segment initializers from flash to SRAM. // pui32Src = &_etext; for(pui32Dest = &_data; pui32Dest < &_edata; ) { *pui32Dest++ = *pui32Src++; } // // Zero fill the bss segment. // __asm(" ldr r0, =_bss\n" " ldr r1, =_ebss\n" " mov r2, #0\n" " .thumb_func\n" "zero_loop:\n" " cmp r0, r1\n" " it lt\n" " strlt r2, [r0], #4\n" " blt zero_loop"); // // Call the application's entry point. // main(); // // If we ever return signal Error // FaultISR(); }