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

 
 
 
Reply to this topicStart new topic
> Прерывание в Nios
djhall
сообщение May 2 2013, 12:13
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 29-04-06
Пользователь №: 16 608



Перешёл на Nios 12.1 c 9.0 и обнаружил, что программа которая работала на 9.0 не хочет запускаться в 12.1. А именно ругается на функцию alt_irq_register. Выяснил, что дело в том, что файл нызывается .cpp, а не .c. Подскажите как заапустить прерывание в .cpp
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение May 3 2013, 14:08
Сообщение #2


Гуру
******

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



2 djhall
а зачем вам куча тяжеловесных приколов С++ на ниосе ?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 3 2013, 14:22
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(djhall @ May 2 2013, 15:13) *
Подскажите как заапустить прерывание в .cpp

Может как-то так:
Код
extern "C" void Isr_Handler()
{
}
Go to the top of the page
 
+Quote Post
barabek
сообщение May 4 2013, 06:35
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Когда переходил с 9-го на 11-й с прерываниями тоже возникли проблемы. Они там немного переделали bsp. Старый лежит в
Код
#include<priv/alt_legacy_irq.h>

ну и далее по коду пришлось делать такие вставки
Код
#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT
void GRCache_ISR(void * context) __attribute__((section (".exceptions")));
#else
void GRCache_ISR(void * context,alt_u32 id) __attribute__((section (".exceptions")));
#endif
....
....
//********************************************************************************

#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT
void GRCache_ISR(void *context)
#else
void GRCache_ISR(void *context,alt_u32 id)
#endif
{
//тело прерывания
}
Go to the top of the page
 
+Quote Post
billidean
сообщение May 27 2013, 14:35
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



Цитата(barabek @ May 4 2013, 10:35) *
Код
#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT
void GRCache_ISR(void *context)
#else
void GRCache_ISR(void *context,alt_u32 id)
#endif
{
//тело прерывания
}

Да уж, теперь так приходится всегда оформлять определение обработчика прерываний, т.к. не известно на каком квартусе все будет компилиться в итоге.
А код получается некрасивым из-за таких вставок.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 28 2013, 05:29
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



а через дефайн нельзя в одном месте?

#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT
#define GRCache_ISR(void *context,alt_u32 id) GRCache_ISR(void *context)
#endif

и везде писать только
GRCache_ISR(void *context,alt_u32 id)

?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 28 2013, 05:29
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



а через дефайн нельзя в одном месте?

#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT
#define GRCache_ISR(void *context,alt_u32 id) GRCache_ISR(void *context)
#endif

и везде писать только
GRCache_ISR(void *context,alt_u32 id)

?
Go to the top of the page
 
+Quote Post

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

 


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


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