Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs

warning: redundant redeclaration of 'SystemCoreClock'

Since upgrading to SDK 17.1.0 i get the following warnings of a redundant redeclaration for SystemCoreClock, SystemInit() and SystemCoreClockUpdate() for nrf52810 and nrf52840:

CC /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52810.c
In file included from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52.c:31,
from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52810.c:42:
/home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52.h:33:17: warning: redundant redeclaration of 'SystemCoreClock' [-Wredundant-decls]
33 | extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */
| ^~~~~~~~~~~~~~~
In file included from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/nrf52810.h:141,
from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/nrf.h:142,
from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52.c:28,
from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52810.c:42:
/home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52810.h:33:17: note: previous declaration of 'SystemCoreClock' was here
33 | extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */
| ^~~~~~~~~~~~~~~
In file included from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52.c:31,
from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52810.c:42:
/home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52.h:44:13: warning: redundant redeclaration of 'SystemInit' [-Wredundant-decls]
44 | extern void SystemInit (void);
| ^~~~~~~~~~
In file included from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/nrf52810.h:141,
from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/nrf.h:142,
from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52.c:28,
from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52810.c:42:
/home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52810.h:44:13: note: previous declaration of 'SystemInit' was here
44 | extern void SystemInit (void);
| ^~~~~~~~~~
In file included from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52.c:31,
from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52810.c:42:
/home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52.h:55:13: warning: redundant redeclaration of 'SystemCoreClockUpdate' [-Wredundant-decls]
55 | extern void SystemCoreClockUpdate (void);
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/nrf52810.h:141,
from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/nrf.h:142,
from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52.c:28,
from /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52810.c:42:
/home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52810.h:55:13: note: previous declaration of 'SystemCoreClockUpdate' was here
55 | extern void SystemCoreClockUpdate (void);
| ^~~~~~~~~~~~~~~~~~~~~
Parents Reply Children
  • I upgraded from SDK16 and I use my own Makefile based build system. There were no warnings with SDK16, they came when I switched to SDK17. Below is a list of SDK files which I compile, I don't thing there is anything double. The warning comes from the files included from modules/nrfx/mdk/system_nrf52810.c


      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/atomic/nrf_atomic.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/atomic_fifo/nrf_atfifo.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/atomic_flags/nrf_atflags.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/hardfault/hardfault_implementation.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/pwr_mgmt/nrf_pwr_mgmt.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/timer/app_timer.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/util/app_error.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/util/app_error_weak.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/util/app_util_platform.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/strerror/nrf_strerror.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/experimental_section_vars/nrf_section_iter.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/scheduler/app_scheduler.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/crc32/crc32.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/balloc/nrf_balloc.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/memobj/nrf_memobj.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/ringbuf/nrf_ringbuf.c
      CC      /home/br1/dev/nordic/sdk/v17/modules/nrfx/drivers/src/nrfx_spim.c
      CC      /home/br1/dev/nordic/sdk/v17/modules/nrfx/drivers/src/nrfx_saadc.c
      CC      /home/br1/dev/nordic/sdk/v17/modules/nrfx/drivers/src/nrfx_wdt.c
      CC      /home/br1/dev/nordic/sdk/v17/modules/nrfx/drivers/src/prs/nrfx_prs.c
      CC      /home/br1/dev/nordic/sdk/v17/components/softdevice/common/nrf_sdh.c
      CC      /home/br1/dev/nordic/sdk/v17/components/softdevice/common/nrf_sdh_soc.c
      CC      /home/br1/dev/nordic/sdk/v17/components/softdevice/common/nrf_sdh_ble.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/common/ble_advdata.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/common/ble_srv_common.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/common/ble_conn_state.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/nrf_ble_gatt/nrf_ble_gatt.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/ble_services/ble_dis/ble_dis.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/fds/fds.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/fstorage/nrf_fstorage.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/fstorage/nrf_fstorage_sd.c
      CC      /home/br1/dev/nordic/sdk/v17/components/libraries/bootloader/dfu/nrf_dfu_svci.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/nrf_ble_qwr/nrf_ble_qwr.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/ble_services/ble_dfu/ble_dfu.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/ble_services/ble_dfu/ble_dfu_unbonded.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/peer_manager/auth_status_tracker.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/peer_manager/gatt_cache_manager.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/peer_manager/gatts_cache_manager.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/peer_manager/id_manager.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/peer_manager/peer_data_storage.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/peer_manager/peer_database.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/peer_manager/peer_id.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/peer_manager/peer_manager.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/peer_manager/peer_manager_handler.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/peer_manager/pm_buffer.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/peer_manager/security_dispatcher.c
      CC      /home/br1/dev/nordic/sdk/v17/components/ble/peer_manager/security_manager.c
      CC      /home/br1/dev/nordic/sdk/v17/modules/nrfx/mdk/system_nrf52810.c

  • Another note: Of course this has to do with the GCC option -Wredundant-decls which I would like to keep for my project. I would argue that production quality SDK and MDK code should compile without these warnings.

  • Hello again, Bruno

    Bruno Randolf said:
    I upgraded from SDK16 and I use my own Makefile based build system.

    Could you elaborate on what steps you took when you upgraded from v16 to v17.1.0? As can be seen in the change notes there are quite a few changes between the v16.0.0 release and the v17.0.0 and v17.1.0 releases, with the MDK being updated in both. 

    What changes have you made to your makefile based build system in order to upgrade to v17.1.0?

    Best regards,
    Karl

  • Hello Karl, sorry I don't find a Reply button for your last message, so i reply here.

    The steps I did to upgrade were basically just changing the SDK path and the names and IDs of the softdevice. I don't see anything in the Changelog which would refer to my issue.

  • Hello,

    Thank you for your patience with this.

    Bruno Randolf said:
    sorry I don't find a Reply button for your last message, so i reply here.

    No need to apologize - I have noticed that the answer option sometimes disappear, to get them back it seems that you will need to press the timestamp of the relevant comment.
    I have reported this internally to have it examined and fixed.

    Bruno Randolf said:
    The steps I did to upgrade were basically just changing the SDK path and the names and IDs of the softdevice.

    Is your project a IAR og SES project? There is a backwards compatibility breaking change in the v17.0.2 SDK for SES projects that you will need to account for in your project.

    Upon closer inspection of the system_nrf52810.c files from nRF5 SDK v16 and v17.1 I notice that the contents are changed so much so that the file in v17.1.0 only really includes the general system_nrf52.c file, which is what is causing your redefinition errors.
    The MDK change here is likely due to the nRF52810 being available directly, instead of having to be emulated on the nRF52832 SoC for development.

    For the record, which SoC revisions are you working with, and which SoftDevice versions?

    Best regards,
    Karl

Related