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!