cancel
Showing results for 
Search instead for 
Did you mean: 

Riverdi 121STM32H7 linking problem with Keil

mcumake
Associate II

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
riverdi.jpg
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
riverdi3.jpg
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
riverdi4.jpg
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

20 REPLIES 20
Osman SOYKURT
ST Employee

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.

OsmanSOYKURT_0-1759928647451.png

 

Osman SOYKURT
ST Software Developer | TouchGFX

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)

Osman SOYKURT
ST Employee

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.

Osman SOYKURT
ST Software Developer | TouchGFX

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.

Osman SOYKURT
ST Employee

Yes I agree, my suggestion was to try to run on the board a binary first, and then focus on the other issues.

Osman SOYKURT
ST Software Developer | TouchGFX

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.

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. 

 

I tried a new FLM file for Riverdi but the process failed.

nexttest.pngnexttest2.png

 

What is the correct setting for RAM ALGORITHM?

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.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..