Communication between AppCore and NetCore

Our Prototype was based on ESP32 which we were able to do all the demos and testing. but since the final product will be powered by battery we need a energy efficient solution as MCU.

We choose NRF5340 for that because one of our requirements is having 2 cores.

We are right now having problem with sending and receiving messages between cores. what i mean is there is no proper documentation to be found for that.

what we focusing our search is on https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/samples/ipc/ipc_service/README.html and looking for IPC (inter processor communication)

Though there are some results coming they are kind of convoluted. really hard to understand (we as a team never worked with Nordic Products).

Can someone give us a link or proper direction about how to do inter processor communication. (We don't just need incoming BLE data from the NetCore. we are planning to offload some non-time critical calculations to the network core as well. so we need to send the data to network core and get that calculated data from network core back to app core as well.

  • Hello, and sorry about the delay

    we as a team never worked with Nordic Products

    First of all, I should mention that if you are unfamiliar with Zephyr as well, I would recommend you to take a look at our DevAcademy

    The issue with IPC is that it is a quite complex topic (due to its two-sided nature etc.), and there are multiple implementations of it.

    To give you an overview of the topology, you have the IPC service which abstract away the underlaying transport layers such as icmsg or rpmsg with static vrings from OpenAMP. Working directly with either of these is fine, but we additionally provide the Remote Procedure Call library as an abstraction on top of the IPC Service (RPC). As you can see there is some documentation available on that. I believe most of our bluetooth services are implemented with nRF RPC.

    So if you want to have your own serialized API I think starting with nRF RPC could be a sensible start. Though what you use would depend on your use case and if you want to align more with Zephyr or nRF. Maybe this would fit your use case better?

    Though when it comes to offloading on the network core, I have some concerns about if this would pay off for you (eg., the netcore is slower than the appcore), though I assume you have your reasons.

    As you can see we have several samples available on IPC and RPC(see here, here , herethis is what is running on the netcore). Taking a look at their differences might be beneficial.

    Regards,

    Elfving

Related