реклама на сайте
подробности

 
 
> AT91SAM7X256. Загадка для шпиона., Непонятное поведение после программного сброса
Aurochs
сообщение Dec 26 2009, 22:50
Сообщение #1


Ортодокс
***

Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775



Имеется такой вот код (для GCC):
CODE
void Stop ( void )
{
.................................
.................................
AT91F_RSTSoftReset( AT91C_BASE_RSTC,
AT91C_RSTC_PROCRST );
// наивно ждем сброса
// но в нижеследующей команде возникает исключение "Undefined instruction"
asm volatile ( "B ." );
}

void undef_handler ( void )
__attribute__ (( interrupt( "UNDEF" ), naked ));
void undef_handler ( void )
{
.................................
.................................
Stop();
}


void pabort_handler ( void )
__attribute__ (( interrupt( "ABORT" ), naked ));
void pabort_handler ( void )
{
.................................
.................................
Stop();
}


void dabort_handler ( void )
__attribute__ (( interrupt( "ABORT" ), naked ));
void dabort_handler ( void )
{
.................................
.................................
Stop();
}

Когда в процессоре возникает какое-то из вышеупомянутых исключений (какое точно - неизвестно), то попадаем в функцию Stop и пытаемся сделать сброс. Да не тут то было - почему-то возникает безконечная последовательность исключений типа "Undefined instruction" на ассемблеровской команде ожидания, а сброса так и нет.
Уже дважды такой перл зафиксировал в боевой прошивке. Попытки воспроизвести подобное поведение в "лабораторных условиях" ни к чему не привели - все работает без фокусов. С горя добавил еще 2 ассемблеровских команды бесконечного цикла (типа после программирования контроллера сброса процессор вываливается в исключение в момент предвыборки, т.к. получается, что вслед за командой B . идут уже данные).
Вот теперь и мучаюсь - спасет ли это отца русской демократии? 07.gif

Сообщение отредактировал Aurochs - Dec 26 2009, 22:52
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 23:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01549 секунд с 7
ELECTRONIX ©2004-2016