2023-11-28 08:25 PM
I understand that when the gpio set/clear functions are called, it's possible to check the values of VSYNC_FREQ, RENDER_TIME, FRAME_RATE, and MCU_ACTIVE.
2023-12-13 04:57 AM
Hello @jung ,
Those pins that you mentioned (VSYNC_FREQ, RENDER_TIME, FRAME_RATE, and MCU_ACTIVE) are already activated and implemented for usage in the TouchGFX core. So, you just need to assign some pins in your STM32CubeMX project to represent these signals, therefore, you don't need to call them yourself. Then, you can start seeing the performance by connecting the pins to an oscilloscope or logic analyser.
You can read more about those pins here:
https://support.touchgfx.com/docs/development/touchgfx-hal-development/scenarios/scenarios-measure-performance#performance-metrics
I hope this helps you
Good luck
2024-02-16 09:08 AM - edited 2024-02-16 09:54 AM
I have a similar question and I didn't find the provided answer to my satisfaction. I'm using the STM32H735G-DK development board and I have modified the project to work without FreeRTOS (I've attached my oswrappers). It works, but I noticed only MCU_ACTIVE is NOT set by TouchGFX. If I set it while backPorchExited is being called, then MCU_ACTIVE behaves exactly the same as RENDER_TIME. If I check the documentation I see something different:
https://support.touchgfx.com/docs/development/touchgfx-hal-development/scenarios/scenarios-measure-performance#performance-metrics
MCU_ACTIVE can become low during parts of the RENDER_TIME in this example.
I use isVSyncAvailable() and when false I run my own code in the loop. Only when isVSyncAvailable is true I call backPorchExited (during which I set MCU_ACTIVE). Higher priority "tasks" are run in a timer interrupt (and they quickly finish in a few cycles) or peripheral interrupt.
taskYield and taskDelay are not called. But I did notice that if I push a button takeFrameBufferSemaphore is waiting for a semaphore to be available. If I clear MCU_ACTIVE there and call my own idle function I get the same pattern as in the example (I also added an MCU_IDLE signal during this waiting time). However I still wonder why this is happening inside the library.
So my questions are: