On 20/09/2018 15:48, Catalin Demergian wrote:
Hi,
I'm using
#define BSP_ARMV7M_IRQ_PRIORITY_DEFAULT (13 << 4)
13*16=208 > 0x80=128, so I should be on the safe side.

what do you mean by operating system services ?

Everything which uses rtems_interrupt_disable() or _Thread_Dispatch_disable().

like rtems_event_send in ISR ?

Yes.

is there other way to handle USB data other than copy data in a buffer in ISR and signal a kernel
task (that is doing rtems_event_receive) with a rtems_event_send call ?

The message queues should work for this purpose. If the data is large enough, then it is better to copy it only once and use a custom queue implementation.


regards,
Catalin

On Wed, Sep 19, 2018 at 5:58 AM Mingyu Li <lmy2010...@gmail.com <mailto:lmy2010...@gmail.com>> wrote:

    Hi Catalin.

    I find the problem you encountered interesting. I hope to offer
    some hints that might be helpful to you:

    1. use a user task to first rtems_event_send
    then rtems_event_receive, in order to make sure the internal IPC
    of RTEMS kernel you are using (4.11.2) works as expected.
    2. ensure to disable/lock interrupts while operating the
    message_queue inside USB ISR. Try to check if clock ISR is still
    responded when USB ISR exits, so that the kernel task can be
    scheduled to obtain the message.

    Best regards,
    Mingyu

    2018-09-18 20:20 GMT+08:00 Catalin Demergian <demerg...@gmail.com
    <mailto:demerg...@gmail.com>>:

        Hello,
        I am using RTEMS 4.11.2 and I tried first to use RTEMS message
        queues in my USB FS driver.
        I'm populating the queue from the ISR and then use
        rtems_message_queue_receive from a kernel task to
        read the messages. After some debugging sessions I came to the
        conlusion that rtems_message_queue_receive function
        hangs even if there are messages in the queue. (manpage says
        it should return immediately if there is at least one message
        in the queue; in my case the queue gets full, but still the
        function hangs)

        I tried then rtems_event_receive. I used my own queues and
        from ISR I only called rtems_event_send; the same issue
        happened again, this time rtems_event_receive hangs even if I
        see the event was raised (with task command in the shell)

        My question is: are there any known issues/bugs with these
        functions ?

        thanks,
        Catalin

        _______________________________________________
        users mailing list
        users@rtems.org <mailto:users@rtems.org>
        http://lists.rtems.org/mailman/listinfo/users



_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users

Reply via email to