Device unable to boot, stuck in Soft Device

We have a device containing a BMD350 module (which is based on the nRF52832_xxAA). The device behaves normally, but at some point, two devices failed in the exact same way. The nRF52 is stuck in the Soft Device and unable to reach our bootloader or application. The stack trace shows shows the following:

0x00016274 -> 0x000251c4

We are using Soft Device s132 v7.0.1

Our board has an external 32 kHz oscillator, which we probed and can see that there is indeed a clock in this case. Power supply looked good. Furthermore, when in this state, a soft reset, hard reset, or reflash of the firmware would not get it out of this state. A power cycle got things working again.

Any recommendations on further debugging or a solution to this issue?

  • Hi

    What SDK version are you using here exactly? And you say two devices failed, two out of how many here? How have you set up the RAM and Flash memory start addresses for your application? Please check out this guide on RAM and Flash adjustments to make sure you've set it up correctly in your project. Can you also provide some details on what your project is doing exactly?

    And what 32kHz crystal are you using exactly, and how is the crystal loaded? It could also be that the crystal is soldered on incorrectly.

    Best regards,

    Simon

  • SDK version 16.0.0
    I only had two devices on hand, and both had failed. We have configured a custom bootloader at address 0x73000 and our application at 0x26000. The application RAM starts at 0x20004000. Our project uses NFC to establish a bluetooth connection and communicate with a phone. It also acts as a SPI slave. The main processor manages the enable pin of the voltage regulator to supply 3V to the module. The BMD350 module is only powered when we want to use it, then it is powered off. We are not using a crystal for the external 32 kHz. We are using a SIT1552AI-JE-DCC-32.768E oscillator powered from the 3V voltage regulator with the clock output connected directly to P0.00 via a very short trace.

    To reiterate, both devices were working, and both failed into this state. Power cycling both boards got them working again, but this is not the first time I've seen this issue.

    Could you provide any insight as to what happens in the softdevice at 0x000251c4? Is it for sure related to the 32 kHz oscillator?

  • Hi Jeff

    0x000251c4 is inside a SoftDevice sleep function, meaning your chip goes to sleep without waking up, so you will need to check your wake up source and read the peripheral registers that generate the wake up interrupt and that the sleep is exited. 

    Best regards,

    Simon

  • I have seen this same issue where leakage into a BMD350 i/o pin (when the BMD350 supply is turned off) prevents the internal nRF52832 reset working correctly; the only recovery available is to remove the voltage on the io pin causing the leakage, ie remove power from everything. Often the uart Rx pin on the BMD350 is the cause, so - in this example - the driving other-MCU Tx pin must be held low before powering off the BMD350. Every BMD350 io pin is susceptible to this problem, as they all have internal schottky clamp diodes to VDD. If already removing power from all BMD350 io pins then this is not an issue.

  • This sounds likely. I will take a look into this.

Related