Stuck with OSWrappers::takeFrameBufferSemaphore
Well, hello, here I am again.
Today I would like to ask you about OSWrappers::takeFrameBufferSemaphore() method. Unfortunetly in our device we get some random 'hangs' after minutes or even hours of working. Inside this method TGFX waits for a semaphore to be released:
xSemaphoreTake(frame_buffer_sem, portMAX_DELAY);
TGFX works in a single thread so I guess it waits for DMA2D interrupt to signalize the task it can safely make further magic with framebuffer. But in our case it happens to wait for it for ever. The stack presents as following (I changed portMAX_DELAY to 5000 after which I performed BKPT):
I have no idea how to repair it or even debug.
I have found some info about problems with this lock here:
https://support.touchgfx.com/docs/miscellaneous/known-issues#textarea-and-chromart-dma2d
I added endFrame method in HAL:
void STM32F7HAL::endFrame()
{
if (dma.isDMARunning())
{
OSWrappers::tryTakeFrameBufferSemaphore();
}
HAL::endFrame();
}But it did not help- although it helps somehow when changing portMAX_DELAY to for example 50 ms- then takeFrameBufferSemaphore exits and continues to work.
EDIT: well, it hanged anyway.
Any idea how to make it work?
TGFX Im using atm is 4.13 with some old OSWrappers and TGFXHALs (I compared it with the present ones and it's almost the same)
