Multiple IPC channels

Hello,

Referencing this link here, I am looking for any updates to using IPC for some custom inter-core communication WHILE ALSO running Bluetooth on an nrf5340.

Long story short, I have a project with custom code for both the cpu_app and cpu_net cores of an nrf5340, and I am looking for a way to communicate between both. Right now, the cpu_net code is running the hci_rpmsg sample so that I can use BLE from the application core. I have not found a clean way to modify this to provide some hooks for my custom use case, nor do I want to try.

If there are any updates on being able to use a custom IPC channel and BLE at the same time, or if IPC is not the right abstraction layer to go through, please let me know! The link I provided mention using the BTS but I am not sure how that is relevant or possible.

I know that there are some complex structures being put to use here and I have tried to spend some time learning it but perhaps there is an easy-to-follow overview of inter-process communication that shows us how IPC, RMPSG, ICMSG, MBOX, shared SRAM and all other abstraction layers play together.

Thank you much.

Parents
  • Hi!

    The right abstraction layer will depend on what you want to send / communicate between the core. 

    If you want to e.g. call a function to run on the net core, from the app core, then maybe Remote procedure call library is the way to go. You can see how that's used in e.g. this sample: https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/samples/nrf_rpc/entropy_nrf53/README.html

  • What if I want an event that can be heard between cores?

    For example, if I am using the time sync sample to synchronize a clock on the network core, can I have the the application core subscribe to tick events from that timer? I know that the timer peripherals for both cores are treated separately, so if this is not possible, are there any sort of events I can trigger that will signal between the cores?

    The ultimate goal is to have a system that runs in the background that:

    • synchronizes a clock
    • takes ADC readings on tick events of that clock
    • notifies the foreground code when a buffer of ADC samples is complete
    • repeats this cycle

    We managed to complete this in the nrf5 SDK on the 52832 but need it now on the 5340 with NCS. If there is a way you can imagine sharing events between core's or even signaling to each core in the background that would be great.

    I will play around with this remote procedure library.

    Thanks

Reply
  • What if I want an event that can be heard between cores?

    For example, if I am using the time sync sample to synchronize a clock on the network core, can I have the the application core subscribe to tick events from that timer? I know that the timer peripherals for both cores are treated separately, so if this is not possible, are there any sort of events I can trigger that will signal between the cores?

    The ultimate goal is to have a system that runs in the background that:

    • synchronizes a clock
    • takes ADC readings on tick events of that clock
    • notifies the foreground code when a buffer of ADC samples is complete
    • repeats this cycle

    We managed to complete this in the nrf5 SDK on the 52832 but need it now on the 5340 with NCS. If there is a way you can imagine sharing events between core's or even signaling to each core in the background that would be great.

    I will play around with this remote procedure library.

    Thanks

Children
Related