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

BLE Bootloader on 52840 doesn't advertise

Hi there,

We need help with BLE bootloader.

Here's our setup: nRF5_SDK_15.3.0_59ac345
52840, Production PCB
SES compiler for bootloader
IAR 7.60 for our production code

We have a PCB with 2 Nordic 52840 in it.  Let's call them Main & Secondary

USB
------------------>Main 52840------SPI---->Secondary 52840
Voltage Regulator

The main has a connection to USB, so that we can run a CLI on it. Then the main also controls the Voltage Regulator that would power up the Secondary.

I'm trying to implement BLE bootloader on both. The BLE Bootloader on Main is working as expected. I can even re-enter DFU by calling:

nrf_power_gpregret_set(nrf_power_gpregret_get() | BOOTLOADER_DFU_START);
NVIC_SystemReset();

However, I cannot see the BLE advertised on the Secondary. Even if I only program the MBR, SoftDevice, and Bootloader, Bootloader settings and MBR Parameter storage, i.e. no Application, I still don't see any BLE advertised although I'm expecting this must be in DFU mode.

When I compare the difference between the main & secondary, I notice that on Main 52840, where BLE Bootloader works, during DFU it will stop around address 0x15FD6:

Whereas, on the Secondary Nordic, when I stop the debugger, the Bootloader waits around address 0xBBDE.  So, it seems like it doesn't progress as expected.

But, I'm not sure how to debug the Soft Device.  Is the source even available for us? Or, I suppose an experienced set of eyes will know already (perhaps? hopefully?) why my code is stuck here?
Here's the Soft Device I used: Soft Device 140

Here's our memory map.

0x000F_F000 0x0010_0000 Bootloader Settings 0x1000 (4kB)
0x000F_E000 0x000F_F000 MBR Parameter storage 0x1000 (4kB)
0x000F_8000 0x000F_E000 Bootloader
0x000F_7000 0x000F_8000 Our Flash
0x0002_6000 0x000F_7000 Our Application
0x0000_1000 0x0002_6000 SoftDevice
0x0000_0000 0x0000_1000 Master Boot Record (MBR)

Any help is appreciated.  Thanks!

Parents
  • Hi Cecylia, 

    Yes, incorrect LFCLK setting will cause sd_softdevice_enable() do hang indefinitly waiting for the LFCLK to start up. 

    Is the "secondary" bootloader the unaltered bootloader from the SDK or have you done any modifications to it? If yes, please state which.

    Can you run the "secondary" bootloader in a debug session and place a breakpoint in app_error_handler_bare() in main.c and see if you enter this handler?

    Best regards

    Bjørn

Reply
  • Hi Cecylia, 

    Yes, incorrect LFCLK setting will cause sd_softdevice_enable() do hang indefinitly waiting for the LFCLK to start up. 

    Is the "secondary" bootloader the unaltered bootloader from the SDK or have you done any modifications to it? If yes, please state which.

    Can you run the "secondary" bootloader in a debug session and place a breakpoint in app_error_handler_bare() in main.c and see if you enter this handler?

    Best regards

    Bjørn

Children
Related