. Section VectorsTrampolines, "xa",% progbits
. Arm
ARM_Vectors:
@ RESET
RESET_VECTOR:
b UNDEF_VECTOR
@ UNDEF INSTR
UNDEF_VECTOR:
ldr pc, UNDEF_SubHandler_Trampoline
...
UNDEF_SubHandler_Trampoline:
. Word UNDEF_SubHandler
Thus, we see that the reset vector refers to undef vector. Going further
along the chain, it became obvious that in the end call the function
AT91_SAM_Driver::Reset, which resets the processor.
Why is this happening?
P.S. Sorry my english... :)
in VectorHandler.s, we call UNDEF_HANDLER vector, which is coded in
DeviceCode\Cores\arm\Diagnostics\Aborts.cpp as
void UNDEF_Handler( UINT32* registers, UINT32 sp, UINT32 lr )
{
ASSERT_IRQ_MUST_BE_OFF();
#if !defined(BUILD_RTM)
Verify_RAMConstants((void *) FALSE);
ABORT_HandlerDisplay(registers, sp, lr, 4, "Undef Instr", TRUE);
CPU_Halt();
#else
CPU_Reset();
#endif // !defined(BUILD_RTM)
}
that means that is you are building for 'RTM' (with /p:flavor=RTM) then you
get a reset
Regards
L.
%SPOCLIENT%\DeviceCode\Cores\arm\AssemblyCode\arm\[gnu_s|RVD_s]\FirstEntry.s