central_hr sample, Undefined references

Dear all,

I've tried to build the central_hr sample using c:/ncs/v2.9.0/zephyr/samples//bluetooth/hci_ipc for the cpunet. The SDK version is v2.9.0 and the board is nrf5340dk.  It all builds until linking. I get the following undefined references (in red): 

someone any idea? 

Thanks in advance

Parents
  • The problem appears to be related to the "System Build" in your build configuration.

    The 2.9.0 SDK now defaults to "sysbuild" which causes this linker error. Changing the build configuration to not use sysbuild (--no-sysbuild) does not cause this linker error. Haven't tested whether the firmware actually works on hardware, but it builds at least properly.

    Interestingly, the "sysbuild" option works for another nrf5340-based kit: the Thingy53 builds just fine. So it appears something to be specific to the nrf5340dk board? Anybody from Nordic who can shed a light on this?

  • Hello,

    Please take look at the "Using Zephyr samples with sysbuild" section of the SDK documentation. The "problem" is that the zephyr central_hr sample is configured to build the hci_ipc sample from Zephyr for the netcore instead of our IPC radio firmware while the `zephyr,bt-hci-ll-sw-split` compatible needed to use the zephyr controller is disabled in the devicetree.

    To include our bluetooth controller and fix the build error, you can make the following changes to the Kconfig.sysbuild file in your project root:

    diff --git a/Kconfig.sysbuild b/Kconfig.sysbuild
    index 61836cb..73da6a1 100644
    --- a/Kconfig.sysbuild
    +++ b/Kconfig.sysbuild
    @@ -3,13 +3,8 @@
     
     source "share/sysbuild/Kconfig"
     
    -config NET_CORE_BOARD
    -	string
    -	default "nrf5340dk/nrf5340/cpunet" if $(BOARD) = "nrf5340dk"
    -	default "nrf5340_audio_dk/nrf5340/cpunet" if $(BOARD) = "nrf5340_audio_dk"
    -	default "nrf5340bsim/nrf5340/cpunet" if $(BOARD_TARGET_STRING) = "NRF5340BSIM_NRF5340_CPUAPP"
    +config NRF_DEFAULT_IPC_RADIO
    +	default y
     
    -config NET_CORE_IMAGE_HCI_IPC
    -	bool "HCI IPC image on network core"
    +config NETCORE_IPC_RADIO_BT_HCI_IPC
     	default y
    -	depends on NET_CORE_BOARD != ""

    Jan Willem (RT) said:

    The 2.9.0 SDK now defaults to "sysbuild" which causes this linker error. Changing the build configuration to not use sysbuild (--no-sysbuild) does not cause this linker error. Haven't tested whether the firmware actually works on hardware, but it builds at least properly.

    Interestingly, the "sysbuild" option works for another nrf5340-based kit: the Thingy53 builds just fine. So it appears something to be specific to the nrf5340dk board? Anybody from Nordic who can shed a light on this?

    The FW for the netcore will not be built when you disable sysbuild. Also, as can be seen from the original Kconfig.sysbuild configuration, the project was only configured to include the ipc FW when the build target was one of the following boards: nrf5340dk, nrf5340_audio_dk, and NRF5340BSIM_NRF5340_CPUAPP.

    Best regards,

    Vidar

Reply
  • Hello,

    Please take look at the "Using Zephyr samples with sysbuild" section of the SDK documentation. The "problem" is that the zephyr central_hr sample is configured to build the hci_ipc sample from Zephyr for the netcore instead of our IPC radio firmware while the `zephyr,bt-hci-ll-sw-split` compatible needed to use the zephyr controller is disabled in the devicetree.

    To include our bluetooth controller and fix the build error, you can make the following changes to the Kconfig.sysbuild file in your project root:

    diff --git a/Kconfig.sysbuild b/Kconfig.sysbuild
    index 61836cb..73da6a1 100644
    --- a/Kconfig.sysbuild
    +++ b/Kconfig.sysbuild
    @@ -3,13 +3,8 @@
     
     source "share/sysbuild/Kconfig"
     
    -config NET_CORE_BOARD
    -	string
    -	default "nrf5340dk/nrf5340/cpunet" if $(BOARD) = "nrf5340dk"
    -	default "nrf5340_audio_dk/nrf5340/cpunet" if $(BOARD) = "nrf5340_audio_dk"
    -	default "nrf5340bsim/nrf5340/cpunet" if $(BOARD_TARGET_STRING) = "NRF5340BSIM_NRF5340_CPUAPP"
    +config NRF_DEFAULT_IPC_RADIO
    +	default y
     
    -config NET_CORE_IMAGE_HCI_IPC
    -	bool "HCI IPC image on network core"
    +config NETCORE_IPC_RADIO_BT_HCI_IPC
     	default y
    -	depends on NET_CORE_BOARD != ""

    Jan Willem (RT) said:

    The 2.9.0 SDK now defaults to "sysbuild" which causes this linker error. Changing the build configuration to not use sysbuild (--no-sysbuild) does not cause this linker error. Haven't tested whether the firmware actually works on hardware, but it builds at least properly.

    Interestingly, the "sysbuild" option works for another nrf5340-based kit: the Thingy53 builds just fine. So it appears something to be specific to the nrf5340dk board? Anybody from Nordic who can shed a light on this?

    The FW for the netcore will not be built when you disable sysbuild. Also, as can be seen from the original Kconfig.sysbuild configuration, the project was only configured to include the ipc FW when the build target was one of the following boards: nrf5340dk, nrf5340_audio_dk, and NRF5340BSIM_NRF5340_CPUAPP.

    Best regards,

    Vidar

Children
Related