参考例程rtos-examples/ti-linux-ipc-examples/ex41_forwardmsg,目的是希望host ARM 发Message给DSP1,DSP2。
现在情况是,DSP1可以MessageQ_Create()成功,DSP2 一直MessageQ_Create()不行。
DSP1/DSP2 load-firmware没有报错,烦请帮忙检查一下,哪里写的不对,或者帮忙指出需要注意的事项,谢谢!
程序片段如下:
#define App_HostMsgQueName "HOST:MsgQ:01"
#define App_SlaveMsgQueName1 "SLAVE:MsgQ:01"
#define App_SlaveMsgQueName2 "SLAVE:MsgQ:02"
ARM:
Module.hostQue = MessageQ_create(App_HostMsgQueName, &msgqParams);
if (Module.hostQue == NULL) {
printf("App_create: Failed creating MessageQ\n");
status = -1;
goto leave;
}
printf("MessageQ_create\n");
/* open the remote message queue */
sprintf(msgqName, App_SlaveMsgQueName, MultiProc_getName(remoteProcId));
printf("queue name %s\n", msgqName);
do {
status = MessageQ_open(App_SlaveMsgQueName1, &Module.slaveQue);
printf("MessageQ_open %s, status=%d\n", App_SlaveMsgQueName1, status);
sleep(1);
} while (status == MessageQ_E_NOTFOUND);
if (status < 0) {
printf("App_create: Failed opening MessageQ\n");
goto leave;
}
/* open the remote message queue */
sprintf(msgqName_2, App_SlaveMsgQueName, MultiProc_getName(remoteProcId_2));
printf("queue name %s\n", msgqName_2);
do {
status = MessageQ_open(App_SlaveMsgQueName2, &Module.slaveQue_2);
printf("MessageQ_open %s, status=%d\n", App_SlaveMsgQueName2, status);
sleep(1);
} while (status == MessageQ_E_NOTFOUND);
if (status < 0) {
printf("App_create: Failed opening MessageQ\n");
goto leave;
}
DS:1:
Module.slaveQue = MessageQ_create(App_SlaveMsgQueName1, &msgqParams);
if (Module.slaveQue == NULL) {
status = -1;
goto leave;
}
DSP2:
Module.slaveQue = MessageQ_create(App_SlaveMsgQueName2, &msgqParams);
while (Module.slaveQue == NULL) {
Task_sleep(1);
Module.slaveQue = MessageQ_create(App_SlaveMsgQueName2, &msgqParams);
}
if (Module.slaveQue == NULL) {
status = -1;
goto leave;
}