IPC Error : Endpoint not register


Hello, I am working on a project using a custom board with the nRF5340 chip and SDK 2.8.0.

In my setup, the application core reads sensor values, packages them into packets, and sends them to the network core via IPC communication. The network core then transmits the data via Bluetooth. However, I am facing an issue in this process.

Here are the cases that I have successfully implemented so far:

  1. Implementing Bluetooth on the application core and sending data successfully.
  2. Implementing Bluetooth on the network core and successfully sending string data.
  3. Sending a 1-byte hex value from the application core to the network core via IPC and successfully transmitting it via Bluetooth.

However, an issue occurs when transmitting a full packet.
Upon checking the logs of both the application core and the network core, I can confirm that ep_bound is successful on both cores. However, when calling ipc_service_send, an error occurs:
ipc_service: Endpoint not registered, and the packet data is not sent.

The packet size has been limited to not exceed 200 bytes for BLE communication, and even when reducing the packet payload to a minimal 20 bytes, the data is still not transmitted.



Since there seems to be no issue when sending a 1-byte hex value, it appears that the endpoint is set up correctly.

However, I don't understand why the issue occurs when sending data as a packet.

Parents
  •   <application core code>

      <application core Log>

    This is the IPC-related function in the application, and I am sending it from a thread.
    In the logs, the message ipc not ready yet occurs because ipc_send_packet is designed to return until the ipc_ready flag becomes true. The ipc_ready flag is set to true once ep_bound is executed.

    As highlighted in the logs, the endpoint is successfully bound, and then ipc_service_send is executed. However, at this point, the error in the last line of the log occurs

Reply
  •   <application core code>

      <application core Log>

    This is the IPC-related function in the application, and I am sending it from a thread.
    In the logs, the message ipc not ready yet occurs because ipc_send_packet is designed to return until the ipc_ready flag becomes true. The ipc_ready flag is set to true once ep_bound is executed.

    As highlighted in the logs, the endpoint is successfully bound, and then ipc_service_send is executed. However, at this point, the error in the last line of the log occurs

Children
  •   <network core code>

      <network core Log>

    This is the main function code and log from the network core. The endpoint is also bound here.

    The packet structure in ipc_send_packet follows a basic format:
    start / type / length / payload / crc / end

    The function sends the packet once ipc_ready becomes true. According to the logs, ret=2 at this point

Related