We are running OTA DFU bootloader provided in SDK 6.0 on nrf51822. We noticed that when the chip has been on for a while and we quickly power cycle it, the bootloader sometimes hangs during start up.
After further investigation, we were able to reliably reproduce the problem by heating the chip with a heat gun until the die temperature (as returned by sd_temp_get()) reads just above 60C (still below operating limit of 75C) and then doing a quick power cycle.
Using SPI to debug (without attaching debugger, sending a byte out at various points in the code), we were able to isolate the problem to sd_app_evt_wait() call in wait_for_events() in bootloader.c. sd_app_evt_wait() never returns if the chip was power cycled after being heated up. This happens roughly 90% of the time if the chip was heated, while it never happens at room temperature.
Anyone know why this is happening?
Other relevant information:
- Chip rev: C0
- Custom board based on reference design.
- Internal RC clock for soft device: SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_RC_250_PPM_250MS_CALIBRATION, true);