cancel
Showing results for 
Search instead for 
Did you mean: 

How to program individual STM32 devices in a JTAG daisy-chain and prevent auto-execution after programming

y_yamamoto
Associate II

I would like to ask how to program multiple STM32 MCUs connected in a JTAG daisy chain individually, and how to disable automatic program execution after flashing.

 

I would like to achive the following goals simultaneously:

  • Program each STM32 MCU individually while connected in a daisy-chain configuration.
  • Prevent the program from automatically running after the flashing process.

In my current setup, I have successfully programmed two STM32L476RG devices individually through a J-Link Base Compact using STM32CubeIDE by configuring the Debug Configuration settings (see the attached image for details).

However, after programing, the application code starts running automatically.

image2.png

 

When using STM32CubeProgrammer, unchecking the "Run after programming" option successfully disables the automatic execution.

However, I could not find a way to specify individual targets (e.g., by IR length or other parameters) for daisy-chained devices in STM32CubeProgrammer, either in the GUI or CLI versions.

image.png

 

Is there a way to disable automatic execution after programming in STM32CubeIDE, or alternatively, to specify a target device in a daisy-chain configuration when using STM32CubeProgrammer?

Thank you very much for your support.

1 REPLY 1
Ghofrane GSOURI
ST Employee

Hello @y_yamamoto 

Regarding your question, "Is there a way to disable automatic execution after programming in STM32CubeIDE?"
There is no direct option in STM32CubeIDE to disable automatic execution (auto-run) after programming when using the "Run" action. The IDE does not provide a checkbox or setting equivalent to STM32CubeProgrammer’s “Run after programming” option.

If you want to prevent the application from running automatically after programming, you should use the Debug action in STM32CubeIDE. In Debug mode, the MCU is programmed and then halted at the entry point (usually main()), waiting for your input before execution continues.

THX

Ghofrane

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.