2023-10-16 08:12 PM
I have created several projects in TouchGFX Designer v4.22.1 - each with a unique 'Application Name'. I'm using the STM32H747i-DISCO boards (dual-core MCU). When I import any of these into CubeIDE v1.13.2, they always show up with this type of structure in CubeIDE:
STM32H747I-DISCO (in STM32CubeIDE)
> Application
> Drivers
> STM32H747I-DISCO_CM4 (in CM4)
> STM32H747I-DISCO_CM7 (in CM7)
STM32H747I-DISCO.ioc
The problem is that CubeIDE will only allow ONE of these projects to be in its 'workspace' at any given time. The projects that were first created in CubeIDE don't have this issue.
Is there a way in TouchGFX to make it such that its projects import into CubeIDE with a unique name for each?
Solved! Go to Solution.
2023-10-17 01:22 PM
@Osman SOYKURT , thank you for your help on this. It took a LOT of effort, but I was able to change the Application name in seven files so that it imported into CubeIDE uniquely and properly. It also took some work in the CM4 and CM7 Run/Debug Configurations (as you hinted at), but this was relatively easy.
I hope that you and your team are able to update TouchGFX code someday.
Here are all of the changes that I found were necessary in order to build CM4 and CM7, and also to be able to download the code into the board. The .ioc and .launch filenames were changed, and all of the highlighted entries in all of the files were changed, too.
STM32747I-DISCO.ioc
ProjectManager.ProjectFileName=STM32H747I-DISCO.ioc
ProjectManager.ProjectName=STM32H747I-DISCO
STM32CubeIDE\.project
<name>STM32H747I-DISCO</name>.
<name>STM32H747I-DISCO.ioc</name>
<locationURI>PARENT-1-PROJECT_LOC/STM32H747I-DISCO.ioc</locationURI>
STM32CubeIDE\CM4\.project
<name>STM32H747I-DISCO_CM4</name>
STM32CubeIDE\CM4\.cproject
<builder buildPath="${workspace_loc:/STM32H747I-DISCO_CM4}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1420436034"
<builder buildPath="${workspace_loc:/STM32H747I-DISCO_CM4}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1977744108"
<project id="STM32H747I-DISCO_CM4.null.1074626412" name="STM32H747I-DISCO_CM4"/>
STM32CubeIDE\CM7\.project
<name>STM32H747I-DISCO_CM7</name>
STM32CubeIDE\CM7\.cproject
<listOptionValue builtIn="false" value="C:/git/stm32h747i-disco/STM32H747I-DISCO/CM7/Middlewares/ST/touchgfx/lib/core/cortex_m7/gcc"/>
<builder buildPath="${workspace_loc:/STM32H747I-DISCO_CM7}/Debug"
<builder buildPath="${workspace_loc:/STM32H747I-DISCO_CM7}/Release"
<project id="STM32H747I-DISCO_CM7.null.189274870" name="STM32H747I-DISCO_CM7"/>
STM32CubeIDE\CM7\STM32H747I-DISCO_CM7 Debug.launch
DISCO_CM7.elf","fProjectName":"STM32H747I-DISCO_CM7","fPerformBuild":true,"fDownload":true,"fLoadSymbols":true}]}"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug\STM32H747I-DISCO_CM7.elf"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="STM32H747I-DISCO_CM7"/>
<listEntry value="/STM32H747I-DISCO_CM7"/>
2023-10-17 02:44 AM
Hello @BobWalance ,
Thank you for your message. I'll discuss this issue with my colleagues.
As a workaround, if you open the .project file in an editor, you should be able to replace the name of your project.
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>YOUR_PROJECT_NAME</name>
<comment/>
<projects>
</projects>
...
...
You might also need to set the external loader in the Run/Debug Settings, to be able to run your project on target.
Hope it helps.
2023-10-17 01:22 PM
@Osman SOYKURT , thank you for your help on this. It took a LOT of effort, but I was able to change the Application name in seven files so that it imported into CubeIDE uniquely and properly. It also took some work in the CM4 and CM7 Run/Debug Configurations (as you hinted at), but this was relatively easy.
I hope that you and your team are able to update TouchGFX code someday.
Here are all of the changes that I found were necessary in order to build CM4 and CM7, and also to be able to download the code into the board. The .ioc and .launch filenames were changed, and all of the highlighted entries in all of the files were changed, too.
STM32747I-DISCO.ioc
ProjectManager.ProjectFileName=STM32H747I-DISCO.ioc
ProjectManager.ProjectName=STM32H747I-DISCO
STM32CubeIDE\.project
<name>STM32H747I-DISCO</name>.
<name>STM32H747I-DISCO.ioc</name>
<locationURI>PARENT-1-PROJECT_LOC/STM32H747I-DISCO.ioc</locationURI>
STM32CubeIDE\CM4\.project
<name>STM32H747I-DISCO_CM4</name>
STM32CubeIDE\CM4\.cproject
<builder buildPath="${workspace_loc:/STM32H747I-DISCO_CM4}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1420436034"
<builder buildPath="${workspace_loc:/STM32H747I-DISCO_CM4}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1977744108"
<project id="STM32H747I-DISCO_CM4.null.1074626412" name="STM32H747I-DISCO_CM4"/>
STM32CubeIDE\CM7\.project
<name>STM32H747I-DISCO_CM7</name>
STM32CubeIDE\CM7\.cproject
<listOptionValue builtIn="false" value="C:/git/stm32h747i-disco/STM32H747I-DISCO/CM7/Middlewares/ST/touchgfx/lib/core/cortex_m7/gcc"/>
<builder buildPath="${workspace_loc:/STM32H747I-DISCO_CM7}/Debug"
<builder buildPath="${workspace_loc:/STM32H747I-DISCO_CM7}/Release"
<project id="STM32H747I-DISCO_CM7.null.189274870" name="STM32H747I-DISCO_CM7"/>
STM32CubeIDE\CM7\STM32H747I-DISCO_CM7 Debug.launch
DISCO_CM7.elf","fProjectName":"STM32H747I-DISCO_CM7","fPerformBuild":true,"fDownload":true,"fLoadSymbols":true}]}"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug\STM32H747I-DISCO_CM7.elf"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="STM32H747I-DISCO_CM7"/>
<listEntry value="/STM32H747I-DISCO_CM7"/>
2023-10-18 07:16 AM
Hello @BobWalance ,
Thank you for your investigation, it will help us to treat this issue.
I'll invite you to select your answer as "Solution" so people on community could easily find and reproduce your workaround until we release a patch for it.
Thanks.
2025-02-19 12:57 PM - edited 2025-02-19 12:59 PM
Hi,
I think the problem is that at the generation of the target code, the "name of the target board" is used for "STM32CubeIDE project name" and not the "project name of the touchGFX project".
You should generate the STM32CubeIDE project (and others like simulator) with the "project of the touchGFX project" and if you need to distinguish sub directories in the touchGFX project, you could use:
"project name of the touchGFX project"_"name of the target board".
BR
Paul
PS: As you see from the date of my post, the problem is still NOT solved (TouchGFX Designer 4.24.2)...
2025-02-19 01:14 PM
Hi
another much simpler workaround for your customers could be (please confirm if it is possible):
If I want to have some (e.g.: three) different projects on STM32CubeIDE on same target board generated by Designer, the following functionality is needed:
Thus, I create three different setups and than create one touchGFX project using the different setups.
BR
Paul