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.

PROCESSOR-SDK-J721E: IPC between a72 and mcu1_0 add endpoint failed

Part Number: PROCESSOR-SDK-J721E


Tool/software:

Discription:

IPC (between a72 and mcu1_0)  add endpoint failed.

SDK vertion:

10_00_00_27

Error:

_rpmsg_char_find_ctrldev: could not find the matching rpmsg_ctrl device for virtio3.rpmsg_fct.-1.15 Can't create an endpoint device: Invalid argument
Questions:
Is the modification method of the following code correct, and what additional settings are needed?

The method of code modification:

Mcu1_0 Core(See the blue text)

#define SERVICE_PING   "ti.ipc4.ping-pong"
#define ENDPT_PING     13U
#define SERVICE_CHRDEV "rpmsg_chrdev"
#define ENDPT_CHRDEV   14U
#define SERVICE_FCT "rpmsg_fct"

Ipc_TestParams service_ping = { ENDPT_PING, SERVICE_PING };
Ipc_TestParams service_chrdev = { ENDPT_CHRDEV, SERVICE_CHRDEV };
Ipc_TestParams service_fct = { ENDPT_FCT, SERVICE_FCT };  //add fct endpoint

    /* Step 3: Initialize RPMessage */
    RPMessage_Params cntrlParam;

    //App_printf("Required Local memory for RPMessage Object = %d\n",
    //   RPMessage_getObjMemRequired());

    /* Initialize the param */
    RPMessageParams_init(&cntrlParam);

    /* Set memory for HeapMemory for control task */
    cntrlParam.buf         = pCntrlBuf;
    cntrlParam.bufSize     = rpmsgDataSize;
    cntrlParam.stackBuffer = &pTaskBuf[index++ * IPC_TASK_STACKSIZE];
    cntrlParam.stackSize   = IPC_TASK_STACKSIZE;
    RPMessage_init(&cntrlParam);

    /* Respond to messages coming in to endPt ENDPT_PING */
    TaskP_Params_init(&params);
    params.priority   = 3;
    params.stack      = &pTaskBuf[index++ * IPC_TASK_STACKSIZE];
    params.stacksize  = IPC_TASK_STACKSIZE;
    params.arg0       = (void *)&service_ping.endPt;
    params.arg1       = (void *)&service_ping.name[0];
    if (NULL == TaskP_create(&rpmsg_responderFxn, &params))
    {
        App_printf("IPC Responder task creation failed!!!");
    }

#if !defined(BUILD_MPU1_0) && defined(A72_LINUX_OS)
    /* Respond to messages coming in to endPt ENDPT_CHRDEV (for testing rpmsg_chrdev) */
    TaskP_Params_init(&params);
    params.priority   = IPC_SETUP_TASK_PRI;
    params.stack      = &pTaskBuf[index++ * IPC_TASK_STACKSIZE];
    params.stacksize  = IPC_TASK_STACKSIZE;
    params.arg0       = (void *)&service_chrdev.endPt;
    params.arg1       = (void *)&service_chrdev.name[0];
    if (NULL == TaskP_create(&rpmsg_responderFxn, &params))
    {
        App_printf("IPC Responder task creation failed!!!");
    }
    
    TaskP_Params_init(&params);
    params.priority   = IPC_SETUP_TASK_PRI;
    params.stack      = &pTaskBuf[index++ * IPC_TASK_STACKSIZE];
    params.stacksize  = IPC_TASK_STACKSIZE;
    params.arg0       = (void *)&service_fct.endPt;
    params.arg1       = (void *)&service_fct.name[0];
    if (NULL == TaskP_create(&rpmsg_responderFxnfct, &params))
    {
        App_printf("IPC Responder task creation failed!!!");
    }

#endif

A72 Core(See the blue text):

参数dev_name:"rpmsg_fct"

参数remote_endpt:15

    status = rpmsg_char_ping(rproc_id, dev_name, local_endpt, remote_endpt, num_msgs);