Jump to content
    

"Подобие" прерываний NIOS на "обычный" процессор

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

 

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

нужно использовать

 

  alt_irq_enable_all(NIOS2_STATUS_PIE_MSK);

 

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

 

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

 

В "обычном" процессоре прерывание обычно блокирует все прерывания, до команды iret.

В NIOS также?

Share this post


Link to post
Share on other sites

В "обычном" процессоре прерывание обычно блокирует все прерывания, до команды iret.

В NIOS также?

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

Share this post


Link to post
Share on other sites

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

 

NIOS RISC процессор а не CISC.

Прервать обработку и затолкать в стек адрес возврата он не может(предполагаю а не утверждаю)

В ARM7(Atmel) для вложенности прерываний нужно предпринимать определенные программные ухищрения.

По моему у NXP было решение о выделение для каждого прерывания индивидуальных ячеек памяти(HW STACK).

 

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

 

Если прерывания блокируются, то зачем приоритет?

Если вложеность допускается, то решается аппаратно или програмно?

Эти вопросы можно найти в документации.

Но еси кто недавно разбирался может по памяти подсказать.

Лень нужно лееять.

Она создала из обезьяны человека ;-)

Share this post


Link to post
Share on other sites

2 misyachniy - на счёт реализции - я так думаю/ну почти уверен ;) , что реализация программная - посомтрите как там устроена регистрация прерывания..

Думаю раскопки в ф-циях разрешения/запрета прерывания дадут вам правильный ответ.

Share this post


Link to post
Share on other sites

У ниос2, по крайней мере в нынешней версии, нету аппаратного контроллера прерываний.

Имеется один адрес перехода по исключению, со смещением 0x20 в сегменте кода, если мне память не изменяет. А там обработчик должен определять, что явилось источником исключения (или прерывания), и принимать соотв. меры. Так что все там программно решается.

Там смотрели : Programming Model

Раздел Exception Processing

См. стр.35 : Table 3–31. Nios II Exceptions (In Decreasing Priority Order)

 

И еще там : Exception Handling

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...