cancel
Showing results for 
Search instead for 
Did you mean: 

Need M0+ recovery solution without reseting M4

OrnellaBenzi
Associate II

Hi! We are developing a sensitive device using the STM32WB55, using in the M0+ the concurrent Thread+Ble binary (we use the concurrent because we'll need both Ble and Thread in the near future, althought the most important role is the Thread communication, and is the only one we are using right now). 
Thread works fine, but after some hours on the field (not in lab), the M0+ gets stuck in some state where it no longer ack the commands from our app in M4. Reseting the whole device makes it functional again, but it is not an opcion in the field. We need a way of reseting the M0+ without touching the M4, in order to make it function again. 
The state in which the M0 wont respond is simply it wont ack any command anymore after a while. It is not consistent, it could happen after 4h or after 12h. It is not reproductible in the lab, it only happens on the field. So we need to implement a recovery for when it happens. 
Please any hint is welcome. 

 

4 REPLIES 4
Uwe Bonnes
Principal III

Did you try via the SCB_AIRCR register?

SCB_AIRCR = SCB_AIRCR_VECTKEY | SCB_AIRCR_SYSRESETREQ;

OrnellaBenzi
Associate II

Hi @Uwe Bonnes , thanks for the fast response. Is there a way to use the SCB_AIRCR register for resetting ONLY the M0+ while the application in the M4 keeps running? 
We use SCB_AIRCR = SCB_AIRCR_VECTKEY | SCB_AIRCR_SYSRESETREQ; for reseting the whole system, but it is not acceptable for us to recover that way beacuse de application in the M4 cannot reset whenever the M0+ thread stack get stuck

Sorry, I assumed there is a SCB for each CPU.

@Uwe Bonnes  I think the M0+ actually has its own SCB_AIRCR, but it is not accessible from the M4.