This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4AL-Q1: [TDA4] IPC implement question

Part Number: TDA4AL-Q1

Tool/software:

Hi:

      I want A72 and MCU domain's R5F communication through IPC. In the A72, it's run the linux OS. In the R5F, It's run the FreeRTOS.

      In the linux OS, there have three applications run at the same time. Those three applications will use the IPC to communication with MCU domain's R5F.

      Refer website: 3.5. IPC for J721S2 — Processor SDK Linux for J721s2 Documentation. Those three applications will use the ti-rpmsg-char library to create IPC to R5F

      In the ti-rpmsg-char library provide below API to create IPC link. Can I those three applications use rpmsg_char_open() open the same rpmsg device node?

      In the rpmsg_char_open(), there have parameters rproc_id, local_endpt and remote_endpt. The rproc_id is mean which processor want to IPC. How about the local_endpt and remote_endpt? Is it liking a connection? Can I set those parameters in three application like below. If yes, what's I need in MCU side? Does I also need setup support endpoint 4, 5 and 6 RX and TX to 1, 2, 3 endpoint? 
      application A:
            rproc_id = 0
            local_endpt = 1
            remote_endpt = 4
      application B:
            rproc_id = 0
            local_endpt = 2
            remote_endpt = 5
      application C:
            rproc_id = 0
            local_endpt = 3
            remote_endpt = 6

rpmsg_char_init()

This function checks that the needed kernel drivers (remoteproc. rpmsg, virtio) are installed and accessible from the user space. Further it also checks the SoC device supports the requested remote processor.

rpmsg_char_exit()

This function finalizes and performs all the de-initialization and any cleanup on the library. This is the last function that needs to be invoked after all usage is done as part of the application’s cleanup. This only need to be invoked once in an application, there is no reference counting. The function also needs to be invoked in any application’s signal handlers to perform the necessary cleanup of stale rpmsg endpoint devices.

rpmsg_char_open()

Function to create and access a rpmsg endpoint device for a given rpmsg device.

rpmsg_char_close()

Function to close and delete a previously created local endpoint