2021-08-14 11:01 AM
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!
Solved! Go to Solution.
2021-09-09 01:10 AM
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
2021-09-09 01:10 AM
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
2021-09-09 01:12 AM
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
2021-09-28 04:57 AM
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 :)