Hello,
I have an issue with the IPC resource manager. I have a test application that uses IPC to send/receive messages to/from MCU2_0 and MCU2_1. In vision apps, I have disabled IPC for all cores except MCU2_0, MCU2_1, and MPU1_0. For the QNX application, I only used cores MCU2_0 and MCU2_1. When calling the Ipc_mpSetConfig no error is returned, but in the System log, I can see the following.
# slog2info Jan 01 00:02:44.356 tiipc_mgr.36880 slog* 55 Ipc_mpSetConfig: supplied config doesn't match with existing config Jan 01 00:02:44.356 tiipc_mgr.36880 slog 55 mp_config invalid Jan 01 00:02:44.356 CtCdMiddlewareQM_PH00.319547 slog* 55 Ipc_mpSetConfig failed: check your config is matching with resgmr
I noticed that the return value in the user library is not setting an error code. Line 26 from the following code block
int32_t Ipc_mpSetConfig(uint32_t selfId, uint16_t numProc, uint32_t procArry[IPC_MAX_PROCS]) { int32_t retVal = IPC_SOK; int32_t fd = -1; uint16_t i = 0; TIIPC_CmdArgs cargs; fd = open(TIIPC_DEVICE_NAME, O_RDWR); if (fd >= 0) { cargs.args.mp_setconfig.selfId = selfId; cargs.args.mp_setconfig.numProc = numProc; for (i = 0; i < numProc; i++) { cargs.args.mp_setconfig.procArry[i] = procArry[i]; } retVal = devctl(fd, DCMD_TIIPC_MPSETCONFIG, &cargs, sizeof(TIIPC_CmdArgs), NULL); if (retVal != IPC_SOK) { ipc_slogerr("Ipc_mpSetConfig: devctl failed %d\n", retVal); } else if (cargs.status != IPC_SOK) { ipc_slogerr("Ipc_mpSetConfig failed: check your config is matching with resgmr\n"); } else { retVal = _Ipc_mpSetConfig(selfId, cargs.args.mp_setconfig.selfName, numProc, procArry, cargs.args.mp_setconfig.names); } close(fd); } else { retVal = IPC_EFAIL; } return retVal; }
Also, a question since I also took a look at some functions from the resource manager.
In the resource manager source, I have to modify the remoteProc list. Is there a different way to disable the other cores for mpSetConfig?
Regards,
Stefan