4.7k views
in System Integration by
With the STM32 ST-Link Utility I can Program my STM32F746NG with multiple programs created with STM CubeMX.

When I try to do the sam with an Embedded Wizard created application I get the error message "No elf loader found for this operation." when programming.

What's the reason? How to solve this?

1 Answer

0 votes
by
I asume, that you have to select an appropriate External Loader.
Using our GCC Template project, some Read Only  parts are located to the external QSPI FLASH on default (can be disabled in makefile).

To flash these parts,  an appropriate External Loader is needed.

Alternatively, flashing of the internal and external FLASH can be done via command line with 'make install' on the BuildEnvironment GCC console.
by

I turned off QSPI_FLASH in the Makefile and flashed the bin file with ST-Link (in this case no hex file is created) to the device, This causes even the hello world application to crash, when starting:

Initialize Display...                        [OK]
Initialize Touch Driver...                   [OK]
Initialize Memory Manager...                 [OK]
MemoryPool at address 0xC00FF000 size 0x00701000
Initialize Graphics Engine...                [OK]
Create Embedded Wizard Root Object...        [OK]
Create Embedded Wizard Viewport...           [OK]
System halted! [MemManage_Handler]

Regarding the external loader:

  • Is there any howto or support to build one?
  • X-CUBE-EXTBOOT may be such a external loader. But despite that the word "easily" is used in each second sentence, I don't assume, that it is as easy.

How can I flash using make? There is only one build target in the Makefile, which causes this error (because I use an ST-Link v2 adapter for flashing and no onboard st-link):

STM32 ST-LINK CLI v3.1.0.0
STM32 ST-LINK Command Line Interface

No ST-LINK detected
Unable to connect to ST-LINK!
make: *** [install] Error 2

by
Our STM32F746-Discovery BuildEnvironment is prepared for the STM32F746 Discovery Board.
The external SDRAM (beginning from 0xC000.0000) is used for framebuffers and memory pool.

Do I understand right, that you are using another STM32F746 target platform than STM32F746 Discovery Board?

In this case, you have to do some adaptations according to your memory layout.

Concerning STM32 ST-LINK CLI:
Please note, that your target must not be connected to the GUI version of the
STM32 ST-Link Utility while executing 'make install'
by
OK, flashing is working using "make install" as long as QSPI_FLASH is off. I didn't realize that the GUI is blocking the device.

Yes, I'm trying to port my application from the DISCO board to the customer board.

I suppose, flashing with QSPI_FLASH is also failing, because of the different memory layout.

How / where can I adapt it?
by
For GCC (make) in file: \Template\Project\GCC\stm32f7_flash.ld
by

Back to my previous question:

Regarding the external loader:

  • Is there any howto or support to build one?
  • X-CUBE-EXTBOOT may be such a external loader. But despite that the word "easily" is used in each second sentence, I don't assume, that it is as easy.
by
I'm sorry, I have no experiance with building external loaders.
by
The external SDRAM (beginning from 0xC000.0000) is not defined in the linker file. Where is it defined?
by
It is defined at:

STM32Cube_FW_F7\Drivers\BSP\STM32746G-Discovery\stm32746g_discovery_sdram.h

Embedded Wizard Website | Privacy Policy | Imprint

...