cancel
Showing results for 
Search instead for 
Did you mean: 

TouchGFXGeneratedHAL::flushFrameBuffer never get called

load2005
Associate III

Hello,

I am using a 8080 screen and FMC module as an interface to LCD screen.

I have created a project using CubeMX (6.0.1) and Touch GFX (4.15).

In GFX there is only one startup screen and only one button.

I am not using OS. The project was generated and compiles with no errors.

So I have MX_TouchGFX_Process(); function call in a while cycle.

I found from manual that a tick driver should be implemented to generate VSync signal.

Ok. I have added a signalVSync call into SysTick interrupt to call each 100ms. The signalVSync inside has vsync_sem = 1; code. It is void OSWrappers::signalVSync().

I have set a breakpoint to flushFrameBuffer but it is never hit.

I have added a touchgfx::HAL::getInstance()->taskEntry(); in the main code. (Through extern C wrapper). Still no call to flushFrameBuffer.

Please tell me what places should i check? Never used that library before.

Thanks,

1 ACCEPTED SOLUTION

Accepted Solutions
Alexandre RENOUX
Principal

Hello,

Do you happen to have this line of code ?

lockDMAToFrontPorch(true);

If yes, set the parameter to false and try again.

For the OSWrapper you can refer to any Application Template available in TouchGFX Designer.

The Application Template F412G-DISCO in TouchGFX Designer uses FMC display interface, you can use it as a reference to help you in your development as well.

/Alexandre

View solution in original post

5 REPLIES 5
load2005
Associate III

I have checked through debugger that the project is stuck in lockFrameBufferEv function.

The call stack looks the following:

lockFrameBufferEv

fillREctERKNS_4RECT_9colortype

BOx4drawERKNS

Screen5JISMOCERKNS_4RectEPNS_8Drawable

taskEntryEv

So the button is drawn but the library can't get access to framebuffer.

I see that OSWrappers::takeFrameBufferSemaphore never called.

How the library is organized internally? Maybe i need to redefine some OSWrapper functions?

What else i need to check?

load2005
Associate III

I have checked that OSWrappers::takeFrameBufferSemaphore is never get called.

waitForVSync is called once.

Alexandre RENOUX
Principal

Hello,

Do you happen to have this line of code ?

lockDMAToFrontPorch(true);

If yes, set the parameter to false and try again.

For the OSWrapper you can refer to any Application Template available in TouchGFX Designer.

The Application Template F412G-DISCO in TouchGFX Designer uses FMC display interface, you can use it as a reference to help you in your development as well.

/Alexandre

load2005
Associate III

Hello Alexandre RENOUX

Thanks for reply.

It worked.

Now i see that flush framebuffer is called.

It has all zeros. But i will check everything.

Maybe i missed to add something.

Thanks for help!!

Alexandre RENOUX
Principal

If your question is answered, please close this topic by choosing Select as Best.

/Alexandre