//***************************************************************************** // //! 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 *pSrc; uint32_t *pDest; // // Final trim of device // SetupTrimDevice(); // // Copy the data segment initializers from FLASH to SRAM. // pSrc = &_ldata; for(pDest = &_data; pDest < &_edata; ) { *pDest++ = *pSrc++; } // // 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"); // // Enable the FPU // CPACR is located at address 0xE000ED88 // Set bits 20-23 in CPACR to enable CP10 and CP11 coprocessors // __asm(" ldr.w r0, =0xE000ED88\n" " ldr r1, [r0]\n" " orr r1, r1, #(0xF << 20)\n" " str r1, [r0]\n"); // // Call the application's entry point. // main(); // // 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 *pSrc; uint32_t *pDest; // // Final trim of device // SetupTrimDevice(); // // Copy the data segment initializers from FLASH to SRAM. // pSrc = &_ldata; for(pDest = &_data; pDest < &_edata; ) { *pDest++ = *pSrc++; } // // 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(); }