cancel
Showing results for 
Search instead for 
Did you mean: 

Touch gfx linkers

Aziz
Associate II

When i run target this message appeared plz help me 

'' Compiling Utilities/JPEG/jpeg_utils.c
Compiling Common/Src/system_stm32h7xx_dualcore_boot_cm4_cm7.c
Compiling ASM STM32CubeIDE/CM7/Application/User/Startup/startup_stm32h747xihx.s
Linking CM7/TouchGFX/build/bin/target.elf
CM7gcc/makefile_cm7:442: recipe for target 'CM7/TouchGFX/build/bin/target.elf' failed
/Middlewares/ST/touchgfx/lib/core/cortex_m7/gcc\libtouchgfx-float-abi-hard.a(LCD24bpp.o): In function `touchgfx::LCD24bpp::DecompressorRGB_QOI::blitCopyARGB8888(unsigned char const*, touchgfx::Rect const&, touchgfx::Rect const&, unsigned char)':
(.text._ZN8touchgfx8LCD24bpp19DecompressorRGB_QOI16blitCopyARGB8888EPKhRKNS_4RectES6_h+0x328): undefined reference to `touchgfx::paint::flushLine(unsigned long*, int)'
(.text._ZN8touchgfx8LCD24bpp19DecompressorRGB_QOI16blitCopyARGB8888EPKhRKNS_4RectES6_h+0x4e2): undefined reference to `touchgfx::paint::flushLine(unsigned long*, int)'
CM7/Middlewares/ST/touchgfx/lib/core/cortex_m7/gcc\libtouchgfx-float-abi-hard.a(LCD24bpp.o): In function `touchgfx::LCD24bpp::DecompressorRGB_QOI::blitCopyRGB888(unsigned char const*, touchgfx::Rect const&, touchgfx::Rect const&, unsigned char)':
(.text._ZN8touchgfx8LCD24bpp19DecompressorRGB_QOI14blitCopyRGB888EPKhRKNS_4RectES6_h+0x46a): undefined reference to `touchgfx::paint::flushLine(unsigned long*, int)'
(.text._ZN8touchgfx8LCD24bpp19DecompressorRGB_QOI14blitCopyRGB888EPKhRKNS_4RectES6_h+0x4ea): undefined reference to `touchgfx::paint::flushLine(unsigned long*, int)'
collect2.exe: error: ld returned 1 exit status
make[3]: *** [CM7/TouchGFX/build/bin/target.elf] Error 1
make[3]: Leaving directory 'c:/TouchGFXProjects/MV_Display'
make[2]: *** [generate_assets] Error 2
gcc/makefile_cm7:438: recipe for target 'generate_assets' failed
make[2]: Leaving directory 'c:/TouchGFXProjects/MV_Display'
make[1]: *** [all] Error 2
Makefile_cm7:51: recipe for target 'all' failed
make[1]: Leaving directory 'C:/TouchGFXProjects/MV_Display/gcc'
make: *** [flash] Error 2
../../gcc/Makefile:10: recipe for target 'flash' failed
Failed
Failed
''

1 ACCEPTED SOLUTION

Accepted Solutions
GaetanGodart
ST Employee

As a rule of thumb, always use the latest versions if you can. So for TouchGFX, STM32CubeMX, STM32CubeIDE, etc.

Since you use a Riverdi board, here are the steps to be able to flash your design on your board:

  1. Open TouchGFX Designer (hopefully the latest version [4.24.0])
  2. Click on "Create new" or "New"
  3. Select "By partners" (1) you can also write "Riverdi" in the search bar
  4. Select the board you are using. In your case the Riverdi_70 as you use 7 inches screen. (2)
  5. Make sure that your board reference is available for this TBS. (3)
  6. Finally, you can create a project. (4)

GaetanGodart_0-1723195216233.png

Then you can import the GUI you previously created by clicking on "Edit" => "Import" => "GUI".

If you have done those steps and you get the error messages mentioning flushline and DecompressorRGB, simply open your folder, open the STM32CubeMX file (.ioc) and click on "Generate code" (make sure to use the correct toolchain such as STM32CubeIDE for STM32CubeIDE or TouchGFX Designer).
Then you can flash again and the issue will be gone.

 

If this comment solves your problem, I invite you to select it as "best answer".

 

Regards,

 

Gaetan Godart
Software engineer at ST (TouchGFX)

View solution in original post

10 REPLIES 10

What's at CM7gcc/makefile_cm7 line 442?

What source file does touchgfx::paint::flushLine(unsigned long*, int) exist in? Why is that not part of the build / dependency here?

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

in the line 442 there is this :  # @Echo $(object_files)

this is little extract of the file :

$(binary_output_path)/$(target_executable): $(object_files) $(object_asm_files)
    # @Echo $(object_files)
    # @Echo $(object_files_video)  
    # @Echo $(stldr)    
    # @Echo $(st_stm32cube_external_loader)
    @echo Linking $(@)
    @mkdir -p $(@D)
    @mkdir -p $(object_output_path)
 
from  build / i deleted libjpeg-8.dll, SDL2.dll, SDL2_image.dll, simulator.exe because another error 
 
but the touchgfx::paint::flushLine(unsigned long*, int) i dont find it
 
Aziz
Associate II
CM7\Middlewares\ST\touchgfx\framework\include\touchgfx\hal\Paint.hpp:
  42   */
  43: void flushLine(uint32_t* addr, int sizebytes);
  44  

CM7\Middlewares\ST\touchgfx\framework\include\touchgfx\hal\PaintImpl.hpp:
  40  
  41: void flushLine(uint32_t* addr, int sizebytes)
  42  {
GaetanGodart
ST Employee

Hello @Aziz ,

 

If you created your project from TouchGFX Designer by selecting your board+display combo, then you can try to open the STM32CubeMX project (.ioc file) and click again on "Generate code" (make sure to have the right toolchain selected [STM32CubeIDE for TouchGFX Designer] and do NOT generate under root).

Can you tell us what board+display you are using?

 

If this comment solves your problem, I invite you to select it as "best answer".

 

Regards,

Gaetan Godart
Software engineer at ST (TouchGFX)
Aziz
Associate II

IMG-20240808-WA0002(1).jpg

IMG-20240808-WA0003.jpg

I open cubemx and i haven't access to it .Also the type of card selected isn't the mine my card is nucleo stm32h7a3ZITQ

We do not provide a TBS (TouchGFX Board Setup) for any of the 2 boards you mention above.

Please tell me what you did to end up with your error messages. I am missing crucial information to identify the issue and a solution to it.

 

Regards,

Gaetan Godart
Software engineer at ST (TouchGFX)
Aziz
Associate II

I did an interface on touchgfx then i generated the code after i simulated it the when i run this error appeared

''Program and Run Target
Generate
Done
Generate Assets
make -f simulator/gcc/Makefile assets -j8
Reading ./application.config
Reading ./target.config
Done
Post Generate
touchgfx update_project --project-file=simulator/msvs/Application.vcxproj
Done
Post Generate Target
touchgfx update_project
.cproject file: ../../STM32CubeIDE/CM7/.cproject
Writing STM32CubeIDE project file: ../../STM32CubeIDE/CM7/.project
Writing STM32CubeIDE project file: ../../STM32CubeIDE/CM7/.cproject
Done
Compile
make -f ../../gcc/Makefile clean && make -f ../../gcc/Makefile -j8
# make -C C:/TouchGFXProjects/MV_Display/gcc/ -f Makefile_cm4 clean
make -C C:/TouchGFXProjects/MV_Display/gcc/ -f Makefile_cm7 clean
make[1]: Entering directory 'C:/TouchGFXProjects/MV_Display/gcc'
/usr/bin/sh: -c: line 0: syntax error near unexpected token `('
/usr/bin/sh: -c: line 0: `test -e /c/Program Files (x86)/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/ExternalLoader/QSPI_STM32H747I-Riverdi-MICRON_V2.stldr && echo -n yes'
make[2]: Entering directory 'c:/TouchGFXProjects/MV_Display'
/usr/bin/sh: -c: line 0: syntax error near unexpected token `('
/usr/bin/sh: -c: line 0: `test -e /c/Program Files (x86)/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/ExternalLoader/QSPI_STM32H747I-Riverdi-MICRON_V2.stldr && echo -n yes'
Cleaning: Riverdi_70STM32H7
rm: cannot remove `CM7/TouchGFX/build/bin/libjpeg-8.dll': Permission denied
rm: cannot remove `CM7/TouchGFX/build/bin/SDL2.dll': Permission denied
rm: cannot remove `CM7/TouchGFX/build/bin/SDL2_image.dll': Permission denied
rm: cannot remove `CM7/TouchGFX/build/bin/simulator.exe': Permission denied
make[2]: *** [clean] Error 1
gcc/makefile_cm7:552: recipe for target 'clean' failed
make[2]: Leaving directory 'c:/TouchGFXProjects/MV_Display'
Makefile_cm7:51: recipe for target 'clean' failed
make[1]: *** [clean] Error 2
make[1]: Leaving directory 'C:/TouchGFXProjects/MV_Display/gcc'
make: *** [clean] Error 2
../../gcc/Makefile:10: recipe for target 'clean' failed
Failed
Failed
'

after i deleted  libjpeg-8.dll, SDL2.dll, SDL2_image.dll, simulator.exe and i didnt generate or simulate the code again i run target direct and the error message at first appeared 

Now i change the version of STM32CubeMX 6.12.0 to 6.5.0 and the IDE from 1.16 to 1.8.0 and i ll try it 

 

the display i use is Riverdi_70STM32H7 i have riverdi 7"

 

GaetanGodart
ST Employee

As a rule of thumb, always use the latest versions if you can. So for TouchGFX, STM32CubeMX, STM32CubeIDE, etc.

Since you use a Riverdi board, here are the steps to be able to flash your design on your board:

  1. Open TouchGFX Designer (hopefully the latest version [4.24.0])
  2. Click on "Create new" or "New"
  3. Select "By partners" (1) you can also write "Riverdi" in the search bar
  4. Select the board you are using. In your case the Riverdi_70 as you use 7 inches screen. (2)
  5. Make sure that your board reference is available for this TBS. (3)
  6. Finally, you can create a project. (4)

GaetanGodart_0-1723195216233.png

Then you can import the GUI you previously created by clicking on "Edit" => "Import" => "GUI".

If you have done those steps and you get the error messages mentioning flushline and DecompressorRGB, simply open your folder, open the STM32CubeMX file (.ioc) and click on "Generate code" (make sure to use the correct toolchain such as STM32CubeIDE for STM32CubeIDE or TouchGFX Designer).
Then you can flash again and the issue will be gone.

 

If this comment solves your problem, I invite you to select it as "best answer".

 

Regards,

 

Gaetan Godart
Software engineer at ST (TouchGFX)