В ходе выполения программа выпадает в DATA ABORT и перезапускается WDT. Хочу после перезапуска получить адрес инструкции вызвавшей исключение. В исключении сохраняю в глобальную переменную, в основном теле вычитываю при старте. В отладчике все работает. Без отладчика переменная abort_addr из исключения не устанавливается, а при каждом нажатии на сброс увеличивается на единицу. Почему не устанавливается?
Код
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++;
while (1);
}
Сообщение отредактировал id_Alx - Mar 25 2011, 12:18