Doubt about interrupts in xilinx zedboard BSP
Thomas Doerfler
thomas.doerfler at embedded-brains.de
Tue Apr 18 07:28:47 UTC 2017
Hi,
what kind of interrupt source do you have? I assume that the intterrupt
source keeps it interrupt request active, until you have done something
in the interrupt source registers that makes the interrupt inactive again.
Example: If you interrupt source is a UART receiver, the interrupt
request usually stays active until you have pulled all the received UART
bytes from the UART receive data register...
wkr,
Thomas.
Am 18.04.2017 um 09:24 schrieb Sergio Paracuellos:
> Hi all,
>
> I am trying to exec some code over xilinx-zynq zedboard. The code tries
> to make use of interrupts. I am installing the interrupt routine for the
> interrupt vector using rtems_interrupt_handler_install routine which is
> seems the correct one for this board. When the interrupt is trigered the
> handler is correctly called but it becomes in a infinite loop status
> when the interrupt is being handled. So is obvious that i am doing
> something wrong. The pseudo code for this is like the following:
>
> #include <bsp.h>
> #include <stdlib.h>
> #include <rtems/irq.h>
> #include <rtems/irq-extension.h>
>
> #define MAX_NUMBER_OF_MESSAGES 5
>
> #define INTERRUPT_VECTOR_NUMBER 100
>
> volatile int seq;
>
> void MyInterruptHandler(void *arg)
> {
> puts("Interrupt handler called\n");
> seq++;
> }
>
> rtems_task Init(rtems_task_argument argument)
> {
> rtems_status_code sc;
>
> sc = rtems_interrupt_handler_install(
> INTERRUPT_VECTOR_NUMBER,
> "MY_INTERRUPT",
> RTEMS_INTERRUPT_UNIQUE,
> (rtems_interrupt_handler) MyInterruptHandler,
> NULL
> );
>
> if (sc != RTEMS_SUCCESSFUL)
> {
> puts("MyInterruptHandler -> rtems_interrupt_handler_install()
> error: %d\n", sc);
> exit(-1);
> }
>
> puts("Waiting for messages...\n");
>
> /* wait for five interrupts to be triggered */
> while (1)
> {
> if (seq == MAX_NUMBER_OF_MESSAGES)
> break;
> }
>
> puts("Max number of messages retrieved\n");
> exit(0);
> }
>
> The result is:
>
> Waiting for messages...
>
> Interrupt handler called
> Interrupt handler called
> Interrupt handler called
> Interrupt handler called
> Interrupt handler called
> Interrupt handler called
> Interrupt handler called
> ....
>
> Enters in a infinite loop calling the interrupt handler....
>
> This similar code runs for me in other OS, so i am a little lost. Also,
> I couldn't find any example of using interrupts for zedboard.
>
> What is missing in this code?
>
> Thanks in advance,
>
> Cheers,
> Sergio Paracuellos
>
>
>
>
>
> _______________________________________________
> users mailing list
> users at rtems.org
> http://lists.rtems.org/mailman/listinfo/users
>
--
--------------------------------------------
embedded brains GmbH
Thomas Doerfler
Dornierstr. 4
D-82178 Puchheim
Germany
email: Thomas.Doerfler at embedded-brains.de
Phone: +49-89-18 94 741-12
Fax: +49-89-18 94 741-09
PGP: Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the users
mailing list