2022-06-27 12:41 AM
Hi ! I'm currently working on a STM32H747-DISCO with TouchGFX to test and discover this graphic library.
My touchGFX app is only 2 screens with a button to go screen 1 or 2 with a slide animation.
But when I'm implementing an other task in FreeRTOS with a higher priority, TouchGFX freeze at some point when i'm changing screen. My goal was to see when the animations of the library would lag with an other task running on the M7.
Do you have any idea why the screen freeze ? It may be linked to the slide animation of screen.
Solved! Go to Solution.
2022-07-22 07:59 AM
Hi,
I just worked again on this issue, so here is an update and a summary about my problem.
-> The problem :
I'm working on a STM32H747-DISCO with the graphic library TouchGFX. I'm only using the M7 core under FreeRTOS. I added an other task called "CPU_Burner" to stress the CPU with some calculation to see how the TouchGFX's task respond and if the lagging effect is acceptable at some degrees. Of course the CPU_Burner task got an higher priority than the TouchGFX one or it won't get impacted.
When I flash the card and set up my CPU burner at 30% of the total load for example, after swiching between the two screens 1, 2 or 3 times, the TouchGFX GUI task freezed. And it's impossible to get it run again. The other task got no problem and is still runing, only TouchGFX and the screen remains fixed.
-> What I have done so far :
Some people managed to solve a similar issue with the MCU reconfiguration, in
this ST forum :
https://community.st.com/s/question/0D53W00000e067WSAQ/ui-stuck-in-takeframebuffersemaphore
-> The only solution that I Found :
void HAL_DSI_TearingEffectCallback(DSI_HandleTypeDef* hdsi)
" if (!refreshRequested)
HAL::getInstance()->allowDMATransfers(); "
I made a simplier project with System View with with the same issue. You can download it and try my project to see the freeze by yourself.
Thanks again to all the people trying to solve this ! :)
2022-06-27 01:49 AM
Hello @LBESO.1 ,
Can you please provide more information ?
Thanks,
/Yoann
2022-06-27 02:10 AM
Hey, thanks for that quick answer, I'm using TouchGFX V4.19.1.
I'm currently cleaning my project to get it easier to share. Will post everything as soon as i can.
2022-06-27 06:36 AM
Here is the amin files of my small project.
I use Get Run Time Stats from FreeRTOS to monitor the CPU's load with 2 tasks :
There is also a folder for SEGGER RTT because i'm using RTT printf when debugging with a JLINK probe.
My TouchGFX application is composed of 2 screens, nothing crazy :
When I'm trying to get the application lagging it freeze the majority of the time and i get stuck with a screen like this one (here in during a slide) :
2022-06-28 12:52 AM
Hello,
Can you please share your whole project ? (TouchGFX project, .ioc file, and all the generated files).
I will try to reproduce your problem and debug your project.
Thank you,
/Yoann
2022-06-28 01:09 AM
Hi,
Here it is.
As far as i am researching the problem, i found out 2 things :
Thanks you.
2022-06-29 02:14 AM
Hi,
Don't hesitate to tell me if things aren't clear in my (a little messy) project.
Again thanks for your time and help.
2022-06-30 12:15 AM
Hello,
I tried to reproduce your error, without success.
For me, even when I had a second task, everything is still working fine and nothing freezes or crashes.
Did you already try to start a new project from scratch (using the TouchGFX Board Setup) and then add sequentially your elements from the other project to identify from which part does your issue come from ?
/Yoann
2022-06-30 12:46 AM
Good morning,
Thanks for your attempt. I already tried on an other old project with several screens but same issue.
In the project i sent you, there is a variable called cpu_burner_variable1 initialize at 10 (ms). And the osdelay at the end of the second task fixed to 100(ms). Could you just try with cpu_burner_variable1 over 60 for example and osDelay at 100 - cpu_burner_variable1?
It should highly increase the chance to get a Freeze.
I will try again from scratch adding second task with nothing in TouchGFX GUI’s screen and see if it Freezed.
Thanks you again for your help.
2022-06-30 12:47 AM
Good morning,
Thanks for your attempt. I already tried on an other old project with several screens but same issue.
In the project i sent you, there is a variable called cpu_burner_variable1 initialize at 10 (ms). And the osdelay at the end of the second task fixed to 100(ms). Could you just try with cpu_burner_variable1 over 60 for example and osDelay at 100 - cpu_burner_variable1?
It should highly increase the chance to get a Freeze.
I will try again from scratch adding second task with nothing in TouchGFX GUI’s screen and see if it Freezed.
Thanks you again for your help.