Documentation on nrf5340 network core

Hi,

I'm building an application for the nrf5340 in rust and I want to be able to use the bluetooth LE audio functionality. For this I have two questions:

  1. How can I build the network core software separately so I can use that with my own application core FW
  2. Is there some documentation on how to communicate to the network core and use it for the LE audio usecase.

I'm currently interested in using it as a CIS server.

Thanks in advance.

Parents
  • Hello,

    We don't have anything to provide when it comes to Rust, unfortunately. What we do have is the nRF Connect SDK, with it's softdevice controller (BLE stack). 

    If you flash any of the BLE samples from nRF Connect SDK to the nRF5340 DK, it will automatically flash the SoftDevice Controller to the network core. If you like, you can then later flash whatever you want to the application core, and the network core will still have the softdevice controller. (and you can keep a copy of the networks core .hex file, so you don't have to go through the step of flashing the appilcation core twice).

    After that you can use the network core as an BLE HCI core, which is a standardized BLE API (used by Bluetooth dongles for computers). 

    But I have no idea how to mix Rust into this. I have heard of it, but never used it.

    Best regards,

    Edvin

  • Thanks, that should get me most of the way I think. How is the communication build between the application core to the network core. I'm fully aware that Rust is uncharted territory and I'll have to build it myself. I just need to know how to talk to the network core and I'll figure out the rest.

Reply Children
  • You can check out the IPC sample. This is the communication used between the cores. It is found in NCS\nrf\samples\ipc\ipc_service.

  • Could you confirm whether the netcore implementation is using the "icmsg" or "rpmsg" (and thus openamp) backend.

    Also, do I understand correctly that the softdevice_controller and mpsl libraries in nrfxlib could be used on the app core to control the network core? Or is this the software actually running on the network core?

    In the former case, I seem to only have soft-float builds for the softdevice_controller and mpsl but a hardfloat build of the lc3 encoder. Is this correct?

  • The softdevicd controller itself will run on the netcore, but the MPSL will be running on the app core, communicating with the softdevice controller on the net core. 

    ChristiaanP said:
    Could you confirm whether the netcore implementation is using the "icmsg" or "rpmsg" (and thus openamp) backend.

    That depends on the NCS version you are using. If you try to build an NCS sample in any until around 2.4.3, I think, you can see in the build folder that there is a hci_rpmsg child image.

    Then it changed to hci_ipc around 2.5.0. Then in 2.7.0 the build system was once more updated to sysbuild, so the structure in the build folder is a little different, but I believe it is still using hci_ipc.

    BR,

    Edvin

Related