2023-12-27 01:16 PM
Hello, I am attempting to follow the tutorial listed here in order to generate a simple screen with some widgets for a Riverdi RVT70HSSFWCA0 display board. The board is correctly powered and i can access it with an external ST-LINK.
However, when attempting to generate code with TouchGFX Designer (4.23.0) i am getting the following error in class DoubleBufferedVideoController during project compilation:
C:/TouchGFXProjects/riverdi7-0001/CM7/TouchGFX/target/generated/TouchGFXGeneratedHAL.cpp:36:70: error: cannot declare variable '{anonymous}::videoController' to be of abstract type 'DoubleBufferedVideoController<1, 800, 480, 2400, touchgfx::Bitmap::RGB888>'
36 | DoubleBufferedVideoController<1, 800, 480, 800 * 3U, Bitmap::RGB888> videoController;
| ^~~~~~~~~~~~~~~
In file included from C:/TouchGFXProjects/riverdi7-0001/CM7/TouchGFX/target/generated/TouchGFXGeneratedHAL.cpp:27:
../../../CM7/TouchGFX/target/generated/DoubleBufferedVideoController.hpp:49:7: note: because the following virtual functions are pure within 'DoubleBufferedVideoController<1, 800, 480, 2400, touchgfx::Bitmap::RGB888>':
49 | class DoubleBufferedVideoController : public touchgfx::VideoController
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../../CM7/TouchGFX/target/generated/MJPEGDecoder.hpp:22,
from ../../../CM7/TouchGFX/target/generated/HardwareMJPEGDecoder.hpp:21,
from C:/TouchGFXProjects/riverdi7-0001/CM7/TouchGFX/target/generated/TouchGFXGeneratedHAL.cpp:26:
../../CM7/../../CM7/Middlewares/ST/touchgfx/framework/include/touchgfx/hal/VideoController.hpp:219:18: note: 'virtual void touchgfx::VideoController::setVideoFrameRateCompensation(bool)'
219 | virtual void setVideoFrameRateCompensation(bool allow) = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arm-none-eabi-gcc "C:/TouchGFXProjects/riverdi7-0001/CM7/FATFS/Target/fatfs_platform.c" -mcpu=cortex-m7 -std=gnu11 -g3 -DDEBUG -DCORE_CM7 -DUSE_HAL_DRIVER -DSTM32H747xx -c -I../../../CM7/Core/Inc -I../../../CM7/FATFS/Target -I../../../CM7/FATFS/App -I../../../CM7/TouchGFX/App -I../../../CM7/TouchGFX/target/generated -I../../../CM7/TouchGFX/target -I../../../Drivers/STM32H7xx_HAL_Driver/Inc -I../../../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I../../../Utilities/JPEG -I../../../Middlewares/Third_Party/FatFs/src -I../../../Middlewares/Third_Party/FreeRTOS/Source/include -I../../../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../../../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I../../../Drivers/CMSIS/Include -I../../CM7/../../CM7/Middlewares/ST/touchgfx/framework/include -I../../CM7/../../CM7/TouchGFX/generated/fonts/include -I../../CM7/../../CM7/TouchGFX/generated/gui_generated/include -I../../CM7/../../CM7/TouchGFX/generated/images/include -I../../CM7/../../CM7/TouchGFX/generated/texts/include -I../../CM7/../../CM7/TouchGFX/generated/videos/include -I../../CM7/../../CM7/TouchGFX/gui/include -I../../../CM7/USB_HOST/App -I../../../CM7/USB_HOST/Target -I../../../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../../../Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Application/User/FATFS/Target/fatfs_platform.d" -MT"Application/User/FATFS/Target/fatfs_platform.o" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "Application/User/FATFS/Target/fatfs_platform.o"
make[1]: *** [Application/User/TouchGFX/target/generated/subdir.mk:39: Application/User/TouchGFX/target/generated/TouchGFXGeneratedHAL.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [makefile:102: all] Error 2
"make -j8 all" terminated with exit code 2. Build might be incomplete.
17:47:50 Build Failed. 4 errors, 0 warnings. (took 21s.660ms)
Which seems to be from this snippet in file TouchGFXGeneratedHAL.cpp:
namespace
{
LOCATION_PRAGMA_NOLOAD("Video_RGB_Buffer")
uint32_t videoRGBBuffer[576000] LOCATION_ATTRIBUTE_NOLOAD("Video_RGB_Buffer");
DoubleBufferedVideoController<1, 800, 480, 800 * 3U, Bitmap::RGB888> videoController;
}
Any tips on what could be causing this issue?
Solved! Go to Solution.
2023-12-28 02:34 AM
Hello @gslm ,
Unfortunately, I can see that there is a problem. We will fix this issue as soon as possible, but as a temporary solution for you to start working, open the STM32CubeMX project (Riverdi_70STM32H7.ioc file), go to Middleware and Software Packs -> X-CUBE-TOUCHGFX, under the TouchGFX Generator tab, change the Vector Rendering to Software. Then, press the Generate Code button on top right of the screen. Now, you should be able to compile with no errors.
Again, sorry for the inconvenience.
I hope this helps you.
2023-12-28 02:34 AM
Hello @gslm ,
Unfortunately, I can see that there is a problem. We will fix this issue as soon as possible, but as a temporary solution for you to start working, open the STM32CubeMX project (Riverdi_70STM32H7.ioc file), go to Middleware and Software Packs -> X-CUBE-TOUCHGFX, under the TouchGFX Generator tab, change the Vector Rendering to Software. Then, press the Generate Code button on top right of the screen. Now, you should be able to compile with no errors.
Again, sorry for the inconvenience.
I hope this helps you.
2023-12-28 02:44 PM
Thanks for the quick reply @Mohammad MORADI ESFAHANIASL!
I downgraded TouchGFX Designer to 4.22 and could only change the Vector Rendering to "Disabled" for this test as oposed to "Software", but nevertheless this did result in a succesful compilation & board flashing. I believe there was a mismatch between the TouchGFX Designer and STM32CubeIDE versions of X-CUBE-TOUCHGFX.
2024-01-02 01:19 AM
You are very welcome, glad to hear it works now.
Thank you for the observation, we will definitely consider it.
2024-03-06 01:17 PM
I have a similar (or the same?) problem. All I've done is create a project and added a single background image - no other widgets of any kind. I've already tried the above fix, and the code seemed to generate successfully. However it fails when I attempt to compile.
This is failing with:
cannot declare variable 'videoController' to be of abstract type 'DedicatedBufferController<1, 480, 288, 960, touchgfx::Bitmap::RGB565>'
make: *** [Application/User/TouchGFX/target/generated/subdir.mk:46: Application/User/TouchGFX/target/generated/TouchGFXGeneratedHAL.o] Error 1
make: *** [makefile:93: all] Error 2
make[1]: *** [makefile:100: Riverdi_70STM32H7_CM7.elf] Error 1
undefined reference to `videoTaskFunc'
I also notice that if I attempt to reopen the project in TouchGFX after attempting the above mentioned fix, the screen size and aspect ratio is altered.
I wasn't able to get a complete log from CubeIDE, but I managed to grab one from TouchGFX. (Attached.)
Thanks for your help,
Jason
2024-03-08 05:28 AM
Hello @jkimble ,
Riverdi is working on this matter, so the solution will be available online soon.
Please, if you have further questions, create a new thread (post) about it.
Thank you so much
2024-03-15 10:14 AM
Just to let everyone know, this issue was resolved with the new version of TouchGFX - v4.23.2.
Installed the new version, and it programmed without any issues.
Thanks!