cancel
Showing results for 
Search instead for 
Did you mean: 

Help - Can't get existing TouchGFX project to compile

Kneepatch
Associate III

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!

1 ACCEPTED SOLUTION

Accepted Solutions
Romain DIELEMAN
ST Employee

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

View solution in original post

3 REPLIES 3
Romain DIELEMAN
ST Employee

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

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

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 🙂