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

Is it possible upgrading from nrf52 sdk 14.0 to sdk 16.0?

Hi,we had finished application development on nrf52832 long ago, based on nrf52 sdk 14.0(with softdevice 5.0). But now we get feedback which is a bug has been fixed on sdk 16.0(with softdevice 7.0). We want to solve this problem by DFU since a lot of productions have appeared on the market. We did the test, but not work(see attatchment). Is this possible technically?

Parents
  • hi guys:

    Maybe it is related to bootloader.

    If delete the BL (--bootloader Bootloader. hex -- Bootloader-version 2) in Command line, NRFConnect will indicate that the upgrade was successful.(Upgrade SD alone or upgrade SD and APP together without BL NRFConnect will indicate  transfer up to 100% and successful

    But after the poweroff and reboot ;it run the old app.(actually dfu is failed)!

    It should be related to bootloadersetting.

    what can i do next?

    thanks all!

Reply
  • hi guys:

    Maybe it is related to bootloader.

    If delete the BL (--bootloader Bootloader. hex -- Bootloader-version 2) in Command line, NRFConnect will indicate that the upgrade was successful.(Upgrade SD alone or upgrade SD and APP together without BL NRFConnect will indicate  transfer up to 100% and successful

    But after the poweroff and reboot ;it run the old app.(actually dfu is failed)!

    It should be related to bootloadersetting.

    what can i do next?

    thanks all!

Children
  • Hello,

    What version of nrfutil do you use?

    Did you try to change the --sd-req according to 's suggestion? Depending on what S132 version you use you need to set the --sd-req accordingly:

      --sd-req TEXT                   The SoftDevice requirements. A comma-
                                      separated list of SoftDevice firmware IDs (1
                                      or more) of which one must be present on the
                                      target device. Each item on the list must be
                                      a two- or four-digit hex number prefixed
                                      with "0x" (e.g. "0x12", "0x1234").
                                      A non-
                                      exhaustive list of well-known values to use
                                      with this option follows:
                                      |s112_nrf52_6.0.0|0xA7|
                                      |s112_nrf52_6.1.0|0xB0|
                                      |s112_nrf52_6.1.1|0xB8|
                                      |s112_nrf52_7.0.0|0xC4|
                                      |s112_nrf52_7.0.1|0xCD|
                                      |s113_nrf52_7.0.0|0xC3|
                                      |s113_nrf52_7.0.1|0xCC|
                                      |s130_nrf51_1.0.0|0x67|
                                      |s130_nrf51_2.0.0|0x80|
                                      |s132_nrf52_2.0.0|0x81|
                                      |s130_nrf51_2.0.1|0x87|
                                      |s132_nrf52_2.0.1|0x88|
                                      |s132_nrf52_3.0.0|0x8C|
                                      |s132_nrf52_3.1.0|0x91|
                                      |s132_nrf52_4.0.0|0x95|
                                      |s132_nrf52_4.0.2|0x98|
                                      |s132_nrf52_4.0.3|0x99|
                                      |s132_nrf52_4.0.4|0x9E|
                                      |s132_nrf52_4.0.5|0x9F|
                                      |s132_nrf52_5.0.0|0x9D|
                                      |s132_nrf52_5.1.0|0xA5|
                                      |s132_nrf52_6.0.0|0xA8|
                                      |s132_nrf52_6.1.0|0xAF|
                                      |s132_nrf52_6.1.1|0xB7|
                                      |s132_nrf52_7.0.0|0xC2|
                                      |s132_nrf52_7.0.1|0xCB|
                                      |s140_nrf52_6.0.0|0xA9|
                                      |s140_nrf52_6.1.0|0xAE|
                                      |s140_nrf52_6.1.1|0xB6|
                                      |s140_nrf52_7.0.0|0xC1|
                                      |s140_nrf52_7.0.1|0xCA|
                                      |s212_nrf52_6.1.1|0xBC|
                                      |s332_nrf52_6.1.1|0xBA|
                                      |s340_nrf52_6.1.1|0xB9|

    So if you used S132v5.0.0 in your original (old) bootloader you should set --sd-req 0x9D

    And if you used S132v5.1.0 in your original (old) bootloader you should set --sd-req 0xA5

    The --sd-id should match the softdevice version in your new image.

    So please:

    Let me know what softdevice version you use, and a new snippet where you generate the new firmware image with the correct --sd-req, and what the new output from nRF Connect looks like.

    BR,
    Edvin

  • hi Edvin,

    nrfutil version is 6.1.0

    we use the old sd is 5.0.0

    conmand line :

    nrfutil pkg generate --hw-version 32 --key-file private.pem --sd-req 0x9D,0xCB --softdevice s132_nrf52_7.0.1_softdevice.hex --sd-id 0xCB --bootloader bootloader.hex --bootloader-version 1 pkg.zip

    thanks

  • Try:

    nrfutil pkg generate --hw-version 32 --key-file private.pem --sd-req 0x9D --softdevice s132_nrf52_7.0.1_softdevice.hex --sd-id 0xCB --bootloader bootloader.hex --bootloader-version 2 pkg.zip

    So remove 0xCB from --sd-req and increase the bootloader-version by 1 (I assume that the currently flashed bootloader has bootloader-version 1). 

    What does nRF Connect say when you use this?

    BR,

    Edvin

Related