cancel
Showing results for 
Search instead for 
Did you mean: 

End Device HardFault after switching to ClassC

oronshifman
Visitor

Hello,

I'm working with Actility as server, on a NUCLEO-WL55JC as the End-Device. I have the STM code from the STM32obeWL repository, version 1.3.0. When running a FUOTA campaign from the server the last update sent from the end device in the serial port is this:

oronshifman_1-1734872265199.png

I ran the program in a debugger and found out that it gets stuck in an infinite loop in the HardFault_Handler in stm32wlxx_it.c.

Here is the call stack when the program is in the infinite loop:

oronshifman_2-1734872930882.png

It seems it is trying to write to the start of the download slot, as defined in mapping_fwimg.ld, which is 0x801600. As I think it should.

oronshifman_3-1734873163308.png

And it's src is:

oronshifman_4-1734874171808.png

The above call to FragDecoderProcess is from the function LmhpFragmenrationOnMcpsIndication. and the address of the buffer is 0x200078e4. But then in the last call where it hard faults, in the function FLASH_IF_INT_Write, the src address is 0x200078e7:

oronshifman_5-1734874407787.png

After the call to FragDecoderProcess, inside FragDecoderProcess the address of the rawData variable which should be the same as the Buffer's, is already 0x200078e7:

oronshifman_6-1734875413246.png

 

why would it change? could this be the reason for the hard fault?

If someone has encountered the issue before I'd be happy to hear.

Thanks,

Oron.

0 REPLIES 0