Skip to main content
Associate
April 30, 2026
Question

STM32H563ZIT6 external loader fail

  • April 30, 2026
  • 5 replies
  • 193 views

I'm currently developing an external loader on STM32H563ZIT6 development board.

I'm facing an issue on programming with cube programmer in the image below

MicheleMalaspina_0-1777545872858.png

The problem I think might be linked to interrupt handler of systick.

 I've attached the Loader_src.c file where I had developed the functions used by Cube Programmer; also attached the linker used.

 

The low level functions linked to XSPI communication are properly working, because I had tested in debug erasing and writing sectors.

 

I need help to figure out the problem. 

5 replies

Technical Moderator
April 30, 2026

Hello @MicheleMalaspina 

Please refer to the article below to implement your external flash loader. 

How to implement and use your own external flash l... - STMicroelectronics Community

"To give better visibility on the answered topics, please click on ""Accept as Solution"" on the reply which solved your issue or answered your question.Saket_Om"
Associate
April 30, 2026

Thank you so much @Saket_Om for the guide, I've already copied the git hub repository linked, but the problem is stll present. I had put some debug pins in Init function and it seems that Init is not called. Could you please give me some advices on where to check? Linker error? 

MPast.1
Senior
May 1, 2026

Hi all,

I have the same problem using NUCLEO-H563ZI .

In debug mode, all functions control external memory without any problems.

In release mode, doesn't work nothing.

I inserted some LEDs to follow  the startup process but it seems doesn't running.

(obviously STM32Cubeprogrammer give me errors because is not able to connect to External loader)

I share also my simple external Loader project source,

I hope someone can help me!

 

best regards.

Associate
May 4, 2026

I've solved through these changes: 

I've added this code in .ld file :

 

KEEP (*(.text.Init))

KEEP (*(.text.Write))

KEEP (*(.text.Verify))

KEEP (*(.text.Checksum))

KEEP (*(.text.SectorErase))

KEEP (*(.text.MassErase))

 

I've removed the flag to discard unused sections in project properties.

 

It seems to work properly with STM32 CUBE programmer, but when I add it in my main project to load data

for TOuchGfx it doesn't erase external sector.

MPast.1
Senior
May 8, 2026

HI @MicheleMalaspina , did you find a solution?