Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
10 years ago

How to get rid of warning: implicit declaration of function 'alt_irq_register'?

Hi all,

I'm working with a nios application and it works but I can't find a way to get rid of this warning. I try to follow the# include files but I keep getting lost. I have a fixed timer (100ms) set up in qsys... called TIMER_0. I've included the following files in main.c:

# include "alt_types.h"# include "io.h"# include "system.h"# include "altera_avalon_timer_regs.h" //for timer# include "sys/alt_irq.h" //for irq ?

The line giving me the error is:

alt_irq_register(TIMER_0_IRQ, 0, timer_isr);

Thanks

5 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Look at the BSP documentation that was generated when you built your BSP. Check there for alt_irq_register. Assuming you didn't mispell it, that documentation should list what include file(s) you need to include.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Could you be more specific when you say to look at the documentation that was generated with the BSP please? I see a "summary.html" file but I'm not sure what I'm looking for.

    Thanks
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Please have a look at the systems.h inside your BSP and check whether you have a define for "ALT_ENHANCED_INTERRUPT_API_PRESENT".

    if it is defined, please have look at <alt_irq.h> and see:

    /*

    * alt_ic_isr_register() can be used to register an interrupt handler. If the

    * function is succesful, then the requested interrupt will be enabled upon

    * return.

    */

    extern int alt_ic_isr_register(alt_u32 ic_id,

    alt_u32 irq,

    alt_isr_func isr,

    void *isr_context,

    void *flags);

    if it is not defined, use:

    /*

    * alt_irq_register() can be used to register an interrupt handler. If the

    * function is succesful, then the requested interrupt will be enabled upon

    * return.

    */

    extern int alt_irq_register (alt_u32 id,

    void* context,

    alt_isr_func handler);

    which seems to be used by you, but the define seems to be there...

    I hope this helps as starting point.

    Kind regards
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    ALT_ENHANCED_INTERRUPT_API_PRESENT was defined. I was reading the documentation and it said that alt_irq_register() was deprecated so I changed it to alt_ic_isr_register() a few days ago. I didn't know what to use for "void *isr_context" and "void *flags" so I made them zero. I defined the isr as: void timer_isr(). All warnings went away. Thanks.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Sorry, my mistake. I was thinking of the SoC chip BSP. The NIOS environment doesn't automatically generate BSP documentation.

    For the NIOS, the BSP documentation is in https://www.altera.com/content/dam/altera-www/global/en_us/pdfs/literature/hb/nios2/n2sw_nii5v2.pdf. This is the NIOS II Software development handbook.

    You might also want to look at https://www.altera.com/content/dam/altera-www/global/en_us/pdfs/literature/hb/nios2/n2sw_nii52017.pdf which is the documentation for the development environment.