This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

RTX OS_ERR_FIFO_OVF

Hi,

I am using the STM32F207 (Cortex-M3) device with MDK 4.50. I have an ISR function which calls isr_evt_set() to send a “Tick” event when a 1ms h/w timer tick occurs. A task calls os_evt_wait_and() and waits indefinitely for the “Tick” event. When the event arrives it does some processing and then waits for the next “Tick” event.

This all works OK until I set a breakpoint. When I hit F5 to continue code execution I get an os_error() with err_code 2 (OS_ERR_FIFO_OVF). This implies that the ISR FIFO queue buffer has overflowed. This does not happen at any other time accept when continuing after a breakpoint. I have changed the OS_FIFOSZ size from 16 to 96 but this made no difference.

I do not get this problem if I run the same code on an STR91x (ARM9).

Any ideas?

Parents
  • I can confirm that interrupts are definitely disabled when in Debug state. Therefore what I guess is happening is that when F5 is pressed to resume code execution following a breakpoint, then the interrupts come back to life and many 1ms interrupts occur (and many events are posted) before the debugger has resumed execution of the task that reads the events, hence the FIFO overflow. If I slow my 1ms tick to 10ms then the problem goes away. However, I need the 1ms tick so a solution would be good.

Reply
  • I can confirm that interrupts are definitely disabled when in Debug state. Therefore what I guess is happening is that when F5 is pressed to resume code execution following a breakpoint, then the interrupts come back to life and many 1ms interrupts occur (and many events are posted) before the debugger has resumed execution of the task that reads the events, hence the FIFO overflow. If I slow my 1ms tick to 10ms then the problem goes away. However, I need the 1ms tick so a solution would be good.

Children