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,