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

 
 
 
Reply to this topicStart new topic
> "Подобие" прерываний NIOS на "обычный" процессор
misyachniy
сообщение Aug 7 2008, 09:50
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Пол дня потратил на запуск прерывания от таймера(краснею от стыда ;-))

Оказалось что для первичного разрешения прерываний
нужно использовать

Код
  alt_irq_enable_all(NIOS2_STATUS_PIE_MSK);


А только потом использовать контекст возвращаемый при вызове alt_irq_disable_all (void).

Теперь хочу уяснить.

В "обычном" процессоре прерывание обычно блокирует все прерывания, до команды iret.
В NIOS также?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Aug 7 2008, 15:37
Сообщение #2


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

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



Цитата(misyachniy @ Aug 7 2008, 13:50) *
В "обычном" процессоре прерывание обычно блокирует все прерывания, до команды iret.
В NIOS также?

А это смотря в каком "обычном" процессоре. Далеко не во всех ядрах прерывания блокируются. Вот в 51-м ядре все зависит от приоритета прерывания.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Aug 8 2008, 08:47
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Цитата(Stewart Little @ Aug 7 2008, 18:37) *
А это смотря в каком "обычном" процессоре. Далеко не во всех ядрах прерывания блокируются. Вот в 51-м ядре все зависит от приоритета прерывания.


NIOS RISC процессор а не CISC.
Прервать обработку и затолкать в стек адрес возврата он не может(предполагаю а не утверждаю)
В ARM7(Atmel) для вложенности прерываний нужно предпринимать определенные программные ухищрения.
По моему у NXP было решение о выделение для каждого прерывания индивидуальных ячеек памяти(HW STACK).

По этому и переспрашиваю.

Если прерывания блокируются, то зачем приоритет?
Если вложеность допускается, то решается аппаратно или програмно?
Эти вопросы можно найти в документации.
Но еси кто недавно разбирался может по памяти подсказать.
Лень нужно лееять.
Она создала из обезьяны человека ;-)
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Aug 8 2008, 10:02
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 misyachniy - на счёт реализции - я так думаю/ну почти уверен wink.gif , что реализация программная - посомтрите как там устроена регистрация прерывания..
Думаю раскопки в ф-циях разрешения/запрета прерывания дадут вам правильный ответ.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Aug 8 2008, 12:25
Сообщение #5


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

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



У ниос2, по крайней мере в нынешней версии, нету аппаратного контроллера прерываний.
Имеется один адрес перехода по исключению, со смещением 0x20 в сегменте кода, если мне память не изменяет. А там обработчик должен определять, что явилось источником исключения (или прерывания), и принимать соотв. меры. Так что все там программно решается.
Там смотрели : Programming Model
Раздел Exception Processing
См. стр.35 : Table 3–31. Nios II Exceptions (In Decreasing Priority Order)

И еще там : Exception Handling


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

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

 


RSS Текстовая версия Сейчас: 20th June 2025 - 20:30
Рейтинг@Mail.ru


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