2025-09-06 11:47 AM - last edited on 2025-09-24 2:10 AM by Andrew Neil
Hello I have a problem compiling TouchGFX for Keil. My procedure:
1/ Run TouchGFX Designer 4.25
2/ Create New project
3/ Go to tab – By Partners – select board Riverdi STM32 121STM32H7
4/ Click to Create
5/ Add Button ( for example)
6/ Click Generate CODE
7/ Go to project Folder and open ioc file Riverdi_121STM32H7_1_6.ioc STM32CubeMx v6.5
8/ Go to tab Middleware and Software pack Select FreeRTOS M7 Select tab Advanced settings USE_NEWLIB_REENTRAND ← disable !!! ( for keil it must be turned off )
9/ Go to project manager Switch toolchain IDE to MDK keil
10/ Save and Generate CODE
11/ After generate code by STM32CubeMx I'm going back to Touchgfx Designer and click generate code again TouchGfx generate code for keil.
12/ Run project in Keil
13/ Go to Option for target Go to tab OUTPUT
and uncheck Browse information
14/ Project build target
15 / Keil linking problem Not enough information to list image symbols.
Not enough information to list load addresses in the image map.
Finished: 2 information, 0 warning and 81 error messages.
"Riverdi_121STM32H7_1_6_CM7\Riverdi_121STM32H7_1_6_CM7.axf" - 81 Error(s), 0 Warning(s).
Target not created.
Build Time Elapsed: 00:00:14
Can anyone please solve the problem with compiling this Riverdi display for KEIL? Please try to compile a simple project for Riverdi STM32H7 display in MDK KEIL.
Thanks
2025-10-08 6:05 AM
Hello @mcumake ,
Could you try to flash using STM32CubeProgrammer? The flash loader (.stldr) is inside the gcc folder of the project. You can copy that file to the External loader folder of your STM32CubeProgrammer (by default C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\ExternalLoader) and then use it for flashing your board.
2025-10-08 8:01 AM
Hex compiled using CUBE IDE
.. flash using CUBEIDE ..OK
.. flash using CubeProgramer ..OK
Hex compiled using KEIL
.. flash using Keil ..failed
.. flash using CubeProgramer ..OK
but HEX does not run (dark screen on Riverdi)
2025-10-09 12:52 AM
Ok, we're progressing :)
Now I think it would be good to try debugging. And you can use STM32CubeIDE for that since you said you are able to flash your binary using it directly.
2025-10-09 1:45 AM
Hi.
A better way would be to enable programming - debugging directly in keil.
I found this link.
https://www.keil.com/appnotes/files/apnt_333.pdf
Could someone more experienced create an FLM file for programming external FLASH on the RIVERDI board?
Thanks.
2025-10-09 2:42 AM
Yes I agree, my suggestion was to try to run on the board a binary first, and then focus on the other issues.
2025-10-09 4:14 AM
I have two demo projects.
The first demo project is created and compiled using CUBEIDE. This HEX uploaded using CubeProgramer works.
The second demo project is created using KEIL. The HEX uploaded using CubeProgramer does not work. (dark screen)
Could it be a wrong address setting or processor startup?
It is difficult to find a problem without a debugger.
I'll try a few more tests.
2025-10-09 5:48 AM
I found some external loader for Riverdi memory.
https://github.com/cturvey/stm32extldr/blob/main/h7_mt25ql512a/README.md
I'm going to try it.
2025-10-09 7:58 AM
I tried a new FLM file for Riverdi but the process failed.
What is the correct setting for RAM ALGORITHM?
2025-10-10 7:44 AM
2025-10-14 2:55 AM
Ok, so complaining here about your code generated to be placed into 0x24000000 which is RAM. You need to check your Target setting for FLASH and RAM, ie the scatter file which is the equivalent to GNU Linker Script.
The .FLM is providing an Algorithm for the 0x90000000 address space, which is where the QSPI memory is situated.