Tool/software:
Hi,
From AWR2944 OOB example, I found the IpcNotify_init(), Mailbox_init(), and RPMessage_init() in System_init(). I have no idea about these functions. Can you please help to provide more details about them?
How to use them to achieve the IPC between DSS and MSS?
radar toolbox version: v2_30_00_12
example: source\ti\examples\Out_Of_Box_Demo\src\awr294x
void System_init(void) { /* DPL init sets up address transalation unit, on some CPUs this is needed * to access SCICLIENT services, hence this needs to happen first */ Dpl_init(); /* initialize PMU */ CycleCounterP_init(SOC_getSelfCpuClk()); PowerClock_init(); /* Now we can do pinmux */ Pinmux_init(); /* finally we initialize all peripheral drivers */ QSPI_init(); EDMA_init(); ADCBuf_init(); /* IPC Notify */ { IpcNotify_Params notifyParams; int32_t status; /* initialize parameters to default */ IpcNotify_Params_init(¬ifyParams); /* specify the core on which this API is called */ notifyParams.selfCoreId = CSL_CORE_ID_R5FSS0_0; /* list the cores that will do IPC Notify with this core * Make sure to NOT list 'self' core in the list below */ notifyParams.numCores = 1; notifyParams.coreIdList[0] = CSL_CORE_ID_C66SS0; /* initialize the IPC Notify module */ status = IpcNotify_init(¬ifyParams); DebugP_assert(status==SystemP_SUCCESS); { /* Mailbox driver MUST be initialized after IPC Notify init */ Mailbox_Params mailboxInitParams; Mailbox_Params_init(&mailboxInitParams); status = Mailbox_init(&mailboxInitParams); DebugP_assert(status == SystemP_SUCCESS); } } /* IPC RPMessage */ { RPMessage_Params rpmsgParams; int32_t status; /* initialize parameters to default */ RPMessage_Params_init(&rpmsgParams); /* VRING mapping from source core to destination core, '-1' means NO VRING, r5fss0_0 => {"r5fss0_0":-1,"c66ss0":0} c66ss0 => {"r5fss0_0":1,"c66ss0":-1} */ /* TX VRINGs */ rpmsgParams.vringTxBaseAddr[CSL_CORE_ID_C66SS0] = (uintptr_t)gRPMessageVringMem[0]; /* RX VRINGs */ rpmsgParams.vringRxBaseAddr[CSL_CORE_ID_C66SS0] = (uintptr_t)gRPMessageVringMem[1]; /* Other VRING properties */ rpmsgParams.vringSize = IPC_RPMESSAGE_VRING_SIZE; rpmsgParams.vringNumBuf = IPC_RPMESSAGE_NUM_VRING_BUF; rpmsgParams.vringMsgSize = IPC_RPMESSAGE_MAX_VRING_BUF_SIZE; /* initialize the IPC RP Message module */ status = RPMessage_init(&rpmsgParams); DebugP_assert(status==SystemP_SUCCESS); } Drivers_uartInit(); }
Thanks.