First of all I would like to note that I am quite new at the RTOS business.
I am using FreeRTOS on my STM32L151VC arm processor. I am using binary-semaphore to sync between an interrupt and some task (The semaphore state that the DMA has finished its action). Now, The time passed between the command of xSemaphoreGiveFromISR() to the required task being on and running again is about 50[us]. That seems too long to me, isn’t it?
I would like to state, that for this test I have used only 1 task (and IDLE task), my cpu clk is 24[MHz]. I have looked on FreeRTOS web-sites for some answer and didn’t find any. I only found a statement that this action should take less than 1[us].
I am using IAR embedded workbench. I measure the time pasted with oscilloscope (Pulling up a GPIO before the command is issued and lowering it when the task begin to run).
On IAR I am using high level of optimization and right after the command of xSemaphoreGiveFromISR() I am using portYIELD_FROM_ISR() (For shorter switch time to task).
My question is, has anyone encountered a similar problem? Anyone knows how to solve this time overhead problem? Is 50[us] a normal time?
Thanks for all the helpers…