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-14 7:11 AM
Hi
Thanks for the info.
Current Debugger and Target settings are
LR_IROM1 0x08000000 0x00100000 { ; load region for FLASH (1MB)
ER_IROM1 0x08000000 0x00100000 { ; execution region for FLASH
*.o (RESET, +First) ; Vector table
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
.ANY (.text*)
.ANY (.rodata*)
.ANY (.ARM.extab*)
.ANY (.ARM.exidx*)
.ANY (.init_array*)
.ANY (.fini_array*)
.ANY (.preinit_array*)
}
}
LR_RAM_D1 0x24000000 0x00080000 { ; RAM_D1 (512K)
ER_RAM_D1 0x24000000 0x00080000 {
.ANY (+RW +ZI)
.ANY (.data*)
.ANY (.bss*)
.ANY (.RamFunc*)
.ANY (.RamFunc*)
.ANY (.bss)
.ANY (COMMON)
.ANY (._user_heap_stack)
}
}
LR_RAM_D2 0x30000000 0x00048000 { ; RAM_D2 (288K)
ER_RAM_D2 0x30000000 0x00048000 {
.ANY (.RxDecripSection)
.ANY (.TxDecripSection)
.ANY (.Rx_PoolSection)
}
}
LR_QUADSPI 0x90000000 0x04000000 { ; QUADSPI (64MB)
ER_QUADSPI 0x90000000 0x04000000 {
.ANY (ExtFlashSection)
.ANY (ExtFlashSection.*)
.ANY (.gnu.linkonce.r.*)
}
}
LR_SDRAM 0xD0000000 0x005DC000 { ; SDRAM (6000K)
ER_SDRAM 0xD0000000 0x005DC000 {
.ANY (TouchGFX_Framebuffer)
.ANY (TouchGFX_Framebuffer.*)
.ANY (.gnu.linkonce.r.*)
}
}
LR_SDRAM2 0xD05DC000 0x00224000 { ; SDRAM2 (2192K)
ER_SDRAM2 0xD05DC000 0x00224000 {
.ANY (Video_RGB_Buffer)
.ANY (Video_RGB_Buffer.*)
.ANY (.gnu.linkonce.r.*)
}
}
2025-11-17 12:30 AM
Hello @mcumake , any progress with your issue?
2025-11-20 8:59 AM
Hi Osman
NO progress.
The code generated by CUBEMX and TouchGfx for MDK ARM cannot be compiled.
The generated code contains many errors and the compiler cannot compile or link it.
There is also a problem with programming (debugging)
A functional external loader is missing.
The Riverdi board uses an external QSPI flash.
There are many problems
so the conclusion is .. not yet usable for MDK-ARM
2025-11-21 1:23 AM
I tried to implement all the information from
https://support.touchgfx.com/docs/development/scenarios/converting-keil5-project-to-keil6
and from
https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/when-using-arm-v6-compiler-the-touchgfx-program-cannot-run/td-p/846333
I uploaded the HEX compiled with MDK using cubeprogrammer and an external loader.
The program probably doesn't run. The screen is black.
It would be necessary to create an external FLM loader for the riverdi board.
2025-11-22 9:09 AM
Hi.
I found one issue. The first demo project was on a Riverdi board 12". I used cubeide.
Now I'm testing on a Riverdi board 10".
the problem was here
I have a HW version of the board rev1.5 and it requires TBS version 3.2
I used TBS 4.1 in the test and the result was BLANK SCREEN (CubeIde MDK)
When using the correct TBS for the given HW version of the board, compilation using MDK ARM currently works.
I upload the current HEX generated by MDK using CUBEPROGRAMER.
It is still necessary to make an external FLM loader.