Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прерывание в Nios
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
djhall
Перешёл на Nios 12.1 c 9.0 и обнаружил, что программа которая работала на 9.0 не хочет запускаться в 12.1. А именно ругается на функцию alt_irq_register. Выяснил, что дело в том, что файл нызывается .cpp, а не .c. Подскажите как заапустить прерывание в .cpp
Kuzmi4
2 djhall
а зачем вам куча тяжеловесных приколов С++ на ниосе ?
_Артём_
Цитата(djhall @ May 2 2013, 15:13) *
Подскажите как заапустить прерывание в .cpp

Может как-то так:
Код
extern "C" void Isr_Handler()
{
}
barabek
Когда переходил с 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
{
//тело прерывания
}
billidean
Цитата(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
{
//тело прерывания
}

Да уж, теперь так приходится всегда оформлять определение обработчика прерываний, т.к. не известно на каком квартусе все будет компилиться в итоге.
А код получается некрасивым из-за таких вставок.
Golikov A.
а через дефайн нельзя в одном месте?

#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)

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

#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)

?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.