Keil Logo

RL-ARM: Possible Reasons for OS_ERR_FIFO_OVF Status


Information in this knowledgebase article applies to:

  • Keil RL-ARM RTX

SYMPTOM

On rare occasions, os_error() is being called with OS_ERR_FIFO_OVF. What can be the reason for this?

CAUSE

The OS_ERR_FIFO_OVF occurs when the FIFO queue for post-processing events sent via isr_xxx() functions becomes full. In this case, events will be lost. To inform the user about this critical situation, os_error() is called.

Interrupts can't access critical RTX resources. Because of that, such actions must be queued and later processed by the RTX. isr_xxx() functions will also trigger an RTX interrupt that runs when the current interrupt handler finishes.

This FIFO queue size is configurable in the RTX_Config. But selecting the maximum size will not always help if the RTX does not get the chance to process the FIFO queue. So possible reasons for the error are:

  • The interrupt rate for isr_xxx() function calls is too fast.
  • Too many isr_xxx() function calls from the same interrupt handler.
  • The task scheduler was locked too long (after tsk_lock() too long a delay before tsk_unlock()).
  • More interrupts are used and the IRQ rate is too high (that the system runs almost all of the time in the user IRQ handlers).

RESOLUTION

Check your application against the possible reasons mentioned above and avoid them. This should give RTX sufficient time to post-process the FIFO queue and the OS_ERR_FIFO_OVF error will not occur.

SEE ALSO

FORUM THREADS

The following Discussion Forum threads may provide information related to this topic.

Last Reviewed: Thursday, November 12, 2020


Did this article provide the answer you needed?
 
Yes
No
Not Sure
 
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.