This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Device HANG - Program counter stuck at __SEV() (Address 0x00078d58)

I'm using SDK 15.1, nRF52 in custom units, toolchain GDB, addr2line

A little background -

  • We use System off mode and then use a button press to come out of it.
  • Before going back to system off mode again, we delete all flash records (requirement calls)
  • While repeating above sequence, System hung and would not respond to button press.

Debugging Observations-

  • arm-none-eabi-gdb was used to find the point of hang
  • debugger also stuck at Address 0x00078d58 which is at __SEV()
  • using  $nrfutil settings display file.hex on this hanged unit and another working unit of same version, the bootloader version was found to be different (ie 5 ) instead of 0 as is in the working unit.

What can be the possible reasons for this? Can anybody please help, Thanks.

Parents
  • We use System off mode and then use a button press to come out of it.

    Are you entering System OFF from the application or the bootloader? Have you configured the button to be a wakeup source in both the bootloader and the application?

    debugger also stuck at Address 0x00078d58 which is at __SEV()

     The address indicated that you're in the bootloader. Are using the SoftDevice in your bootloader is it not dependent on the SD? The __SEV() function is used in the wait_for_event() function, so the bootloader is simply waiting for an event. 

    Best regards

    Bjørn

     

Reply
  • We use System off mode and then use a button press to come out of it.

    Are you entering System OFF from the application or the bootloader? Have you configured the button to be a wakeup source in both the bootloader and the application?

    debugger also stuck at Address 0x00078d58 which is at __SEV()

     The address indicated that you're in the bootloader. Are using the SoftDevice in your bootloader is it not dependent on the SD? The __SEV() function is used in the wait_for_event() function, so the bootloader is simply waiting for an event. 

    Best regards

    Bjørn

     

Children
Related