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

Changed from S112 to S113 and now DFU only partially works

Hi!

We recently developed some firmware using S112 on a nRF52810 but realised that we needed data length extension, so changed to using S113.

Previously everything worked great (including DFU) with S112, and after changing softdevice to S113 (and the relevant linker/Makefile parts) the main application is now going great.

However DFU updates are now behaving very strangely. The bootloader starts and can be connected to just fine. However when you try to upload a firmware file, it updates just a tiny amount and then disconnects. It seems as if the device itself locks up, but it seems it isn't locking up on a hardfault or application error (at least according to GDB).

nRF Connect's log shows that 'Data Object 1/12' was sent and executed, but after 'Data Object 2/15' and 'Uploading firmware...' are sent, the device just disconnects.

Any ideas what might be the matter, or how to debug this further? Thanks!

Parents
  • Hi,

    Are you testing this on an actual 52810 target or are you emulating the nRF52810 on a 52832 board? I'm asking because the update should have been rejected already from the start because there is not enough flash to store another copy of the Softdevice in flash as illustrated by the "Memory layout" and "Dual-bank updates" section of the SDK documentation.

    Over-the-air updates of the Softdevice is not supported on this part because of the memory constraints, unfortunately.

    Best regards,

    Vidar

  • Hi Vidar,

    Sorry, I wasn't too clear about that. I'm testing on an nRF52810. I am not updating the softdevice via DFU though.

    I have S113 softdevice already and am trying to update the application, which is 58kB. 

    DFU update worked great with identical code on S112. I just:

    • Updated the softdevice
    • updated every reference to S112 in the makefile to S113
    • changed the linker files to the correct RAM offset (and flash offset in the case of the app)

    This worked fine for the main application, however afterwards the bootloader has had this strange issue where it only seems to accept the first object and then reboots. Maybe the bootloader thinks the app's base address is still at where it would be for S112? I'm not sure where that would be set though.

Reply
  • Hi Vidar,

    Sorry, I wasn't too clear about that. I'm testing on an nRF52810. I am not updating the softdevice via DFU though.

    I have S113 softdevice already and am trying to update the application, which is 58kB. 

    DFU update worked great with identical code on S112. I just:

    • Updated the softdevice
    • updated every reference to S112 in the makefile to S113
    • changed the linker files to the correct RAM offset (and flash offset in the case of the app)

    This worked fine for the main application, however afterwards the bootloader has had this strange issue where it only seems to accept the first object and then reboots. Maybe the bootloader thinks the app's base address is still at where it would be for S112? I'm not sure where that would be set though.

Children
Related