2020-08-05 10:47 AM
When creating a project in TouchGFX 4.14.0 for the STM32H7B3i-DK board, the .ioc reference in the STM32CubeIDE .project file is not getting added thus the file does not get imported when opening the TouchGFX project in STM32CubeIDE from the .cproject file.
If I run through the same process using another board such as the STM32F769i-DISCO, the .project file includes the .ioc reference.
Ex:
STM32H7B3i-DK TouchGFX .project
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>STM32H7B3I_DISCO</name>
<comment/>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.st.stm32cube.ide.mcu.MCUProjectNature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAProjectNature</nature>
<nature>com.st.stm32cube.ide.mcu.MCUNonUnderRootProjectNature</nature>
<nature>com.st.stm32cube.ide.mcu.MCUCubeProjectNature</nature>
<nature>com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature</nature>
<nature>com.st.stm32cube.ide.mcu.MCUEndUserDisabledTrustZoneProjectNature</nature>
<nature>com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature</nature>
<nature>com.st.stm32cube.ide.mcu.MCURootProjectNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
<linkedResources>
<link>
<name>Application/User/freertos.c</name>
<type>1</type>
<locationURI>$%7BPARENT-1-PROJECT_LOC%7D/Core/Src/freertos.c</locationURI>
</link>
<link>
<name>Application/User/main.c</name>
<type>1</type>
<locationURI>$%7BPARENT-1-PROJECT_LOC%7D/Core/Src/main.c</locationURI>
</link>
<link>
<name>Application/User/stm32h7xx_hal_msp.c</name>
<type>1</type>
<locationURI>$%7BPARENT-1-PROJECT_LOC%7D/Core/Src/stm32h7xx_hal_msp.c</locationURI>
</link>
STM32F769i-DISCO .project
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>STM32F769I_DISCO</name>
<comment/>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.st.stm32cube.ide.mcu.MCUProjectNature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAProjectNature</nature>
<nature>com.st.stm32cube.ide.mcu.MCUNonUnderRootProjectNature</nature>
<nature>com.st.stm32cube.ide.mcu.MCUCubeProjectNature</nature>
<nature>com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature</nature>
<nature>com.st.stm32cube.ide.mcu.MCUEndUserDisabledTrustZoneProjectNature</nature>
<nature>com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature</nature>
<nature>com.st.stm32cube.ide.mcu.MCURootProjectNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
<linkedResources>
<link>
<name>STM32F769I_DISCO.ioc</name>
<type>1</type>
<locationURI>$%7BPARENT-1-PROJECT_LOC%7D/STM32F769I_DISCO.ioc</locationURI>
</link>
<link>
<name>Application/User/freertos.c</name>
<type>1</type>
<locationURI>$%7BPARENT-1-PROJECT_LOC%7D/Core/Src/freertos.c</locationURI>
</link>
<link>
<name>Application/User/main.c</name>
<type>1</type>
<locationURI>$%7BPARENT-1-PROJECT_LOC%7D/Core/Src/main.c</locationURI>
</link>
<link>
<name>Application/User/stm32f7xx_hal_msp.c</name>
<type>1</type>
<locationURI>$%7BPARENT-1-PROJECT_LOC%7D/Core/Src/stm32f7xx_hal_msp.c</locationURI>
</link>
Also, I have TouchGFX 4.13.0 from a previous install so when running the Generate Code from the Designer window, the log references the .ioc is getting updating to 4.14.0 and a backup is created. This happens for both the F769i and H7B3i boards.
Post Generate
touchgfx update_project --project-file=simulator/msvs/Application.vcxproj
Done
Post Generate Target
touchgfx update_project --project-file=../STM32H7B3I-DK.ioc --platform=m7
TouchGFX Generator 4.13.0 found
Creating backup of ../STM32H7B3I-DK.ioc as ../backup_STM32H7B3I-DK.ioc
Performing upgrade 4.13.0 -> 4.14.0 ... OK
Done
2020-08-06 07:13 AM
Hello,
The Application Templates have been made with 4.13 not 4.14 so maybe there's something happening on that part. We are currently trying to update all the ATs to TouchGFX 4.14.
If you re-generate from CubeMX and then re-generate from TouchGFX Designer, does it fix the issue ?
/Alexandre
2020-08-06 09:45 PM
So, I created another project in TouchGFX 4.14.0 for the STM32H7B3i-DK board as I did previously and the result was the same; no .ioc reference in the .project file.
I then opened the TouchGFX generated .ioc in CubeMX 6.0.0 and received the following warning which is the same as I see in STM32CubeIDE.
This states:
"The project has been created with CubeMX version 5.5.0"
Also there is a message stating:
"The Firmware Package (STM32Code FW_H7 V1.6.0) required by the Project is not the latest ..."
I could continue or Migrate which would put the FW at V1.8.0. I choose to Migrate.
Then when I went to generate code, there was a warning stating the Clock IP was not configured. There was an option to run the automatic issues solver so I did that and was able to generate.
After this, there was no change in the .project file, in that there still no ref to the .ioc.
I then opened the project in TouchGFX again and again ran Generate Code and there still is no change to the .project file; no ref to the .ioc.
2020-08-06 10:01 PM
Oh, yeah, after performing this, opening the STM32CubeIDE .cproject does not import the project into STM32CubeIDE.
2020-08-06 11:22 PM
Loos like I need to create the TouchGFX project in the default folder on the C: driver rather than on another driver where I was creating it.
One more thing, the .ioc file that is getting created is labeled "STM32H7B3I-DK" however when importing project into STM32 after adding the .ioc entry into the .project file, opening the .ioc file results in an error where it states it is looking for a "STM32H7B3I_DISCO.ioc" file instead. If I change the reference I added in the .project file to this and change the name of the file, it does not cause an issue.
2020-08-07 12:24 AM
Hello,
I tried to open and build the STM32H7B3-DK Application Template and it worked.
Here are the steps I did:
/Alexandre
2020-08-07 12:55 AM
Yeah, that works but did it include the .ioc file? Also, did your .project file include a reference to the .ioc file?
2020-08-07 04:57 PM
Okay, so I solved the issue where the code no longer works after migrating to CubeMX 6.0.0.
I ended up removing TouchGFX 4.14.0 and reinstalled it and let it install in the default C: location although this made no difference.
Then, I created a new Project in TouchGFX like I did previously for the STM32H7B3i-DK and verified the project could be imported into CubeIDE via the .cproject file and loaded on the board after enabling the External Loader in the Debug Config.
NOTE: The .project still did not include the ref to the .ioc file.
Then I added the definition for the .ioc file in the .project file and changed the name of the .ioc file from STM32H7B3I-DK to STM32H7B3I-DISCO which the config seems to want.
Then I imported the project into CubeIDE via the .cproject file and verified the .ioc file was included in the project and then double clicked it to kick off CubeMX. I selected to Migrate the project which again resulted in the Clock IP warning when attempting to generate the code.
I then went through the automatic clock issues solver which enabled the clocks and allowed the code to generate.
After this, I cleaned the project and rebuilt it in CubeIDE and then attempted to load it on the board.
This resulted in just a white screen and not the AnimatedImage example the project was created with.
I then opened the project in TouchGFX again and ran the Generate Code again and then import it again in CubeIde,
This made no difference.
I then created another identical project for the STM32H7B3i-DK which I used to compare the code between the projects.
This is what I found.
In Migrated project, in MX_I2C4_Init, I made the following changes to match the working non Migrated project:
//hi2c4.Init.Timing = 0x00807EBC; // JM Changed
hi2c4.Init.Timing = 0x30808BD0;
In MX_LTDC_Init, pLayerCfg1 was enabled which I believe for this board it should not have been so I commented out the def and code in the method
LTDC_LayerCfgTypeDef pLayerCfg = {0};
//LTDC_LayerCfgTypeDef pLayerCfg1 = {0}; // JM Changed
In MX_GPIO_Init, I changed the IRQ to 5 to match the working config:
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI2_IRQn, 5, 0); // JM set IRQ to 5 to match good config
HAL_NVIC_EnableIRQ(EXTI2_IRQn);
For SystemClock_Config, I just copied all code from the working example to the non working project since there were a number of differences.
After all of this, the project worked again as expected. So, for some reason, with the migrate in CubeMX, these values were changed from the original configuration which seemed to caused havoc on the example.
But, still, the reference to the .ioc file is not being added to the .project file and requires a manual edit to get it to be included.
2020-08-10 03:14 AM
Hello,
Thank you for those information, we will try to fix this with the CubeMX team.
/Alexandre
2020-08-10 08:06 AM
Hello,
For the Clock Configuration issue, change the voltage scale to voltage scale 0 (it should be voltage scale 2 right now) in the RCC tab, section "parameter settings". This will remove the error in the Clock Configuration. Also, as an advice, try to never use the clock issues solver. This will changed all values of clocks which will lead to a high probability of the app not running.
Hope this will help.
/Alexandre