Doubt about interrupts in xilinx zedboard BSP
Thomas Doerfler
thomas.doerfler at embedded-brains.de
Tue Apr 18 08:15:51 UTC 2017
Hi,
does this link help?
https://forums.xilinx.com/t5/Zynq-All-Programmable-SoC/Zynq-Clear-Pending-SGI/td-p/747038
wkr,
Thomas.
Am 18.04.2017 um 10:11 schrieb Sergio Paracuellos:
>
>
>
>
>
> 2017-04-18 9:28 GMT+02:00 Thomas Doerfler
> <thomas.doerfler at embedded-brains.de
> <mailto:thomas.doerfler at embedded-brains.de>>:
>
> Hi,
>
>
> 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.
>
>
>
> The interrupt is a Software Generated Interrupt one which uses SGI0 HW IRQ.
>
> The interrupt pending bit for the vector is being cleared in
> bsp_interrupt_dispatch() routine for the arm's based bsp's.
>
> It should be enough to get this working, but it seems it is not.
> Something that I have to keep in mind?
>
>
>
> 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.
>
>
> Cheers,
> Sergio Paracuellos
>
>
>
> 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 <mailto:users at rtems.org>
> > http://lists.rtems.org/mailman/listinfo/users
> <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
> <mailto:Thomas.Doerfler at embedded-brains.de>
> Phone: +49-89-18 94 741-12 <tel:%2B49-89-18%2094%20741-12>
> Fax: +49-89-18 94 741-09 <tel:%2B49-89-18%2094%20741-09>
> PGP: Public key available on request.
>
> Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
> _______________________________________________
> users mailing list
> users at rtems.org <mailto:users at rtems.org>
> http://lists.rtems.org/mailman/listinfo/users
> <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