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

nrf52832 softdevice update process

Hi,

we are using mesh SDK 2.1.1 over nRF52832. In that, we had developed our custom bootloader, which was based on UART interrupt to receive commands & data from the host.

Via bootloader, if we are updating the softdevice along with MBR in it, then UART interrupt is stopped working after erasing MBR section. so to resolve the issue...

1. Should I update the softdevice without MBR, by extracting softdevice from MBR+Softdevice hex?
Does MBR have any softdevice based code, due to which with old MBR new softdevice might not be work in future?

2. Should I change my bootloader from UART interrupt based to UART polling based, so that I can update MBR along with softdevice, which will remove MBR & softdevice compatibility matrix.

or suggest, is there any other solution to resolve the issue. Please suggest an appropriate way with brief information.

P.S.: In bootloader, we are not doing any radio activity, just receive the commands & data from the host & modify the flash.

  • Hello,

    The MBR is the part that handles the interrupts while you are doing DFU updates. MBR is usually part of the softdevice, but it acts as a standalone component. Typically, when you do a DFU softdevice update, the MBR is never touched. nrfutil and nrfutil for Mesh strips out the MBR before sending it to the device. I don't know whether you use nrfutil in your custom bootloader. If you don't, and just send the softdevice, then you will try to overwrite the MBR, which will cause the update to fail, and brick the device (you can still program it with a programmer, but typically, out in the field, the devices doesn't have a programming input).

     

    So can you try to delete the MBR part of the softdevice .hex file? I am not quite sure how you would do that. Maybe you can find it in the nrfutil source code. If you need to know what part that is the MBR, you can see it in the SDK (regular), which you should already have if you use the SDK for mesh. The MBR is located in: SDK15\components\softdevice\mbr\nrf528XX\hex\

     

    Alternatively, you can just use nrfutil, if your custom bootloader is compliant with this.

     

    Best regards,

    Edvin

Related