cancel
Showing results for 
Search instead for 
Did you mean: 

CM33 firmware overridden in STM32MP257F-DK

partha_sarathi1000
Associate II

I was trying to write a small firmware to keep the LD9 Orange LED steady ON, instead of blinking in STM32CubeIDE. I could able to flash into CM33 core using the debugger and able to debug. When I disconnect debugger, it still remain ON.

But once I reset the board, the CM33 firmware is gone and LD9 again started blinking, as if my firmware is over written.

Any solution?

1 ACCEPTED SOLUTION

Accepted Solutions
Erwan SZYMANSKI
ST Employee

Hello @partha_sarathi1000 ,
This is a normal situation.

When you use CubeIDE to run/debug a firmware on the target, the firmware is not installed permanently on any memory, like traditional MCUs. STM32MPUs cannot do that.

This is Linux (in our standard Ecosystem) that has a service running after boot time, saying that we take a M33 firmware binary in its file system, program it on M33 and make it run. So if you do not modify it, the firmware is still the same (and Indeed, this firmware makes a LED blinking).

The service is called st-m33firmware-load.service

root@stm32mp2-e3-95-f9:~# systemctl | grep m33
  st-m33firmware-load.service 

You can either disable it and launch your own firmware manually, or you can modify this service to automatically point on your own firmware.

Please check out this WIKI article: https://wiki.st.com/stm32mpu/wiki/Linux_remoteproc_framework_overview#Remote_processor_boot

Kind regards,
Erwan.

In order 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.

View solution in original post

1 REPLY 1
Erwan SZYMANSKI
ST Employee

Hello @partha_sarathi1000 ,
This is a normal situation.

When you use CubeIDE to run/debug a firmware on the target, the firmware is not installed permanently on any memory, like traditional MCUs. STM32MPUs cannot do that.

This is Linux (in our standard Ecosystem) that has a service running after boot time, saying that we take a M33 firmware binary in its file system, program it on M33 and make it run. So if you do not modify it, the firmware is still the same (and Indeed, this firmware makes a LED blinking).

The service is called st-m33firmware-load.service

root@stm32mp2-e3-95-f9:~# systemctl | grep m33
  st-m33firmware-load.service 

You can either disable it and launch your own firmware manually, or you can modify this service to automatically point on your own firmware.

Please check out this WIKI article: https://wiki.st.com/stm32mpu/wiki/Linux_remoteproc_framework_overview#Remote_processor_boot

Kind regards,
Erwan.

In order 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.