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

 
 
 
Reply to this topicStart new topic
> NIOS alt_exception_unknown
novartis
сообщение Jun 8 2015, 09:03
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Добрый день.
Отлаживаю проект с Ниосом.
Иногда процессор тупо виснет. Причем может проработать полчаса и все нормально, а иногда через 5 минут виснет.
Запускаю дебаг режим, и если зависает, то попадаю в файл alt_exception_entry.S в следующий код в строку с break:
Код
.....
alt_exception_unknown:
#ifdef NIOS2_HAS_DEBUG_STUB
       /*
        *  Either tell the user now (if there is a debugger attached) or go into
        *  the debug monitor which will loop until a debugger is attached.
        */
        break
#else /* NIOS2_HAS_DEBUG_STUB disabled */
       /*
        *  If there is no debug stub, an infinite loop is more useful.
        */
        br   alt_exception_unknown
#endif /* NIOS2_HAS_DEBUG_STUB */
#endif /* ALT_INCLUDE_INSTRUCTION_RELATED_EXCEPTION_API */

        .section .exceptions.exit.label
.Lexception_exit:

        .section .exceptions.exit, "xa"

        /*
         * Restore the saved registers, so that all general purpose registers
         * have been restored to their state at the time the interrupt occured.
         */

        ldw   r5,  68(sp)
        ldw   ea,  72(sp)  /* This becomes the PC once eret is executed */
        ldw   ra,   0(sp)

        wrctl estatus, r5

        ldw   r1,   8(sp)
        ldw   r2,  12(sp)
        ldw   r3,  16(sp)
        ldw   r4,  20(sp)
        ldw   r5,  24(sp)
        ldw   r6,  28(sp)
        ldw   r7,  32(sp)
......


Чтобы это значило и как это победить?


Прикрепленное изображение




Go to the top of the page
 
+Quote Post
Timmy
сообщение Jun 8 2015, 09:26
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Там написан источник исключения: rtp.cpp:435 и адрес инструкции, так что надо посмотреть в дизассембер и сделать выводы. Например, невыровненное обращение к памяти.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jun 8 2015, 09:28
Сообщение #3


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Проверьте, не возникает ли у Вас программного исключения (деление на 0, обращение к несуществующей области памяти и т.п.) или аппаратного прерывания, для которого нет обработчика.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
novartis
сообщение Jun 8 2015, 12:56
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Вроде устранили проблему. При возникновении определенной ситуации производил сброс своих пользовательских модулей. И в одном из модулей в момент сброса могло выставиться прерывание (на один такт). Занулил сигнал прерывания на момент сброса, и все стало работать без эксепшинов. Физику процесса так и не постиг. Прерывание как прерывание, только длинною в один такт. То есть как написал Stewart Little аппаратное прерывание имеется, но обработчик то для него есть.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jun 8 2015, 13:26
Сообщение #5


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(novartis @ Jun 8 2015, 15:56) *
Физику процесса так и не постиг. Прерывание как прерывание, только длинною в один такт.

Чтобы постичь физику процесса, читайте, как устроен "софтверный" контроллер исключений (который называется Internal).

Если коротко, то существует только один адрес перехода по исключению, откуда вызывается обработчик исключений. Этот обработчик определяет, что явилось источником исключения, и вызывает соответствующий ISR.
Скорее всего, у Вас длительности импульса хватает для определения факта прерывания, но к моменту "разбора полетов" Ваш импульс уже успевает закончиться. Вот обработчик и не может определить, что именно его вызвало.

P.S. ИМХО, стоит использовать VIC, если, конечно, у Вас NiosII не Economy.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 13:56
Рейтинг@Mail.ru


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