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

 
 
> Сторожевой таймер в Nios II и шина Avalon
Acvarif
сообщение Jan 12 2017, 14:21
Сообщение #1


Знающий
****

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



Имеется проект в котором скомпонованы логический модуль и система на Nios. Связь из Nios с модулем (туда и обрптно) через шину Avalon. Программа для Nios имеет 3 прерывания. 1 - внешнее из логического модуля и 2 прерывания по UART. Все работает неплохо. Но бывает ситуация когда как-будто шина Avalon полностью отключается от логического модуля. Модуль становится неуправляемый. Никакие программные ухищрения не помогают. Только перезагрузка .elf файла и новый запуск программы. При этом .sof перезагружать не требуется. Конфигурация в норме. Можно-ли непосредственно из программы осуществить принудительный сброс процессора Nios с перезапуском программы? Можно-ли в программе Nios организовать, что-то вроде сторожевого таймера для перезапуска Nios и .elf?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Raven
сообщение Jan 12 2017, 16:05
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987



Эти зависания - не результат ли это шалостей VIC'а, который на кой-то ляд еще и мастером на Avalon'е може выступать? Да еще с доступом к EPCS Controller'у, из которого, как я вижу, еще и инструкции NIOS'а могут вычитываться. Нельзя ли перепровериться на системе без него? Или, на худой конец, собрать системку без пересечений (например, код NIOS брать пока из onchip RAM, и других пересечений VIC с остальными устройствами чтобы не было).
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Jan 12 2017, 16:57
Сообщение #3


Знающий
****

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



Цитата(Raven @ Jan 12 2017, 20:05) *
Эти зависания - не результат ли это шалостей VIC'а, который на кой-то ляд еще и мастером на Avalon'е може выступать? Да еще с доступом к EPCS Controller'у, из которого, как я вижу, еще и инструкции NIOS'а могут вычитываться. Нельзя ли перепровериться на системе без него? Или, на худой конец, собрать системку без пересечений (например, код NIOS брать пока из onchip RAM, и других пересечений VIC с остальными устройствами чтобы не было).

Скорее всего VIC работает неплохо. Во всяком случае внешние прерывания не зависают никогда.
Хотя.. Нужно попробовать систему без VIC..

Проверил без VIC. Все то же самое. Застревает. Нужен перезапуск .elf со сбросом. Подлючил таймер в режиме Watchdog (1 сек). Читаю док. по таймеру. Не врубаюсь.
Цитата
A watchdog timer “wakes up” (comes out of reset) stopped. Software can
start the Timer at any time by writing a 1 to the
control
register’s
start
bit. Once started, the Timer can never be stopped. The Timer generates a
pulse on its
reset_out
output when the internal count reaches zero.

После установки бита start он должен запуститься и
будет работать непрерывно. Сбросит он систему когда досчитает до нуля. Что нужно делать, чтобы он не досчитывал до 0. Пишут что нужно перезаписывать ркгистр периода. Может кто сталкивался, как это выглядит в коде попроще без typedef volatile struct и na_timer1->np_timerperiodl.
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Jan 12 2017, 18:51
Сообщение #4


Знающий
****

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



Ну сторожевой таймер работает. Неплохо.
Код:
До главного цикла при инициализации всего и вся таймер в остановленном состоянии
Код
IOWR(TIMER_0_BASE, 1, 0x0000);

В железно работающем месте программы счетчик типа
Код
        WochDogCount++;
        if(WochDogCount > 3) WochDogSt = 1;

В том месте где все застревает
Код
WochDogCount = 0;
WochDogSt = 0;
В основном цикле программы
Код
...
        if(WochDogSt)
        {
            // пуск сторожевго таймера
            IOWR(TIMER_0_BASE, 1, 0x0004);

            WochDogSt = 0;
            WochDogCount = 0;
...


Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 05:33
Рейтинг@Mail.ru


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