cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H747-DISCO with TouchGFX 4.14.0

EnricoP
Associate III

Good morning,

I'm using a discovery board STM32H747-DISCO.

Why, Touchgfx don't generate the project .ioc, to import in CUBE IDE?

Instead, if I select another board (for example STM32F7508-DK) , when generate code, the compiler buil also .ioc file.

I have also installed the last version 4.14.0 of TouchGFX, but the problem persist.

Thank you

1 ACCEPTED SOLUTION

Accepted Solutions
Romain DIELEMAN
ST Employee

Hi,

TouchGFX 4.17 is now live along a new release of the TouchGFX Board Setup (new name for "Application template") for the STM32H747-disco board based on STM32CubeMX and with a STM32CubeIDE project.

/Romain

View solution in original post

20 REPLIES 20
HPham.1590
Senior

Hello,

I checked with my TouchGFX and meet the same issue, this problem may come from TouchGFX

Hieu

Many thanks HPha.1590 for your confirmation!

Now, I would like to have an official response from the TouchGFX staff for the resolution of the problem.

Alexandre RENOUX
Principal

Hello,

If you look closely when choosing an Application Template you can see a version. For H747-DISCO, the version is 1.0.0 as you can see highlighted on the picture below.

0693W000003PMeGQAW.png

For an Application Template to be with an .ioc file, meaning to be compatible with TouchGFX Generator inside CubeMX, this version must be superior or equal to 3.0.0. Therefore, it is normal that a version 1.0.0 has no .ioc file.

The reason why there is no 3.0.0 version for the H747 is because CubeMX does not yet support the dual core of this MCU, therefore it is not possible to configure it in CubeMX. I do not know the schedule for this CubeMX update but it is to be done in the foreseeable future.

/Alexandre

HBCH
Associate II

Hello.

I wrote in this thread in the past. I finally got the 'mixup' between TouchGFX- and CubeIDE/MX generated applications for the H747 to run. Its not an easy task but it is possible, although in my opinion its nothing a beginner should start with :-).

  • I stripped the HAL-Layer out of TouchGFX-designer generated application. I use the MX-generated HAL.
  • I generated a CubeMX-application for the STM32H747xi without board-support.
  • I ported the remaining part of the TouchGFX-app to the CubeIDE/MX-project.
  • The board-support I took from the TouchGFX-app because the one implemented by MX wasn't usable for me.
  • Take care about the handles for the hardware-access. They have to be defined globally (and only once!) because they are also used in interrupts.
  • You need to port also the TouchGFX-library which you can find in Middlewares/ST/TouchGFX/touchgfx/lib/core/. You need the gcc-variant when you are using CubeIDE and the standard-compiler/linker. I used float-abi-hard despite of the recommendation in the documentation using the soft-float-variant. It works flawlessly but you also have to adjust your FreeRTOS to this (enable hardware-float-support for FreeRTOS in MX).
  • The part which needed the most time was rewriting the LCD-init. I stripped this also from TouchGFX-app.
  • The MPU-settings I took from the source-code of the TouchGFX-app and ported it to MX. The same I did with the settings for the external memories (QSPI and FMC/SDRAM). I also implemented the SystemClockConfig in MX according to the settings in the TouchGFX-app.
  • Very important: don't forget to enable the CRC-unit in CubeMX. TouchGFX checks if this unit is available at startup. If its not present, the application aborts with a hard-fault.

Regards

Hp.

Hello Hp,

Thank you very much for this feedback. This could help others =)

/Alexandre

Hello Alexandre.

Thanks and I hope this issue will soon be solved with a proper generator for the H747 :-).

Another issue, virtually brand new, I've discovered yesterday: Don't forget to disable / enable the caches for data and instructions (SCB_EnableDCache();

 SCB_EnableICache();). Disable the caches as long as you are setting up your hardware and then enable it befor you call touchgfx::HAL::getInstance(). TouchGFX is assuming that these caches are enabled. If they aren't, the application can crash. The behaviour is somewhat random, makes it hard to find.

Regards

Hp.

Hi HB,

Thanks a lot for your feedback.

But, for a beginner like me, it is a very difficult task.

It would be wonderful to have a simple demo project to use as a template in CubeIDE.

I also hope that this problem will be solved soon with an automatic generator for the H747,

so I can better evaluate my board.

/Enrico

Hello Enrico.

Yes you are right; its not a task for a beginner. But to be fair: the STM32H747 is a complex piece of hardware with myriads of possibilities and enormous computing-power. In the 90s we would have been more than happy when we had this amount of power and memory in our desktop-PCs (now you may guess my age :) ). As a beginner I would select another less complex chip. Maybe something with a CortexM3- or even a CortexM0- core.

Regards

HP.

Hello HB,

I think I'm not much younger than you. my first pc was an 80286 ...

I've only ever developed Windows Desktop applications, but now I wanted to start experimenting with ST MCU.

After an analysis I chose the STM32H747 because it has a lot of potential, but then I realized that this card is

relatively young and not yet implemented in Cube IDE.

I just have to wait for an automatic generator for H747. :(

/Enrico