I'm curious about the CPU lockup reset. We have a long term test with 9 units running identical firmware on identical hardware; line powered, running continuously for 6 months without explicit power management.
In that period of time
- 4 units have experienced a CPU lockup just once
- 1 unit has experienced 3 CPU lockups
- 4 units have had no resets at all
We're running SD132 v4.0.3, using SDK v13.1.0 on Laird BL652 modules (nRF52832).
After reading all the threads on this subject and reading the ARM core documentation, I'm pretty convinced that the lockup is somewhere deep in the bowels of the softdevice, not in my application. I can understand and accept that, but I am curious as to the actual reset mechanism in the softdevice. The ARM document here states:
The processor enters a lockup state if a fault occurs when executing the NMI or HardFault handlers. When the processor is in lockup state it does not execute any instructions. The processor remains in lockup state until either:
-
it is reset
-
an NMI occurs
-
it is halted by a debugger.
I'm concerned that there might be some occasion when the processor remains in the lockup state, thereby hanging our product. We are using the watchdog timer, will that reset the CPU out of the lockup state? Is there some other mechanism in the nRF52 to prevent the lockup from persisting?
I'm also curious what might be causing the NMI or HardFault involved in the lockup. We haven't seen any calls to our application app_error_fault_handler() during our long-term test.
TIA,
Richard