Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Upgrading project from nRF51 with SDK8 to nRF52 with SDK14

Hi! We've got a nRF51 based device where the firmware was developed on SDK version 8 (reportedly based on its hrs_c example) with S110 softdevice.
We are now developing a new version of the hardware based on nRF52. It is a good time to also upgrade the SDK version to the most recent one.

We are faced with two challenges: nRF51 --> nRF52, and SDK 8 --> SDK 14. And, I guess, S110 --> S140…ish? I am admittedly a bit hazy still on how this scheme works.
It would be nice if these can be done in two steps, so that we can e.g. verify on the old hardware that the SDK upgrade has been successful, to not have to troubleshoot two issues simultaneously. However, it seems that SDK8 does not support nRF52, and SDK14 does not support nRF51. SDK12 seems to be the last version to support nRF51.

However, judging from the fact that the diff between their respective examples/ble_central/ble_app_hrs_c/main.c files weighs over 900 lines, the differences between SDK12 and SDK14 seem extremely major, so there would be significant of work in first porting the firmware to SDK12 and then further porting it to SDK14.

Am I mistaken? How do you recommend I should proceed?

  • Hi,

    You are correct that there are a few changes from SDK 12 to SDK 14, although the biggest leap in that strategy would be from SDK 8 to SDK 12.

    In our experience, the easiest way to migrate several major releases is often to start out with a fresh project based on a suited example from the latest SDK and then gradually copy functionality over from the old project to the new one. That way you migrate smaller portions of the original project at a time, and if done in a thought-through order you should be able to test each new addition on the way.

    Regarding the diff from SDK 12 to SDK 14 for main.c of the ble_app_hrs_c example, I find approx. 250 lines changed, of which many changes are actually in comments or whitespace. That being said, I see quite a few API changes as well, both for SDK libraries and for new version of SoftDevice.

    Regards,
    Terje

  • Since you already based on the hrs example.  I would recommend using the hrs example from SDK14 and bring in your code.  There are too much changes between the 2 hrs examples.  Not just that you are also changing to a different processor.  The intermediary moves are a waste of time.  

  • Is there any migration guide between the different SDK versions? What kind of role does the softdevice play in this? The code I am dealing with (that I inherited from another developer) seems extremely married with the library, i.e. there is no encapsulation whatsoever, the code is littered with references to SDK functions and definitions.

  • There is a migration guide that comes with the documentations of each SDK.  You can find it in there.

  • Hello,

    How did this approach at migrating go?

    I am about to start something similar(code from another developer as well) and would appreciate any insight you gained during the process.

    Our current firmware was developed using SDK v6 on a nRF51 based device and supporting another device with nRF52  hw seems like it will take substantial development time.

Related