На DATA ABORT точно заходит, т.к. я сам его вызываю путем
Код
volatile word *k = (word *)1; // III
*k = 1;
, в примере выше я вместо WDT использую сброс, с WDT ситуация аналогичная.
Код
static volatile __no_init dword abort_addr;
#pragma optimize = none
__irq __arm void Abort_Handler()
{
static __no_init dword j;
dword ttt = j;
asm("sub r0,lr,#8 \n" );
abort_addr = ttt;
while (1)
{
}
}
int main( void )
{
// всякая инициализация
printf( "0x%08X", abort_addr ); // III
abort_addr++;
// ждем пока уйдет строка из буфера...
volatile word *k = (word *)1; // III
*k = 1; // DATA ABORT
while (1);
}