misyachniy 0 August 7, 2008 Posted August 7, 2008 · Report post Пол дня потратил на запуск прерывания от таймера(краснею от стыда ;-)) Оказалось что для первичного разрешения прерываний нужно использовать alt_irq_enable_all(NIOS2_STATUS_PIE_MSK); А только потом использовать контекст возвращаемый при вызове alt_irq_disable_all (void). Теперь хочу уяснить. В "обычном" процессоре прерывание обычно блокирует все прерывания, до команды iret. В NIOS также? Quote Share this post Link to post Share on other sites More sharing options...
StewartLittle 87 August 7, 2008 Posted August 7, 2008 · Report post В "обычном" процессоре прерывание обычно блокирует все прерывания, до команды iret. В NIOS также? А это смотря в каком "обычном" процессоре. Далеко не во всех ядрах прерывания блокируются. Вот в 51-м ядре все зависит от приоритета прерывания. Quote Share this post Link to post Share on other sites More sharing options...
misyachniy 0 August 8, 2008 Posted August 8, 2008 · Report post А это смотря в каком "обычном" процессоре. Далеко не во всех ядрах прерывания блокируются. Вот в 51-м ядре все зависит от приоритета прерывания. NIOS RISC процессор а не CISC. Прервать обработку и затолкать в стек адрес возврата он не может(предполагаю а не утверждаю) В ARM7(Atmel) для вложенности прерываний нужно предпринимать определенные программные ухищрения. По моему у NXP было решение о выделение для каждого прерывания индивидуальных ячеек памяти(HW STACK). По этому и переспрашиваю. Если прерывания блокируются, то зачем приоритет? Если вложеность допускается, то решается аппаратно или програмно? Эти вопросы можно найти в документации. Но еси кто недавно разбирался может по памяти подсказать. Лень нужно лееять. Она создала из обезьяны человека ;-) Quote Share this post Link to post Share on other sites More sharing options...
Kuzmi4 0 August 8, 2008 Posted August 8, 2008 · Report post 2 misyachniy - на счёт реализции - я так думаю/ну почти уверен ;) , что реализация программная - посомтрите как там устроена регистрация прерывания.. Думаю раскопки в ф-циях разрешения/запрета прерывания дадут вам правильный ответ. Quote Share this post Link to post Share on other sites More sharing options...
StewartLittle 87 August 8, 2008 Posted August 8, 2008 · Report post У ниос2, по крайней мере в нынешней версии, нету аппаратного контроллера прерываний. Имеется один адрес перехода по исключению, со смещением 0x20 в сегменте кода, если мне память не изменяет. А там обработчик должен определять, что явилось источником исключения (или прерывания), и принимать соотв. меры. Так что все там программно решается. Там смотрели : Programming Model Раздел Exception Processing См. стр.35 : Table 3–31. Nios II Exceptions (In Decreasing Priority Order) И еще там : Exception Handling Quote Share this post Link to post Share on other sites More sharing options...