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

SDK 13 to SDK 14.2 upgrade mess !

I am trying to upgrade from SDK 13 to SDK 14.2 and get a lot of compilation errors using gcc

Why have SDK path and filenames changed like:

c:/Nordic/components/libraries/log/
to c:/Nordic/components/libraries/experimental_log/

Next version will poss. go back to /log/ again ?

c:/Nordic/external/segger_rtt/RTT_Syscalls_GCC.c

to C:/Nordic\external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c

c:/Nordic/components/libraries/fstorage/fstorage.c

to c:/Nordic/components/libraries/fstorage/nrf_fstorage.c

There is no more softdevice_handler.c c:/Nordic/components/softdevice/common/softdevice_handler/softdevice_handler.c

What has to be used for this?

There is C:\Nordic_v13.0.0\components\serialization\application\transport\ser_softdevice_handler.c

but that looks way differently

I also get these compilation errors of SDK files:

Compiling file: ble_radio_notification.c c:/Nordic/components/ble/ble_radio_notification/ble_radio_notification.c: In fun ction 'ble_radio_notification_init': c:/Nordic/components/ble/ble_radio_notification/ble_radio_notification.c:67:16: error: implicit declaration of function 'sd_nvic_ClearPendingIRQ' [-Werror=impli cit-function-declaration] err_code = sd_nvic_ClearPendingIRQ(SWI1_IRQn); ^ c:/Nordic/components/ble/ble_radio_notification/ble_radio_notification.c:73:16: error: implicit declaration of function 'sd_nvic_SetPriority' [-Werror=implicit- function-declaration] err_code = sd_nvic_SetPriority(SWI1_IRQn, irq_priority); ^ c:/Nordic/components/ble/ble_radio_notification/ble_radio_notification.c:79:16: error: implicit declaration of function 'sd_nvic_EnableIRQ' [-Werror=implicit-fu nction-declaration] err_code = sd_nvic_EnableIRQ(SWI1_IRQn); ^ cc1.exe: all warnings being treated as errors c:/Nordic/components/toolchain/gcc/Makefile.common:272: recipe for target '_buil d/nrf52832_xxaa/ble_radio_notification.c.o' failed make: *** [_build/nrf52832_xxaa/ble_radio_notification.c.o] Error 1


Why is there so much mess for just a simple upgrade?

Why isn't that mentioned in the release notes?

Why isn't there a tool provided that would convert my make and source files?

I can't create my makefiles from scratch again after each upgrade, ist's just too risky.

Is there any benefit at all to go from v13.0 to v14.2 ?

  • From 13.0 to 14.2 is a major upgrade. I agree it could be made easier to follow the process, but I think that Nordic is working hard to improve this process. In the past, migration guides were not included, but for both SDK V13 and V14, a new section has been included to help ease the transition. The renaming of the softdevice_handler, and many other files are mentioned there. Here is the SDK14 migration guide

    If you are still having issues after reading the migration guide, I would recommend sorting all of your source files and includes in the Makefile into four categories. Nordic core files, Nordic Module files that you use, third party files, and lastly your custom files. Once you have done this, it is much easier to find out which ones are missing or renamed.

    As for improvements going to SDK 14, two great reasons I can think of are proper support for the Buttonless DFU Updates, and some BLE5 support.

    Furthermore, I think the API has improved in a few aspects (albeit regressed in some). These improvements should help keep your code more maintainable; if your project is intended to have a long lifetime this is important!

    In addition, better support on devzone (more people will be using the latest).

  • Thanks Kyle, The migration guide was not included in the downloadable docu, so I did not see it. Thanks for your pointer.

    IIt took me 2 days to get my code running again, initially I had planned an hour for it. I expected some code changes, but not to be forced to create makefile and sdk_config.h from scratch.

    Nordic should have provided some conversion tools, and better documentation.

    Further, the docu should specify for each function which module has to be included into the makefile.

    For example I could not get the saadc linked until I searched the example folder and discovered that now 2 modules have to be included in the makefile. You can't make our life any harder than that. I feel forced to do parttime reverse engineering.

  • They could definitely do better, but I think they are improving.

Related