cancel
Showing results for 
Search instead for 
Did you mean: 

error: 'OSWrappers' has not been declared

lsoon
Associate

Hi everyone,

STM32CubeIDE 1.3.0

32F746-Dicovery

In the above environment, I chose TouchGFX as an additional software and added graphics.

And I created a simple GUI for testing by opening the file in the created TouchGFX directory.

And when compiling, the following error appeared.

../TouchGFX/target/generated/TouchGFXGeneratedHAL.cpp:35:32: error: 'OSWrappers' has not been declared

   registerTaskDelayFunction(&OSWrappers::taskDelay);

                ^~~~~~~~~~

make: *** [TouchGFX/target/generated/subdir.mk:28: TouchGFX/target/generated/TouchGFXGeneratedHAL.o] Error 1

make: *** Waiting for unfinished jobs....

​Is there any way to solve it?

Thank you.

12 REPLIES 12

Finished my tests. .ioc file definitely says STM32CubeIDE as expected - Great!

ProjectManager.PreviousToolchain=
ProjectManager.ProjectBuild=false
ProjectManager.ProjectFileName=746gtest.ioc
ProjectManager.ProjectName=746gtest
ProjectManager.StackSize=0x400
ProjectManager.TargetToolchain=STM32CubeIDE
ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=true
ProjectManager.functionlistsort=
  • Add TouchGFX from Additional Software in CubeMX and generate code. Failures in compilation due to missing TouchGFX bootstrap.
  • Open the .part file in TouchGFX designer and generate code. Here's part of what happened to the .cproject file (include paths).
✔ ~/STM32CubeIDE/workspace/746gtest2 [master L|✚ 1…15]
21:47 $ git diff
...
+                  <listOptionValue builtIn="false" value="../TouchGFX/target/generated"/>                  
+                  <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>                      
+                  <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>  
+                  <listOptionValue builtIn="false" value="../Core/Inc"/>                                   
+                  <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>           
+                  <listOptionValue builtIn="false" value="../TouchGFX/App"/>                               
+                  <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>    
+                  <listOptionValue builtIn="false" value="../TouchGFX/target"/>                            
+                  <listOptionValue builtIn="false" value="../Middlewares/ST/touchgfx/framework/include"/>  
+                  <listOptionValue builtIn="false" value="../TouchGFX/generated/fonts/include"/>           
+                  <listOptionValue builtIn="false" value="../TouchGFX/generated/gui_generated/include"/>   
+                  <listOptionValue builtIn="false" value="../TouchGFX/generated/images/include"/>          
+                  <listOptionValue builtIn="false" value="../TouchGFX/generated/texts/include"/>           
+                  <listOptionValue builtIn="false" value="../TouchGFX/gui/include"/>

Compiling OSWrappers.cpp without issues - Remember to press F5 on your CubeIDE project to reload changes to .cproject file! Classic eclipse. Once you do, TouchGFX will appear in the "Middlewares" folder.

make -j8 all 
arm-none-eabi-g++ "../TouchGFX/target/generated/OSWrappers.cpp" -mcpu=cortex-m7 -std=gnu++14 -g3 ....
arm-none-eabi-g++ "../TouchGFX/target/generated/TouchGFXConfiguration.cpp" -mcpu=cortex-m7 -std=gnu++14 ...
arm-none-eabi-g++ "../TouchGFX/target/generated/TouchGFXGeneratedHAL.cpp" -
...

And finally we're done:

Finished building target: 746gtest.elf
 
arm-none-eabi-size   746gtest.elf 
arm-none-eabi-objdump -h -S  746gtest.elf  > "746gtest.list"
arm-none-eabi-objcopy  -O binary  746gtest.elf  "746gtest.bin"
   text	   data	    bss	    dec	    hex	filename
  94822	   2316	   3248	 100386	  18822	746gtest.elf
Finished building: default.size.stdout
 
Finished building: 746gtest.bin
 
Finished building: 746gtest.list
 
 
22:11:55 Build Finished. 0 errors, 0 warnings. (took 14s.423ms)

 Going to bed so i won't see answers until tomorrow. Good night! 😉

/Martin

Your method worked like a charm !

Still nothing on the screen at that stage but first hurdle passed !

Thank you so much PMich.1

i am sorry for the delay , i was concentrated some other projects during this time,

i found a video on youtube and followed those steps

https://www.youtube.com/watch?v=bCppZf8FKYg

this is the link to the video