Skip to main content
Senior
January 7, 2025
Question

Program update over USB

  • January 7, 2025
  • 5 replies
  • 3085 views

Hello,

I was able to update F429 using boot-0 and CubeProg tool via USB. 

But requirement was to update without boot-0 pin. 

Please suggest alternatives for update from USB.

Also wanted to know: 

I tried changing boot-0 to do DFU, using SW and HW reset but didn't work. Power cycle was required. Wanted to know does SW/ HW reset work?

This topic has been closed for replies.

5 replies

TDK
January 7, 2025

You can jump to the bootloader in software on demand to perform update over USB. BOOT0 is only sampled when NRST goes high after a reset. Doesn't matter what happens to the pin after that.

"If you feel a post has answered your question, please click ""Accept as Solution""."
GauravKAuthor
Senior
January 7, 2025

Thank you @TDK 

I wanted to know:

any steps to follow for getting into bootloader for update from USB while application is running?

Is USB FS configured as DFU sufficient or any other setting required?

TDK
January 7, 2025
"If you feel a post has answered your question, please click ""Accept as Solution""."
GauravKAuthor
Senior
January 8, 2025

Hello @TDK , Thanks for providing information.

I tried this by changing device to F4. But there is hard fault on jump. 

 

Then looking at the web further changes I found was:

SYSCFG->MEMRMP = 1; 

I was able to get in DFU.

Also I saw changes people have:

using  for (i = 0; i < sizeof(NVIC->ICER) / sizeof(NVIC->ICER[0]); i++) for clearing interrupts

SysTick->LOAD = 0;
SysTick->VAL = 0;

Please can you validate the same, and suggest of further changes required.

Pavel A.
January 7, 2025

If ST is going to support jump to the "system" bootloader from user software - can they support selection of the interface for the bootloader?

This will let the user to reliably activate the USB interface without touching other things, as the bootloader would do when left to its own devices. How this can be done: Define several entry points or pass parameter(s) to a single entry point.

@STOne-32