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

DFU SDK6.1+SD7.1 to SDK1+SD8

I'm trying to piece together how to be able to get this migration to work OTA via DFU. I was told by Nordic that all you need is to .zip SD8 + Boot(SDK10) and DFU both to update. However these seems to fail.

I followed a previous posts to create the zip using nrf.exe.

nrf.exe dfu genpkg sd8_and_boot.zip --bootloader sdk10_dfu_bootloader_xxaa.hex --softdevice s110_nrf51_8.0.0_softdevice.hex --application-version 0xffff --dev-revision 0xff --dev-type 0xff --sd-req 0xfffe

The SD update functions dfu_sd_image_swap() and dfu_sd_image_validate() don't seem to have any issues (no errors), but obviously my debugger loses track at dfu_bl_image_swap(). In bootloader_settings, it correctly tracks the sd_image_size=88344.

Inside dfu_sd_image_swap() I have the following values:

  • sd_start 4096
  • block_size 0xA800, 43008
  • img _block_start 0x2B000, 176128
  • sd_block_start 0x16000
  • image_end 0x2B918, 178456

Inside dfu_sd_image_validate() I have the following setting values:

  • sd_image_size 0x15918 88344 (correct for SD 8)
  • sd_image_start 0x16000

I also noted that dfu_image_validate() fails because the m_image_crc != received_crc. However the entry in m_init_packet[3] does contain the correct CRC value. Is this a compatibility issue?

Is there anything I'm missing to be able to support this OTA migration?

Thanks for the help guys,

  • Hi Vidar,

    My settings are the following: :10FC0000A5009D4FFF000000AC9C010018590100A9 :10FC1000944300000000000000600100FFFFFFFFB0

    I tried updating the SD + boot using SD7 and old bootloader. But this exhibits the same behaviour. So I can't seem to get SD + Boot of any kind to work on a stock DFU code. Was SD + Boot supported in SDK 6.1?

    Ok, we can compromise on not update the Bootloader start address but its not ideal. We were informed by Nordic early in our development this would be possible on future SDKs.

  • Hi Dave,

    Sorry, could have been more clear, but was referring to the data store in flash at 0x3FC00 by the bootloader when after it failed to update sd+bl. Updated my answer to better illustrate the problem.

    SDK 6.1.0 supports softdevice and bootlaoder update, and I was able to do DFU from SDK 6.1.0/s110 v.7.x.x to SDK10.0.0/s110.v.8.0.0 after fixing the format issue.

    It is very unfortunate if it has been indicated that reloaction of the bootloader would be supported. I hope it will be ok to keep the start address, but if space becomes an issue you could switch over to single bank.

  • HI Vidar,

    I added the BANK_UNUSED = 0xFFFFFFF to my bootloader settings on the SDK10 bootloader image. However the upload is still not successful/

    The settings in my previous response are the settings stored i flash. I obtain them via a Flash readback after the DFU.

Related