Skip to main content
Kneepatch
Senior
August 14, 2021
Solved

Help - Can't get existing TouchGFX project to compile

  • August 14, 2021
  • 3 replies
  • 1196 views

For some reason, can't get a TouchGFX project I imported from another computer to compile and run on the target. I can get it to run in the simulator just fine though. Here are some details:

error: 'setFrameBufferStartAddress' is not a member of 'touchgfx::HAL'

Here is the full console output:

Run Target
 Generate
 Done
 Generate Assets
 make -f simulator/gcc/Makefile assets -j10
 Converting images
 Reading ./application.config
 Done
 Post Generate
 touchgfx update_project --project-file=simulator/msvs/Application.vcxproj && touchgfx update_project --project-file=target/IAR/application.ewp && touchgfx update_project --project-file=target/IAR8.x/application.ewp && touchgfx update_project --project-file=target/Keil/application.uvproj
 Compiler: ARMCC.
 Done
 Compile
 make -f target/gcc/Makefile -j10
 Converting images
 Reading ./application.config
 Compiling target/bsp/source/platform/hal/mcu/stm32f4cube/STM32F4HAL_DSI.cpp
 Compiling target/bsp/source/BoardConfiguration.cpp
 Compiling target/bsp/source/vendor/STM32469I-Discovery/stm32469i_discovery.c
 Compiling target/bsp/source/vendor/STM32469I-Discovery/stm32469i_discovery_lcd.c
 Compiling target/bsp/source/vendor/STM32469I-Discovery/stm32469i_discovery_qspi.c
 Compiling target/bsp/source/vendor/STM32469I-Discovery/stm32469i_discovery_sdram.c
 Compiling target/bsp/source/vendor/STM32469I-Discovery/stm32469i_discovery_ts.c
 Compiling target/bsp/source/vendor/Components/ft6x06/ft6x06.c
 Compiling target/bsp/source/vendor/Components/otm8009a/otm8009a.c
 Compiling target/bsp/source/platform/hal/mcu/stm32f4cube/STM32F4xx_HAL_Driver/stm32f4xx_hal.c
 target/bsp/source/platform/hal/mcu/stm32f4cube/STM32F4HAL_DSI.cpp: In member function 'virtual void STM32F4HAL_DSI::setFrameBufferStartAddress(void*, uint16_t, bool, bool)':
 target/bsp/source/platform/hal/mcu/stm32f4cube/STM32F4HAL_DSI.cpp:94:10: error: 'setFrameBufferStartAddress' is not a member of 'touchgfx::HAL'
 HAL::setFrameBufferStartAddress(adr, depth, useDoubleBuffering, useAnimationStorage);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~
 target/gcc/Makefile:333: recipe for target 'build/ST/STM32469IDISCO/target/bsp/source/platform/hal/mcu/stm32f4cube/STM32F4HAL_DSI.o' failed
 make[2]: *** [build/ST/STM32469IDISCO/target/bsp/source/platform/hal/mcu/stm32f4cube/STM32F4HAL_DSI.o] Error 1
 make[2]: *** Waiting for unfinished jobs....
 Compiling target/bsp/source/platform/hal/mcu/stm32f4cube/STM32F4xx_HAL_Driver/stm32f4xx_hal_cortex.c
 target/bsp/source/BoardConfiguration.cpp: In function 'void touchgfx::touchgfx_init()':
 target/bsp/source/BoardConfiguration.cpp:209:9: error: 'class touchgfx::HAL' has no member named 'setFrameBufferStartAddress'; did you mean 'setFrameBufferStartAddresses'?
 hal.setFrameBufferStartAddress((uint16_t*)frameBuf0, bitDepth, false);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~
 setFrameBufferStartAddresses
 target/gcc/Makefile:333: recipe for target 'build/ST/STM32469IDISCO/target/bsp/source/BoardConfiguration.o' failed
 make[2]: *** [build/ST/STM32469IDISCO/target/bsp/source/BoardConfiguration.o] Error 1
 target/gcc/Makefile:300: recipe for target 'generate_assets' failed
 make[1]: *** [generate_assets] Error 2
 target/gcc/Makefile:42: recipe for target 'all' failed
 make: *** [all] Error 2
 Failed
 Failed

Can you please help me figure out what is going on and what I can do to fix it? Thanks!

This topic has been closed for replies.
Best answer by Romain DIELEMAN

Hi,

Digging this up. The function setFrameBufferStartAddress() is a function used in TouchGFX 4.14 and older. In the latest versions the function is called setFrameBufferStartAddresses(). My guess is then that the project you were shared is quite old and you are working on a more recent version of TouchGFX where the function was removed in HAL.hpp as shown in your error message. I can also see that in the fact that you have a file called BoardConfiguration which is something we (the TouchGFX team) have removed now when projects were updated to include STM32CubeMX.

/Romain

3 replies

Romain DIELEMAN
Romain DIELEMANBest answer
ST Employee
September 9, 2021

Hi,

Digging this up. The function setFrameBufferStartAddress() is a function used in TouchGFX 4.14 and older. In the latest versions the function is called setFrameBufferStartAddresses(). My guess is then that the project you were shared is quite old and you are working on a more recent version of TouchGFX where the function was removed in HAL.hpp as shown in your error message. I can also see that in the fact that you have a file called BoardConfiguration which is something we (the TouchGFX team) have removed now when projects were updated to include STM32CubeMX.

/Romain

Romain DIELEMAN
ST Employee
September 9, 2021

To fix it you need to replace the setFrameBufferStartAddress() by setFrameBufferStartAddresses() and adapt it to your project. If you are working with a ST development kit I would suggest to start a project from scratch with the TBS (new name for Application Template) for that board, and then import the UI of the old project by using the "Import GUI" option in TouchGFX Designer.

/Romain

Kneepatch
KneepatchAuthor
Senior
September 28, 2021

Thank you so much for the reply! I ended up compiling it in TGFX 4.14 and it worked. But it's good to know how to fix it should I have to migrate anything forward :)

-Kneepatch